Med den nye dag kommer ny styrke og nye tanker – Eleanor Roosevelt

Vi alle kan have stået over for dette problem med at identificere de relaterede funktioner fra et datasæt og fjerne de irrelevante eller mindre vigtige funktioner, der ikke bidrager meget til vores målvariabel, for at opnå en bedre nøjagtighed for vores model.

Feature Selection er et af de centrale koncepter inden for maskinlæring, som i høj grad påvirker din models ydeevne. De datafunktioner, som du bruger til at træne dine maskinlæringsmodeller, har en enorm indflydelse på den ydelse, du kan opnå.

Irrelevante eller delvist relevante funktioner kan påvirke modellens ydeevne negativt.

Funktionsselektion og datarengøring bør være det første og vigtigste trin i din modeludformning.

I dette indlæg vil du opdage teknikker til funktionsselektion, som du kan bruge i maskinlæring.

Feature Selection er den proces, hvor du automatisk eller manuelt vælger de funktioner, der bidrager mest til din forudsigelsesvariabel eller output, som du er interesseret i.

Har du irrelevante funktioner i dine data, kan det mindske modellernes nøjagtighed og få din model til at lære baseret på irrelevante funktioner.

Hvordan vælges funktioner, og hvad er fordelene ved at udføre funktionsvalg før modellering af dine data?

– Reducerer Overfitting: Mindre redundante data betyder mindre mulighed for at træffe beslutninger baseret på støj.

– Forbedrer præcisionen:

– Reducerer træningstiden: Færre datapunkter reducerer algoritmens kompleksitet, og algoritmer træner hurtigere.

Jeg vil gerne dele min personlige erfaring med dette.

Jeg forberedte en model ved at vælge alle funktioner, og jeg fik en nøjagtighed på omkring 65%, hvilket ikke er ret godt for en prædiktiv model, og efter at have foretaget nogle funktionsvalg og funktionsteknik uden at foretage nogen logiske ændringer i min modelkode sprang min nøjagtighed til 81%, hvilket er ret imponerende

Nu ved du, hvorfor jeg siger, at funktionsvalg bør være det første og vigtigste trin i dit modeldesign.

Feature Selection Metoder:

Jeg vil dele 3 Feature udvælgelsesteknikker, der er nemme at bruge og også giver gode resultater.

1. Univariate Selection

2. Feature Importance

3.Korrelationsmatrix med heatmap

Lad os se på disse teknikker en efter en med et eksempel

Du kan downloade datasættet her https://www.kaggle.com/iabhishekofficial/mobile-price-classification#train.csv

Beskrivelse af variabler i ovenstående fil

battery_power: Samlet energi, som et batteri kan lagre på én gang målt i mAh

blue: Har Bluetooth eller ej

clock_speed: Den hastighed, hvormed mikroprocessoren udfører instruktioner

dual_sim: Har dual sim-understøttelse eller ej

fc: Frontkamera megapixel

four_g: Har 4G eller ej

int_memory: Har 4G eller ej

int_memory: Intern hukommelse i gigabyte

m_dep: Mobilens dybde i cm

mobile_wt: Vægt af mobiltelefonen

n_cores: Antal kerner i processoren

pc: Primært kamera megapixel

px_height

Pixelopløsningshøjde

px_width: Pixelopløsningsbredde

ram: Random Access Memory i megabyte

sc_h: Random Access Memory i megabyte

sc_h: Skærmhøjde på mobil i cm

sc_w: Screen Width of mobile in cm

talk_time: Den længste tid, som en enkelt batteriopladning varer, når du er

three_g: Har 3G eller ej

touch_screen: Har touchscreen eller ej

wifi: Har wifi eller ej

price_range: Har wifi eller ej

prisklasse: Dette er målvariablen med en værdi på 0 (lav pris), 1 (middel pris), 2 (høj pris) og 3 (meget høj pris).

1. Univariate udvælgelse

Statistiske test kan bruges til at vælge de funktioner, der har den stærkeste sammenhæng med udgangsvariablen.

Scikit-learn-biblioteket indeholder klassen SelectKBest, der kan bruges sammen med en række forskellige statistiske test til at vælge et bestemt antal funktioner.

Eksemplet nedenfor bruger den statistiske chi²-test (chi²) for ikke-negative funktioner til at vælge 10 af de bedste funktioner fra datasættet til forudsigelse af prisintervaller for 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

Top 10 bedste funktioner ved hjælp af SelectKBest class

Funktionens betydning

Du kan få funktionens betydning for hver funktion i dit datasæt ved at bruge funktionens betydningsevne i modellen.

Feature importance giver dig en score for hver funktion i dine data, og jo højere scoren er, jo vigtigere eller mere relevant er funktionen for din udgangsvariabel.

Feature importance er en indbygget klasse, der leveres med Tree Based Classifiers, vi vil bruge Extra Tree Classifier til at udtrække de 10 bedste funktioner for datasættet.

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 vigtigste funktioner i data

3.Korrelationsmatrix med varmekort

Korrelation angiver, hvordan funktionerne er relateret til hinanden eller målvariablen.

Korrelationen kan være positiv (en stigning i en værdi af en funktion øger værdien af målvariablen) eller negativ (en stigning i en værdi af en funktion mindsker værdien af målvariablen)

Heatmap gør det nemt at identificere, hvilke funktioner der er mest relateret til målvariablen, vi vil plotte heatmap af korrelerede funktioner ved hjælp af 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")

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.