Az új nappal új erő és új gondolatok jönnek – Eleanor Roosevelt

We mindannyian szembesültünk már azzal a problémával, hogy egy adathalmazból azonosítani kell a kapcsolódó jellemzőket, és el kell távolítani a lényegtelen vagy kevésbé fontos jellemzőket, amelyek nem járulnak hozzá nagymértékben a célváltozónkhoz annak érdekében, hogy a modellünk nagyobb pontosságot érjen el.

A jellemzők kiválasztása a gépi tanulás egyik alapvető fogalma, amely óriási hatással van a modell teljesítményére. Az adatjellemzők, amelyeket a gépi tanulási modellek képzéséhez használunk, nagyban befolyásolják az elérhető teljesítményt.

A nem releváns vagy részben releváns jellemzők negatívan befolyásolhatják a modell teljesítményét.

A jellemzők kiválasztása és az adattisztítás legyen a modelltervezés első és legfontosabb lépése.

Ebben a bejegyzésben olyan jellemzőválasztási technikákat fog felfedezni, amelyeket a gépi tanulásban használhat.

A jellemzők kiválasztása az a folyamat, amelynek során automatikusan vagy manuálisan kiválasztja azokat a jellemzőket, amelyek a leginkább hozzájárulnak az Önt érdeklő előrejelzési változóhoz vagy kimenethez.

Az adatokban lévő irreleváns jellemzők csökkenthetik a modellek pontosságát, és a modellje irreleváns jellemzők alapján tanulhat.

Hogyan válassza ki a jellemzőket, és milyen előnyei vannak a jellemzők kiválasztásának az adatok modellezése előtt?

– Csökkenti a túlillesztést: A kevesebb redundáns adat kevesebb lehetőséget jelent arra, hogy a zaj alapján hozzunk döntéseket.

– Javítja a pontosságot: Kevesebb félrevezető adat azt jelenti, hogy javul a modellezés pontossága.

– Csökkenti a képzési időt: Kevesebb adatpont csökkenti az algoritmus bonyolultságát és az algoritmusok gyorsabban képződnek.

Meg szeretném osztani a személyes tapasztalataimat ezzel kapcsolatban.

Elkészítettem egy modellt az összes jellemző kiválasztásával, és 65% körüli pontosságot kaptam, ami nem elég jó egy prediktív modell esetében, és miután elvégeztem néhány jellemző kiválasztását és jellemzőtervezést anélkül, hogy bármilyen logikai változtatást végeztem volna a modellkódomban, a pontosságom 81%-ra ugrott, ami elég lenyűgöző

Most már tudja, miért mondom, hogy a jellemző kiválasztásának kell lennie a modelltervezés első és legfontosabb lépésének.

Feature Selection Methods:

Megosztok 3 Feature selection technikát, amelyek könnyen használhatók és jó eredményeket is adnak.

1. Univariate Selection

2. Feature Importance

3. Feature Importance

.Correlation Matrix with Heatmap

Nézzük meg ezeket a technikákat egyenként egy példával

Az adatállományt innen töltheti le https://www.kaggle.com/iabhishekofficial/mobile-price-classification#train.csv

A változók leírása a fenti fájlban

battery_power: Az akkumulátor által egy időben tárolható teljes energia mAh-ban mérve

blue: Van Bluetooth vagy nincs

clock_speed: A mikroprocesszor utasításainak végrehajtási sebessége

dual_sim: Van dual sim támogatás vagy nincs

fc: Elülső kamera megapixel

four_g:

_memory: Belső memória gigabájtban

m_dep: Mobil mélység cm-ben

mobile_wt: A mobiltelefon súlya

n_cores: A processzor magjainak száma

pc: Elsődleges kamera megapixel

px_height

Pixelfelbontás magassága

px_width: Pixelfelbontás szélessége

ram: Random Access Memory (Véletlen hozzáférésű memória) megabájtban

sc_h: A mobil képernyőmagassága cm-ben

