Med en ny dag kommer nya krafter och nya tankar – Eleanor Roosevelt
Vi alla kan ha ställts inför problemet att identifiera de relaterade funktionerna från en uppsättning data och ta bort de irrelevanta eller mindre viktiga funktionerna som inte bidrar så mycket till vår målvariabel för att uppnå bättre noggrannhet för vår modell.
Feature Selection är ett av de centrala begreppen inom maskininlärning som har en enorm inverkan på modellens prestanda. De datafunktioner som du använder för att träna dina modeller för maskininlärning har ett stort inflytande på den prestanda du kan uppnå.
Irrelevanta eller delvis relevanta funktioner kan ha en negativ inverkan på modellens prestanda.
Funktioner som väljs ut och rensning av data bör vara det första och viktigaste steget i utformningen av din modell.
I det här inlägget kommer du att upptäcka tekniker för funktionalitetsval som du kan använda inom maskininlärning.
Feature Selection är en process där du automatiskt eller manuellt väljer de funktioner som bidrar mest till din prediktionsvariabel eller output som du är intresserad av.
Att ha irrelevanta funktioner i dina data kan minska modellernas noggrannhet och göra så att din modell lär sig baserat på irrelevanta funktioner.
Hur man väljer funktioner och vad är Fördelarna med att göra ett funktionsurval innan du modellerar dina data?
– Reducerar Overfitting: Mindre redundanta data innebär mindre möjligheter att fatta beslut baserade på brus.
– Förbättrar noggrannheten:
– Minskar träningstiden: Färre datapunkter minskar algoritmens komplexitet och algoritmerna tränar snabbare.
Jag vill dela med mig av min personliga erfarenhet av detta.
Jag förberedde en modell genom att välja alla funktioner och jag fick en noggrannhet på cirka 65% vilket inte är ganska bra för en prediktiv modell och efter att ha gjort några funktionsval och funktionsutveckling utan att göra några logiska ändringar i min modellkod hoppade min noggrannhet till 81% vilket är ganska imponerande
Nu vet du varför jag säger att funktionsvalet bör vara det första och viktigaste steget i din modellkonstruktion.
Metoder för urval av funktioner:
Jag kommer att dela med mig av tre tekniker för urval av funktioner som är enkla att använda och som också ger bra resultat.
1. Univariate Selection
2. Feature Importance
3.Korrelationsmatris med värmekarta
Låt oss titta på dessa tekniker en efter en med ett exempel
Du kan ladda ner datasetet härifrån https://www.kaggle.com/iabhishekofficial/mobile-price-classification#train.csv
Beskrivning av variablerna i ovanstående fil
battery_power: Total energi som ett batteri kan lagra på en gång mätt i mAh
blue: Har Bluetooth eller inte
clock_speed: Hastigheten med vilken mikroprocessorn utför instruktioner
dual_sim: Har stöd för dubbla sim eller inte
fc: Frontkamera megapixel
four_g: Har 4G eller inte
int_memory: Internt minne i gigabyte
m_dep: Mobilens djup i cm
mobile_wt: Vikt för mobiltelefonen
n_cores: Antal processorkärnor
pc: Primary Camera megapixels
px_height
Pixel Resolution Height
px_width: Pixel Resolution Width
ram: Random Access Memory i megabyte
sc_h: Skärmhöjd för mobilen i cm
sc_w: Skärmhöjd för mobilen i cm
sc_w: Skärmbredd på mobilen i cm
talk_time: Den längsta tiden som en enda batteriladdning räcker när du är
three_g: Har 3G eller inte
touch_screen: Har pekskärm eller inte
wifi: Har wifi eller inte
prisintervall: Detta är målvariabeln med värdet 0 (låg kostnad), 1 (medelhög kostnad), 2 (hög kostnad) och 3 (mycket hög kostnad).
1. Univariat urval
Statistiska tester kan användas för att välja de funktioner som har det starkaste sambandet med utgångsvariabeln.
Biblioteket scikit-learn tillhandahåller klassen SelectKBest som kan användas tillsammans med en rad olika statistiska tester för att välja ut ett visst antal funktioner.
Exemplet nedan använder det statistiska testet chi² (chi²) för icke-negativa funktioner för att välja ut 10 av de bästa funktionerna från datasetetet för förutsägelse av prisintervall för mobiltelefoner.
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
Funktionens betydelse
Du kan få fram funktionens betydelse för varje funktion i din datauppsättning med hjälp av egenskapen funktionens betydelse i modellen.
Feature importance ger dig en poäng för varje funktion i dina data, ju högre poäng desto viktigare eller mer relevant är funktionen för din utfallsvariabel.
Feature importance är en inbyggd klass som ingår i trädbaserade klassificerare, vi kommer att använda Extra Tree Classifier för att extrahera de tio bästa funktionerna för datasetet.
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.Korrelationsmatris med värmekarta
Korrelation anger hur funktionerna är relaterade till varandra eller målvariabeln.
Korrelationen kan vara positiv (en ökning av ett värde på en funktion ökar värdet på målvariabeln) eller negativ (en ökning av ett värde på en funktion minskar värdet på målvariabeln)
Heatmap gör det enkelt att identifiera vilka funktioner som är mest relaterade till målvariabeln, vi kommer att plotta heatmaps av korrelerade funktioner med hjälp av seaborn-biblioteket.
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")