Förbereda din datamängd för träning
Du tränar en datamängd för att besvara din maskininlärningsfråga. Träningsdatamängden innehåller en kolumn för varje funktion samt en kolumn som innehåller målet. Maskininlärningsalgoritmerna lär sig generella mönster från dessa datarader för att generera en modell som kan förutsäga målet.
För att göra datamängden redo för maskininlärning måste du förstå din data och samla in nödvändiga datapunkter. Du kan även behöva utföra datatransformering på en del av datan och ta bort data som inte är relevant för ditt användningsfall.
Vilken data bör du samla in?
Definiera din maskininlärningsfråga exakt och bestäm vad som behöver aggregeras för att närma dig den frågan:
-
Om du vill förutsäga vilka kunder som kommer att lämna, måste du aggregera en datamängd där varje rad representerar en kund, varje funktionskolumn representerar en funktion som beskriver den kunden, och målkolumnen är om kunden lämnade under en viss tidsperiod.
-
Om du vill förutsäga vad försäljningen kommer att bli för en viss månad och region, måste du aggregera en datamängd där varje rad representerar en viss månad för en viss region, varje funktionskolumn representerar en funktion som beskriver den månadens verksamhet i den regionen, och målkolumnen är försäljningsintäkten för den regionen under den månaden.
Försök att räkna ut vilka saker som kan påverka målet och se om den datan kan samlas in. Kom ihåg att de prediktiva algoritmerna bara kan identifiera mönster som finns att hitta. Kanske behöver du samla in eller skapa ytterligare funktioner för att extrahera mer information?
Du måste också fastställa hur mycket data du behöver samla på dig innan du kan förutsäga korrekt. Hur lång tid tar det innan händelsen blir representativ? Överväg följande exempel:
-
Kunder måste ha varit medlemmar i 60 dagar innan du kan förutsäga om de kommer att lämna vid dag 90.
-
Kostnaden för försäkringsärenden kommer inte att vara känd på några månader, så du kan exkludera ärenden som är mindre än sex månader gamla.
Skilj mellan tidsvariant och icke-tidsvariant data. Med tidsvariant data, är datan försedd med tidsmarkör för att kunna aggregeras på lämpligt sätt?
Kommer datan att vara tillgänglig vid tidpunkten för prediktion?
Se till att alla funktioner du inkluderar i träningsdatamängden även kommer att vara tillgängliga för framtida prediktioner. Det är ett vanligt misstag att träna modellen på funktioner som du har tillgängliga för historisk data, men som inte kommer att vara tillgängliga vid den tidpunkt då du gör en prediktion i framtiden. När du gör prediktioner på ny data måste maskininlärningsalgoritmen ha värden för alla funktioner som fanns tillgängliga i träningsdatamängden.
Är mer data bättre?
Urvalsstorlek
En större datavolym tenderar att producera mer tillförlitliga modeller. Alla ytterligare relevanta datapunkter hjälper, oavsett om det är nya eller historiska observationer.
Antal funktioner
Det kan vara frestande att inkludera alla möjliga variabler i modellen oavsett relevans för det målsatta resultatet. Enklare är oftast bättre. Det är generellt bättre att använda ett mindre antal funktioner i modellen.
När det finns fler funktioner kan det finnas en större risk för att dölja det sanna underliggande förhållandet som du vill avtäcka. Den prediktiva modellen kan använda alla funktioner för att komma fram till en serie komplicerade regler som presterar bra mot den data som användes för att träna modellen. Men det förutsagda målet kanske faktiskt bara påverkas av en eller två funktioner. Modellen kanske inte är bra på att generalisera till data utanför det som användes i träningen, vilket skulle resultera i dålig prediktiv prestanda när den tillämpas på ny data.
Overfitting
Overfitting innebär att en modell är alltför komplex och som ett resultat är opålitlig för att förutsäga ny data. Overfitting tenderar att ske när det finns för många funktioner i förhållande till antalet tillgängliga datapunkter. Du kanske till exempel bara har 50 rader data och 100 funktionskolumner i datamängden.
Är din träningsdata relevant?
En maskininlärningsalgoritm hittar mönster i den data du matar den med och använder dessa mönster för att göra prediktioner på data i framtiden. När du gör prediktioner på ny data antar du att den liknar träningsdatan. Av denna anledning är det viktigt att träningsdatamängden statistiskt liknar den data du kommer att göra prediktioner på.
Om marknaden eller verksamheten har förändrats avsevärt från vad din träningsdatamängd beskriver, använder du förmodligen en föråldrad datamängd som kommer att leda till felaktiga prediktioner. Du kanske behöver skapa en ny träningsdatamängd och endast använda data som samlats in efter att förändringen skedde.
Överväg exemplet om försäljningsprediktioner i Förstå maskininlärning. Låt oss säga att vi matade in data i vår algoritm som representerade annonsutgifter på tv, radio och tidningar, samt försäljningsintäkter för historiska affärskvartal. Datan samlades dock in på 1980-talet. Nu annonserar vi inte längre den produkten på radio och vi annonserar nästan uteslutande produkten online. Vår tränade algoritm skulle prestera dåligt när det gäller att förutsäga försäljning för det nuvarande affärskvartalet eftersom träningsdatan inte är representativ för den nuvarande verksamheten.
Utforska datan
Använd din affärskunskap för att förstå och validera datan. Om datan inte stämmer överens med dina antaganden, kan det innebära dataproblem eller kan det innebära att dina antaganden är felaktiga?
Ta bort opålitliga funktioner
Överväg att exkludera kolumner från datamängden där:
-
Det finns en hög koncentration av ett värde (låg kardinalitet). Till exempel en kolumn med värdena "röd", "grön", "blå" där 90 procent av värdena är "röd".
-
Värdena är mycket unika (hög kardinalitet).
-
De flesta värdena är null.
Hantera korrelerade funktioner
Ta bort redundanta funktioner såsom högt korrelerade funktioner som ger samma eller mycket liknande information. Överväg att välja en enskild funktion från grupper som verkar fånga samma beteenden i datan. Försök att avgöra om det finns en funktion som driver den andra.
Ersätt null-värden
Utforska din data för att ta reda på om det finns saknade värden i viktiga datapunkter såsom målet eller viktiga funktioner. För att använda värden från en gles kolumn kan du ersätta null-värden med "annat" eller "okänt". Eller kanske behöver du omvärdera datainsamlingen.
Målintervall
Titta på fördelningen av datan. Om fördelningen av din måldata är för utspridd i förhållande till din urvalsstorlek kan det vara svårt att hitta något mönster i din data.
Vad är intervallet för datavärden? Det finns vissa utmaningar med att förutsäga datavärden utanför intervallet. Läs mer i Extrapolering och interpolering.
Finns det avvikelser i fördelningen? Skevhet, svansar och multimodala former i din data kan kräva ytterligare datatransformering eller mer feature engineering. Försök att gruppera kategorier med låg volym och avrunda eller ta bort svansar i numeriska funktioner.
Eliminera outlier
Överväg att ta bort observationer med outlier-värden i funktionskolumnerna. Outlier kan hindra en algorithms förmåga att urskilja generella mönster i datan. Det kan vara bättre att titta på en mindre delmängd av data som har en tätare spridning i målkolumnen.
Datagruppering
Du kan förbättra dina resultat genom att dela upp datan i olika datamängder och använda dem för att träna separata modeller. Basera datagrupperingen på en eller flera funktioner.
Dataläckage
Dataläckage innebär att den data som används för att träna en maskininlärningsalgoritm inkluderar den information du försöker förutsäga.