10 Sätt att förbättra dina maskinlärningsmodeller

10 Sätt att förbättra dina maskinlärningsmodeller - dummies

Nu när du är maskininlärningsalgoritmen har slutat lära dig från data som erhållits med Python eller R, funderar du på resultat från din testuppsättning och undrar om du kan förbättra dem eller verkligen har nått det bästa möjliga resultatet. Det finns ett antal kontroller och åtgärder som tyder på metoder du kan använda för att förbättra maskinlärningsprestanda och uppnå en mer generell prediktor som kan fungera lika bra med din testuppsättning eller nya data. Denna lista med tio tekniker ger dig möjligheter att förbättra resultatet som uppnåtts med hjälp av maskininlärningsalgoritmer.

Studiera inlärningskurvor

Som ett första steg för att förbättra dina resultat måste du bestämma problemen med din modell. Lärarkurvor kräver att du verifierar mot en testuppsättning eftersom du varierar antalet träningsföremål. Du märker omedelbart om du finner stor skillnad mellan dina in-sample och out-of-sample fel. En bred initial skillnad är ett tecken på uppskattningsvariation; Omvänt har fel som är både höga och liknande ett tecken på att du arbetar med en förutseende modell.

Python hjälper dig att enkelt rita inlärningskurvor med funktionen Scikit-learn (). Du kan också enkelt uppnå samma resultat med hjälp av R med anpassade funktioner, vilket beskrivs av Revolution analytics-bloggen.

Använda korrigering korrekt

Det är ett vanligt problem att se en stor skillnad mellan värderingsvärdena (CV) och resultatet som visas med en testuppsättning eller nya data. Att ha detta problem innebär att något gick fel med korsvalideringen. Utöver det faktum att CV inte är en bra prestanda förutsägelse innebär detta problem också att en vilseledande indikator har lett till att du modellerar problemet felaktigt och uppnår otillfredsställande resultat.

Korsvalidering ger dig tips när de steg du tar är korrekta. Det är viktigt, men inte kritiskt, att CV-uppskattningar exakt replikerar felmätningar utan mätprov. Det är emellertid avgörande att CV-beräkningar korrekt reflekterar förbättring eller försämring i testfasen på grund av dina modelleringsbeslut. Generellt finns det två anledningar att värderingsuppskattningarna kan variera från det verkliga felresultatet:

  • Snooping
  • Felaktig provtagning

Python erbjuder en stratifierad k-viks CV-provtagare. R kan stratifiera prover med hjälp av createFolds-metoden i caret-biblioteket när du anger y-parametern som en faktor.

Välja rätt fel eller mätvärde

Att försöka optimera ett felmått baserat på medianfel genom att använda en inlärningsalgoritm baserad på medelfelet ger dig inte det bästa resultatet om du inte hanterar optimeringsprocessen i ett sätt som fungerar till förmån för din valda mätvärde.När du löser ett problem med data- och maskininlärning måste du analysera problemet och bestämma den idealiska metriska för att optimera.

Exempel kan hjälpa till mycket. Du kan få många av dem från akademiska papper och från offentliga maskininlärningstävlingar som noggrant definierar specifika problem när det gäller data och fel / poängmått. Leta efter en tävling vars mål och data liknar din, och kontrollera sedan den begärda metriska.

Söka efter de bästa hyperparametrarna

De flesta algoritmer fungerar ganska bra ut ur rutan med hjälp av standardparameterns inställningar. Du kan dock alltid uppnå bättre resultat genom att testa olika hyperparametrar. Allt du behöver göra är att skapa en nätverkssökning bland möjliga värden som dina parametrar kan ta och utvärdera resultaten med rätt fel eller mätvärde. Sökningen tar tid, men det kan förbättra dina resultat.

När en sökning tar för lång tid att slutföra, kan du ofta uppnå samma resultat genom att arbeta på ett urval av dina ursprungliga data. Färre exempel som valts slumpmässigt kräver färre beräkningar, men de brukar anta att samma lösning. Ett annat knep som kan spara tid och ansträngning är att göra en randomiserad sökning, vilket begränsar antalet hyperparameterkombinationer för att testa.

Testa flera modeller

Testa flera modeller, som börjar med de grundläggande modellerna - de modeller som har mer bias än varians. Du bör alltid gynna enkla lösningar över komplexa. Du kan upptäcka att en enkel lösning fungerar bättre.

Representerar utförandet av olika modeller med samma diagram är användbart innan du väljer det bästa för att lösa ditt problem. Du kan placera modeller som används för att förutse konsumentbeteende, till exempel ett svar på ett kommersiellt erbjudande, i specialvinstscheman och lyftkartor. Dessa diagram visar hur din modell utför genom att partitionera resultaten i deciler eller mindre delar.

