Förhindra överanpassning och obalanserade data med automatiserad ML
Överanpassning och obalanserade data är vanliga fallgropar när du skapar maskininlärningsmodeller. Som standard innehåller funktionen Automatiserad ML i Azure Mašinsko učenje diagram och mått som hjälper dig att identifiera dessa risker. Den här artikeln beskriver hur du kan implementera metodtips i automatiserad ML för att undvika vanliga problem.
Identifiera överanpassning
Överanpassning i maskininlärning sker när en modell passar träningsdata för bra. Därför kan modellen inte göra korrekta förutsägelser på osynliga testdata. Modellen memorerat specifika mönster och brus i träningsdata, och det är inte tillräckligt flexibelt för att göra förutsägelser på verkliga data.
Tänk på följande tränade modeller och deras motsvarande tränings- och testnoggrannhet:
Modell | Träningsnoggrannhet | Testnoggrannhet |
---|---|---|
A | 99,9 % | 95 % |
F | 87% | 87% |
C | 99,9 % | 45 % |
Modell A: Testet för den här modellen ger något mindre noggrannhet än modellträningen. Det finns en vanlig missuppfattning om att modellen är överanpassad om testnoggrannheten på osedda data är lägre än träningsnoggrannheten. Testnoggrannhet bör dock alltid vara mindre än träningsnoggrannhet. Skillnaden mellan överanpassning och lämpligt passande data handlar om att mäta hur mycket mindre noggrannheten är.
Modell A jämfört med modell B: Modell A är en bättre modell eftersom den har högre testnoggrannhet. Även om testnoggrannheten är något lägre vid 95 %, är det inte en betydande skillnad som tyder på att överanpassning finns. Modell B är inte att föredra eftersom tränings- och testnoggrannheterna är liknande.
Modell C: Den här modellen representerar ett tydligt fall av överanpassning. Träningsnoggrannheten är hög och testnoggrannheten är låg. Den här skillnaden är subjektiv, men kommer från kunskap om ditt problem och dina data och vad som är de godtagbara felstorlekarna.
Förhindra överanpassning
I de mest avskyvärda fallen förutsätter en överanpassad modell att de kombinationer av funktionsvärden som visas under träningen alltid resulterar i exakt samma utdata för målet. För att undvika överanpassning av dina data rekommenderar vi att du följer metodtipsen för maskininlärning. Det finns flera metoder som du kan konfigurera i modellimplementeringen. Automatiserad ML innehåller också andra alternativ som standard för att förhindra överanpassning.
I följande tabell sammanfattas vanliga metodtips:
Bästa metod | Implementering | Automatisk ML |
---|---|---|
Använd mer träningsdata och eliminera statistisk bias | X | |
Förhindra målläckage | X | |
Införliva färre funktioner | X | |
Stöd för regularisering och optimering av hyperparametrar | X | |
Tillämpa begränsningar för modellkomplexitet | X | |
Använda korsvalidering | X |
Tillämpa metodtips för att förhindra överanpassning
I följande avsnitt beskrivs metodtips som du kan använda i implementeringen av maskininlärningsmodellen för att förhindra överanpassning.
Använda mer data
Att använda mer data är det enklaste och bästa sättet att förhindra överanpassning, och den här metoden ökar vanligtvis noggrannheten. När du använder mer data blir det svårare för modellen att memorera exakta mönster. Modellen tvingas nå lösningar som är mer flexibla för att hantera fler villkor. Det är också viktigt att känna igen statistiska fördomar för att säkerställa att dina träningsdata inte innehåller isolerade mönster som inte finns i realtidsförutsägelsedata. Det här scenariot kan vara svårt att lösa eftersom det kan finnas överanpassning jämfört med realtidstestdata.
Förhindra målläckage
Målläckage är ett liknande problem. Du kanske inte ser överanpassning mellan tränings- och testuppsättningarna, men läckageproblemet visas vid förutsägelsetiden. Målläckage uppstår när din modell "fuskar" under träningen genom att komma åt data som den normalt inte bör ha vid förutsägelsetiden. Ett exempel är att modellen på måndag ska förutsäga vad råvarupriset är för fredag. Om dina funktioner oavsiktligt inkluderar data från torsdagar har modellen åtkomst till data som inte är tillgängliga vid förutsägelsetid eftersom den inte kan se in i framtiden. Målläckage är ett enkelt misstag att missa. Det är ofta synligt där du har onormalt hög noggrannhet för ditt problem. Om du försöker förutsäga aktiekursen och tränat en modell med 95 % noggrannhet finns det sannolikt målläckage någonstans i dina funktioner.
Införliva färre funktioner
Att ta bort funktioner kan också hjälpa till med överanpassning genom att förhindra att modellen har för många fält att använda för att memorera specifika mönster, vilket gör att den blir mer flexibel. Det kan vara svårt att mäta kvantitativt. Om du kan ta bort funktioner och behålla samma noggrannhet kan din modell vara mer flexibel och minska risken för överanpassning.
Granska automatiserade ML-funktioner för att förhindra överanpassning
I följande avsnitt beskrivs metodtips som tillhandahålls som standard i Automatiserad ML för att förhindra överanpassning.
Stöd för regularisering och justering av hyperparametrar
Regularisering är processen att minimera en kostnadsfunktion för att straffa komplexa och överanpassade modeller. Det finns olika typer av regulariseringsfunktioner. I allmänhet straffar alla funktioner modellens koefficientstorlek, varians och komplexitet. Automatiserad ML använder L1 (Lasso), L2 (Ridge) och ElasticNet (L1 och L2 samtidigt) i olika kombinationer med olika inställningar för modellhyperparameter som styr överanpassning. Automatiserad ML varierar hur mycket en modell regleras och väljer det bästa resultatet.
Tillämpa begränsningar för modellkomplexitet
Automatiserad ML implementerar också explicita begränsningar för modellkomplexitet för att förhindra överanpassning. I de flesta fall är den här implementeringen specifikt för beslutsträds- eller skogsalgoritmer. Maxdjupet för enskilda träd är begränsat och det totala antalet träd som används i skogs- eller ensembletekniker är begränsat.
Använda korsvalidering
Korsvalidering (CV) är processen att ta många delmängder av dina fullständiga träningsdata och träna en modell på varje delmängd. Tanken är att en modell kan få "tur" och ha stor noggrannhet med en delmängd, men med hjälp av många delmängder kan modellen inte uppnå hög noggrannhet varje gång. När du utför CV anger du en valideringsdatauppsättning för holdout, anger dina CV-vikningar (antal delmängder) och Automatiserad ML tränar din modell och justerar hyperparametrar för att minimera felet på valideringsuppsättningen. En CV-vikning kan vara överanpassad, men genom att använda många av dem minskar processen sannolikheten för att din slutliga modell är överanpassad. Kompromissen är att CV resulterar i längre utbildningstider och högre kostnad, eftersom du tränar en modell en gång för varje n i CV-delmängderna.
Kommentar
Korsvalidering är inte aktiverat som standard. Den här funktionen måste konfigureras i inställningarna för automatiserad maskininlärning. Men när korsvalidering har konfigurerats och en verifieringsdatauppsättning har angetts automatiseras processen åt dig.
Identifiera modeller med obalanserade data
Obalanserade data finns ofta i data för klassificeringsscenarier för maskininlärning och refererar till data som innehåller ett oproportionerligt förhållande mellan observationer i varje klass. Den här obalansen kan leda till en felaktigt upplevd positiv effekt av en modells noggrannhet, eftersom indata har bias mot en klass, vilket resulterar i att den tränade modellen efterliknar den biasen.
Dessutom genererar automatiserade ML-jobb följande diagram automatiskt. De här diagrammen hjälper dig att förstå korrekthet i din modells klassificeringar och identifiera modeller som kan påverkas av obalanserade data.
Diagram | beskrivning |
---|---|
Förvirringsmatris | Utvärderar korrekt klassificerade etiketter mot de faktiska etiketterna för data. |
Precisionsåterkallning | Utvärderar förhållandet mellan korrekta etiketter och förhållandet mellan hittade etikettinstanser av data. |
ROC-kurvor | Utvärderar förhållandet mellan korrekta etiketter och förhållandet mellan falska och positiva etiketter. |
Hantera obalanserade data
Som en del av målet att förenkla arbetsflödet för maskininlärning erbjuder automatiserad ML inbyggda funktioner för att hantera obalanserade data:
Automatiserad ML skapar en kolumn med vikter som indata som gör att rader i data viktas upp eller ned, vilket kan användas för att göra en klass mer eller mindre "viktig".
Algoritmerna som används av automatiserad ML identifierar obalans när antalet exempel i minoritetsklassen är lika med eller mindre än 20 % av antalet exempel i majoritetsklassen. Minoritetsklassen refererar till den med minst urval och majoritetsklassen refererar till den med flest exempel. Senare kör automatiserad maskininlärning ett experiment med undersamplade data för att kontrollera om användning av klassvikter kan åtgärda det här problemet och förbättra prestandan. Om den bedömer en bättre prestanda genom det här experimentet tillämpar den botemedlet.
Använd ett prestandamått som hanterar obalanserade data bättre. Till exempel är AUC_weighted ett primärt mått som beräknar bidraget för varje klass baserat på det relativa antalet exempel som representerar den klassen. Det här måttet är mer robust mot obalans.
Följande tekniker är andra alternativ för att hantera obalanserade data utanför automatiserad ML:
Sampla om till och med klassobalansen. Du kan ta ett exempel på de mindre klasserna eller nedexempel på de större klasserna. Dessa metoder kräver expertis för att bearbeta och analysera.
Granska prestandamått för obalanserade data. Till exempel är F1-poängen det harmoniska medelvärdet av precision och träffsäkerhet. Precision mäter en klassificerares exakthet, där högre precision indikerar färre falska positiva identifieringar. Recall mäter en klassificerares fullständighet, där högre träffsäkerhet indikerar färre falska negativa identifieringar.