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
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()
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")