Eftersom du kanske bara är intresserad av de konsumenter som sannolikt kommer att svara på ditt erbjudande, kommer att beställa förutsägelser från de flesta till minst sannolika, betona hur bra dina modeller är för att förutsäga de mest lovande kunderna. Dessa Quora-svar hjälper dig att se hur vinst och lyftdiagram fungerar: Vad är ROC Curve? och vad är lyftkurvan? .

Testning av flera modeller och introspecting kan också ge förslag på vilka funktioner som ska omvandlas för funktionsskapande, eller vilken funktion som släpper ut när du gör funktionsval.

Medelmodeller

Maskininlärning innebär att man bygger många modeller och skapar många olika förutsägelser, alla med olika förväntade felprestanda. Det kan överraska dig att veta att du kan få ännu bättre resultat genom att jämföra modellerna tillsammans. Principen är ganska enkel: Beräkningsvariationen är slumpmässig, så genom att medelvärda många olika modeller kan du förstärka signalen och utesluta det brus som ofta kommer att avbryta sig.

Ibland kan resultaten från en algoritm som fungerar bra, blandas med resultaten från en enklare algoritm som inte fungerar lika bra, skapa bättre förutsägelser än att använda en enda algoritm.Underskatta inte bidrag som levereras från enklare modeller, till exempel linjära modeller, när du i genomsnitt ger resultat med utdata från mer sofistikerade algoritmer, till exempel gradientförstärkning.

Stapelmodeller

Av samma skäl att medelvärdet fungerar kan stapling också ge dig bättre prestanda. I stapling bygger du dina maskininlärningsmodeller i två steg. Inledningsvis förutspår denna teknik flera resultat med olika algoritmer, där alla lär sig av de funktioner som finns i dina data. Under den andra fasen, istället för att ge funktioner som en ny modell kommer att lära, ger du den modellen med förutsägelserna för de andra, tidigare utbildade modellerna.

Att använda ett tvåstegs-tillvägagångssätt är motiverat när man gissar komplexa målfunktioner. Du kan bara approximera dem genom att använda flera modeller tillsammans och sedan genom att kombinera resultatet av multiplikationen på ett smart sätt. Du kan använda en enkel logistisk regression eller ett komplext trädsemble som en andra stegs modell.

Netflix-tävlingen ger bevis och en detaljerad illustration om hur heterogena modeller kan staplas ihop för att bilda mer kraftfulla modeller. Genomförandet av denna lösning som en fungerande applikation kan dock vara ganska besvärlig.

Användning av funktionsteknik

Om du tror att bias fortfarande påverkar din modell, har du lite annat val än att skapa nya funktioner som förbättrar modellens prestanda. Varje ny funktion kan göra gissning av målsvaret enklare.

Automatisk funktionalisering är möjlig med hjälp av polynomial expansion eller stödvektormaskiner klassen av maskininlärningsalgoritmer. Supportvektormaskiner kan automatiskt leta efter bättre funktioner i högdimensionella funktionsutrymmen på ett sätt som är både beräkningsmässigt snabbt och minnesoptimalt.

Men inget kan verkligen ersätta din kompetens och förståelse för den metod som behövs för att lösa det dataproblem som algoritmen försöker lära sig. Du kan skapa funktioner utifrån dina kunskaper och idéer om hur sakerna fungerar i världen. Människor är fortfarande oslagbara, och maskiner kan inte enkelt ersätta dem.

Välja funktioner och exempel

Om uppskattningsvariationen är hög och din algoritm är beroende av många funktioner måste du beskära vissa funktioner för bättre resultat. I detta sammanhang är det lämpligt att minska antalet funktioner i din datamatris genom att välja de som har det högsta prediktiva värdet.

Vid arbete med linjära modeller är linjära stödvektormaskiner eller neurala nätverk, regularisering alltid ett alternativ. Både L1 och L2 kan minska inflytandet av redundanta variabler eller till och med ta bort dem från modellen. Stabilitetsvalet utnyttjar L1-förmågan att utesluta mindre användbara variabler. Tekniken återställer träningsdata för att bekräfta uteslutningen.

Du kan lära dig mer om stabilitetsval genom att titta på exemplet på webbplatsen Scikit-learn. Dessutom kan du öva med att använda RandomizedLogisticRegression och RandomizedLasso Scikit-learn-funktionerna i linear_model-modulen.

Letar du efter mer data

Efter att ha försökt alla tidigare förslag kan du fortfarande ha en stor variation av förutsägelser att hantera. I det här fallet är ditt enda alternativ att öka din träningsuppsättning. Prova att öka ditt prov genom att tillhandahålla nya data, vilket kan översättas till nya fall eller nya funktioner.

Om du vill lägga till fler fall, se bara om du har liknande data till hands. Om du vill lägga till nya funktioner, leta reda på en öppen källkälla, om möjligt, för att matcha dina data med dess poster. Ett annat bra sätt att få både nya fall och nya funktioner är att skrapa data från webben. Ofta finns data tillgängliga mellan olika källor eller genom ett programmeringsgränssnitt (API). Google APIs erbjuder till exempel många geografiska och företagsinformationskällor.