sc_w: A mobil képernyő szélessége cm-ben

talk_time: a leghosszabb idő, amit egy akkumulátortöltés tart, ha Ön

three_g: 3G-vel rendelkezik vagy sem

touch_screen: Van érintőképernyője vagy nincs

wifi: Van wifi vagy nincs

price_range: Ez a célváltozó, amelynek értéke 0(alacsony költség), 1(közepes költség), 2(magas költség) és 3(nagyon magas költség).

1. Egyváltozós kiválasztás

Statisztikai tesztek segítségével kiválaszthatók azok a jellemzők, amelyek a legerősebb kapcsolatban állnak a kimeneti változóval.

A scikit-learn könyvtár biztosítja a SelectKBest osztályt, amely különböző statisztikai tesztek sorával használható a jellemzők meghatározott számú kiválasztására.

Az alábbi példa a nem negatív jellemzők chi-négyzet (chi²) statisztikai tesztjét használja a 10 legjobb jellemző kiválasztására a Mobile Price Range Prediction Datasetből.

import pandas as pd
import numpy as np
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2data = pd.read_csv("D://Blogs//train.csv")
X = data.iloc #independent columns
y = data.iloc #target column i.e price range#apply SelectKBest class to extract top 10 best features
bestfeatures = SelectKBest(score_func=chi2, k=10)
fit = bestfeatures.fit(X,y)
dfscores = pd.DataFrame(fit.scores_)
dfcolumns = pd.DataFrame(X.columns)
#concat two dataframes for better visualization
featureScores = pd.concat(,axis=1)
featureScores.columns = #naming the dataframe columns
print(featureScores.nlargest(10,'Score')) #print 10 best features

Top 10 legjobb jellemző a SelectKBest osztály használatával

Feature Importance

A modell feature importance tulajdonságának használatával megkaphatja az adatállomány egyes jellemzőinek fontosságát.

A feature fontossága egy pontszámot ad az adatai minden egyes feature-jének, minél magasabb a pontszám, annál fontosabb vagy relevánsabb a feature a kimeneti változó felé.

A feature importance egy beépített osztály, amely a fa alapú osztályozókhoz tartozik, mi az Extra Tree osztályozót fogjuk használni az adatkészlet 10 legjobb jellemzőjének kinyerésére.

import pandas as pd
import numpy as np
data = pd.read_csv("D://Blogs//train.csv")
X = data.iloc #independent columns
y = data.iloc #target column i.e price range
from sklearn.ensemble import ExtraTreesClassifier
import matplotlib.pyplot as plt
model = ExtraTreesClassifier()
model.fit(X,y)
print(model.feature_importances_) #use inbuilt class feature_importances of tree based classifiers
#plot graph of feature importances for better visualization
feat_importances = pd.Series(model.feature_importances_, index=X.columns)
feat_importances.nlargest(10).plot(kind='barh')
plt.show()

top 10 legfontosabb jellemző az adatokban

3.Correlation Matrix with Heatmap

A korreláció azt mondja ki, hogy a jellemzők hogyan kapcsolódnak egymáshoz vagy a célváltozóhoz.

A korreláció lehet pozitív (a jellemző egy értékének növekedése növeli a célváltozó értékét) vagy negatív (a jellemző egy értékének növekedése csökkenti a célváltozó értékét)

A hőtérkép segítségével könnyen azonosítható, hogy mely jellemzők kapcsolódnak leginkább a célváltozóhoz, a korrelált jellemzők hőtérképét a seaborn könyvtár segítségével fogjuk ábrázolni.

import pandas as pd
import numpy as np
import seaborn as snsdata = pd.read_csv("D://Blogs//train.csv")
X = data.iloc #independent columns
y = data.iloc #target column i.e price range
#get correlations of each features in dataset
corrmat = data.corr()
top_corr_features = corrmat.index
plt.figure(figsize=(20,20))
#plot heat map
g=sns.heatmap(data.corr(),annot=True,cmap="RdYlGn")

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.