Cu o nouă zi vin noi forțe și noi gânduri – Eleanor Roosevelt
Noi cu toții s-ar putea să ne fi confruntat cu această problemă de identificare a caracteristicilor conexe dintr-un set de date și de eliminare a caracteristicilor irelevante sau mai puțin importante, care nu contribuie prea mult la variabila noastră țintă, pentru a obține o precizie mai bună pentru modelul nostru.
Selecția caracteristicilor este unul dintre conceptele de bază în învățarea automată care are un impact enorm asupra performanței modelului dumneavoastră. Caracteristicile datelor pe care le folosiți pentru a vă antrena modelele de învățare automată au o influență uriașă asupra performanței pe care o puteți obține.
Caracteristicile irelevante sau parțial relevante pot avea un impact negativ asupra performanței modelului.
Selecția caracteristicilor și curățarea datelor ar trebui să fie primul și cel mai important pas al proiectării modelului dumneavoastră.
În această postare, veți descoperi tehnici de selecție a caracteristicilor pe care le puteți utiliza în învățarea automată.
Selecția caracteristicilor este procesul prin care selectați automat sau manual acele caracteristici care contribuie cel mai mult la variabila de predicție sau la rezultatul care vă interesează.
Având caracteristici irelevante în datele dvs. puteți scădea acuratețea modelelor și puteți face ca modelul dvs. să învețe pe baza unor caracteristici irelevante.
Cum se selectează caracteristicile și care sunt beneficiile efectuării selecției caracteristicilor înainte de a vă modela datele?
– Reduce supraadaptarea: Mai puține date redundante înseamnă mai puține oportunități de a lua decizii bazate pe zgomot.
– Îmbunătățește precizia: Mai puține date înșelătoare înseamnă că acuratețea modelării se îmbunătățește.
– Reduce timpul de instruire: Mai puține puncte de date reduc complexitatea algoritmului și algoritmii se instruiesc mai repede.
Vreau să vă împărtășesc experiența mea personală în acest sens.
Am pregătit un model prin selectarea tuturor caracteristicilor și am obținut o acuratețe de aproximativ 65%, ceea ce nu este destul de bun pentru un model predictiv, iar după ce am făcut o selecție a caracteristicilor și o inginerie a caracteristicilor fără a face nicio modificare logică în codul modelului meu, acuratețea mea a sărit la 81%, ceea ce este destul de impresionant
Acum știți de ce spun că selectarea caracteristicilor ar trebui să fie primul și cel mai important pas al proiectării modelului dvs.
Metode de selectare a caracteristicilor:
Voi împărtăși 3 tehnici de selectare a caracteristicilor care sunt ușor de utilizat și care oferă, de asemenea, rezultate bune.
1. Selecția univariată
2. Importanța caracteristicilor
3.Matricea de corelație cu Heatmap
Să analizăm aceste tehnici una câte una cu ajutorul unui exemplu
Puteți descărca setul de date de aici https://www.kaggle.com/iabhishekofficial/mobile-price-classification#train.csv
Descrierea variabilelor din fișierul de mai sus
battery_power: Energia totală pe care o poate stoca o baterie într-o singură dată, măsurată în mAh
blue: Dispune sau nu de Bluetooth
clock_speed: Viteza cu care microprocesorul execută instrucțiunile
dual_sim: Dispune sau nu de suport dual sim
fc: Camera frontală megapixeli
four_g: Are 4G sau nu
int_memory: Memorie internă în gigaocteți
m_dep: Adâncimea mobilului în cm
mobile_wt: Greutatea telefonului mobil
n_cores: Numărul de nuclee ale procesorului
pc: Megapixeli cameră foto principală
px_height
Înalțimea rezoluției pixelilor
px_width: Lățimea rezoluției pixelilor
ram: Memorie cu acces aleatoriu în MegaBytes
sc_h: Înălțimea ecranului telefonului mobil în cm
sc_w: Lățimea ecranului mobilului în cm
talk_time: cea mai lungă perioadă de timp pe care o va dura o singură încărcare a bateriei atunci când sunteți
three_g: Are 3G sau nu
touch_screen: Are ecran tactil sau nu
wifi: Are wifi sau nu
price_range: Are wifi sau nu
price_range: Aceasta este variabila țintă cu o valoare de 0 (cost scăzut), 1 (cost mediu), 2 (cost ridicat) și 3 (cost foarte ridicat).
1. Selecție univariată
Testele statistice pot fi utilizate pentru a selecta acele caracteristici care au cea mai puternică relație cu variabila de ieșire.
Biblioteca scikit-learn oferă clasa SelectKBest care poate fi utilizată cu o suită de teste statistice diferite pentru a selecta un număr specific de caracteristici.
Exemplul de mai jos utilizează testul statistic chi pătrat (chi²) pentru caracteristici non-negative pentru a selecta 10 dintre cele mai bune caracteristici din setul de date Mobile Price Range Prediction.
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