Innehållsförteckning:
- Val av univariata åtgärder
- När du använder ett univariat urval, måste du själv bestämma hur många variabler som ska hållas: Greedy selection minskar automatiskt antalet funktioner som ingår i en inlärningsmodell utifrån deras effektiva bidrag till prestanda mätt av felmåttet.
Video: Javaprogrammering - Föreläsning 01 - Kursintroduktion 2024
Att välja rätt variabler i Python kan förbättra inlärningsprocessen i datavetenskap genom att minska mängden brus information) som kan påverka elevens uppskattningar. Variabelt urval kan därför effektivt minska variationen av förutsägelser. För att bara involvera de användbara variablerna i träning och lämna de överflödiga, kan du använda dessa tekniker:
-
Univariate approach: Välj de variabler som är mest relaterade till målresultatet.
-
Grymt eller bakåtriktat tillvägagångssätt: Håll bara de variabler som du kan ta bort från inlärningsprocessen utan att skada dess prestanda.
Val av univariata åtgärder
Om du väljer att välja en variabel med dess associeringsnivå med sitt mål, ger klassen SelectPercentile ett automatiskt förfarande för att bara behålla en viss procentandel av de bästa associerade funktionerna. De tillgängliga mätvärdena för associering är
-
f_regression: Används endast för numeriska mål och baserad på linjär regressionsprestanda.
-
f_classif: Används endast för kategoriska mål och baserat på analys av varians (ANOVA) statistiskt test.
-
chi2: Utför chi-kvadratisk statistik för kategoriska mål, vilket är mindre förnuftigt för det olinjära förhållandet mellan prediktiv variabel och dess mål.
Vid bedömning av kandidater för ett klassificeringsproblem tenderar f_classif och chi2 att ge samma uppsättning toppvariabler. Det är fortfarande en bra praxis att testa valen från båda föreningens mätvärden.
Förutom att tillämpa ett direkt urval av de högsta percentilföreningarna, kan SelectPercentile också rangordna de bästa variablerna för att göra det lättare att bestämma vid vilken procentil att utesluta en funktion från att delta i inlärningsprocessen. Klassen SelectKBest är analog i sin funktionalitet, men den väljer de högsta k-variablerna, där k är ett tal, inte en percentil.
från sklearn. feature_selection import VäljPercentile från sklearn. feature_selection import f_regression Selector_f = SelectPercentile (f_regression, percentile = 25) Selector_f. fit (X, y) för n, s i zip (boston. feature_names, Selector_f. scores_): skriv ut 'F-poäng:% 3. 2ft för funktion% s '% (s, n) F-poäng: 88. 15 för funktionen CRIM F-poäng: 75. 26 för funktion ZN F-poäng: 153. 95 för funktionen INDUS F-poäng: 15. 97 för funktionen har CHAS F-poäng: 112. 59 för funktionen NOX F-poäng: 471. 85 för funktion RM F-poäng: 83.48 för funktion AGE F-poäng: 33. 58 för funktion DIS F-poäng: 85. 91 för funktion RAD F-poäng: 141. 76 för funktion TAX F-poäng: 175. 11 för funktion PTRATIO F-poäng: 63. 05 för funktionen B F-poäng: 601. 62 för funktionen LSTAT
Med hjälp av nivån för associeringsutgången kan du välja de viktigaste variablerna för din maskinlärningsmodell, men du bör se upp för dessa möjliga problem: > Vissa variabler med hög association kan också vara mycket korrelerade, introducera duplicerad information, vilket fungerar som buller i lärandeprocessen.
-
Vissa variabler kan straffas, särskilt binära (variabler som indikerar status eller karaktäristik med värdet 1 när det är närvarande, 0 när det inte är). Ta till exempel märke att utgången visar den binära variabeln CHAS som den minst associerade med målvariabeln (men du vet från tidigare exempel att det är inflytelserikt från korsvalideringsfasen).
-
Den univariata urvalsprocessen kan ge dig en verklig fördel när du har ett stort antal variabler att välja från och alla andra metoder blir beräkningsmässigt oföränderliga. Det bästa sättet är att minska värdet på SelectPercentile med hälften eller mer av de tillgängliga variablerna, minska antalet variabler till ett hanterbart nummer och följaktligen tillåta användningen av en mer sofistikerad och mer exakt metod som en girig sökning.
Använda en girig sökning
När du använder ett univariat urval, måste du själv bestämma hur många variabler som ska hållas: Greedy selection minskar automatiskt antalet funktioner som ingår i en inlärningsmodell utifrån deras effektiva bidrag till prestanda mätt av felmåttet.
RFECV-klassen, som passar data, kan ge dig information om antalet användbara funktioner, peka ut dem och automatiskt omvandla X-data, genom att metoden omvandlas till en reducerad variabel uppsättning, som visas i Följande exempel:
från sklearn. feature_selection import RFECV selector = RFECV (estimator = regression, cv = 10, scoring = "mean_squared_error") väljare. passar (X, Y) print ("Optimal antal funktioner:% d"% väljare. n_features_) Optimalt antal funktioner: 6
Det är möjligt att få ett index till den optimala variabeln som ställs genom att anropa attributet support_ från RFECV klass när du passar den.
skriv ut boston. feature_names [väljaren. support_] ['CHAS' NOX "RM" DIS "PTRATIO" LSTAT "]
Lägg märke till att CHAS nu ingår bland de mest prediktiva funktionerna, vilket står i kontrast till resultatet från den univariata sökningen. RFECV-metoden kan detektera om en variabel är viktigt, oavsett om det är binärt, kategoriskt eller numeriskt, eftersom det direkt utvärderar rollen som funktionen spelar i prediktionen.
RFECV-metoden är säkerligen effektivare jämfört med den -univariära metoden, eftersom den betraktar högt korrelerade funktioner och är inställd på att optimera utvärderingsåtgärden (som vanligen inte är Chi-kvadrat eller F-poäng). Det är en girig process, det är beräknat för beräkningar och kan bara approximera den bästa uppsättningen av prediktorer.
Eftersom RFECV lär sig den bästa uppsättningen variabler från data, kan valet överföras, vilket är vad som händer med alla andra maskininlärningsalgoritmer. Att försöka RFECV på olika prov av träningsdata kan bekräfta de bästa variablerna som ska användas.