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

Cele mai bune 10 caracteristici folosind clasa SelectKBest

Importanța caracteristicilor

Puteți obține importanța caracteristicilor pentru fiecare caracteristică din setul de date folosind proprietatea de importanță a caracteristicilor din model.

Importanța caracteristicilor vă oferă un scor pentru fiecare caracteristică a datelor dumneavoastră, cu cât scorul este mai mare, cu atât caracteristica este mai importantă sau relevantă pentru variabila de ieșire.

Importanța caracteristicilor este o clasă încorporată care vine cu clasificatoarele bazate pe arbore, vom utiliza clasificatorul Extra Tree pentru a extrage primele 10 caracteristici pentru setul de date.

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

Cele mai importante 10 caracteristici din date

3.Matrice de corelație cu Heatmap

Corelația indică modul în care caracteristicile sunt legate una de cealaltă sau de variabila țintă.

Corelația poate fi pozitivă (creșterea unei valori a unei caracteristici crește valoarea variabilei țintă) sau negativă (creșterea unei valori a unei caracteristici scade valoarea variabilei țintă)

Heatmap facilitează identificarea caracteristicilor care sunt cele mai legate de variabila țintă, vom trasa heatmap a caracteristicilor corelate folosind biblioteca seaborn.

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

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.