Rensa data som saknas

Anger hur du hanterar de värden som saknas i en datauppsättning

Kategori: Datatransformering/manipulering

Anteckning

Gäller för: Machine Learning Studio (klassisk)

Det här innehållet gäller endast Studio (klassisk). Liknande dra och släpp-moduler har lagts till i Azure Machine Learning designer. Läs mer i den här artikeln om att jämföra de två versionerna.

Modulöversikt

I den här artikeln beskrivs hur du använder modulen Rensa data som saknas i Azure Machine Learning Studio (klassisk) för att ta bort, ersätta eller dra slutsatsen att värden saknas.

Dataexperter söker ofta efter saknade värden i data och utför sedan olika åtgärder för att åtgärda data eller infoga nya värden. Målet med sådana rensningsåtgärder är att förhindra problem som orsakas av saknade data som kan uppstå vid träning av en modell.

Den här modulen stöder flera typer av åtgärder för att "rensa" saknade värden, inklusive:

  • Ersätta saknade värden med platshållare, medelvärde eller annat värde
  • Ta bort rader och kolumner som saknar värden helt
  • Härring av värden baserat på statistiska metoder

Tips

Är maskininlärning nytt för dig? Den här artikeln innehåller en bra förklaring av varför du skulle använda var och en av de olika metoderna för att ersätta saknade värden: Metoder för att hantera saknade värden

Om du använder den här modulen ändras inte källdatauppsättningen. I stället skapas en ny datauppsättning på arbetsytan som du kan använda i det efterföljande arbetsflödet. Du kan också spara den nya rensade datauppsättningen för återanvändning.

Den här modulen visar också en definition av den transformering som används för att rensa saknade värden. Du kan använda den här transformeringen på andra datauppsättningar som har samma schema med hjälp av modulen Tillämpa transformering.

Så här använder du Rensa data som saknas

I den här modulen kan du definiera en rensningsåtgärd. Du kan också spara rensningsåtgärden så att du kan använda den senare för nya data. Se följande länkar för en beskrivning av hur du skapar och sparar en rensningsprocess:

Viktigt

Den rensningsmetod som du använder för att hantera saknade värden kan avsevärt påverka dina resultat. Vi rekommenderar att du experimenterar med olika metoder. Överväg både motiveringen för användning av en viss metod och resultatens kvalitet.

Ersätta saknade värden

Varje gång du tillämpar modulen Rensa data som saknas på en uppsättning data tillämpas samma rensningsåtgärd på alla kolumner som du väljer. Om du behöver rensa olika kolumner med olika metoder använder du därför separata instanser av modulen.

  1. Lägg till modulen Rensa data som saknas i experimentet och anslut datauppsättningen som har saknade värden.

  2. För Kolumner som ska rensas väljer du de kolumner som innehåller de saknade värden som du vill ändra. Du kan välja flera kolumner, men du måste använda samma ersättningsmetod i alla valda kolumner. Därför behöver du vanligtvis rensa strängkolumner och numeriska kolumner separat.

    Om du till exempel vill söka efter saknade värden i alla numeriska kolumner:

    1. Öppna kolumnväljaren och välj WITH RULES (MED REGLER).

    2. För BÖRJA MED väljer du INGA KOLUMNER.

      Du kan också börja med ALLA KOLUMNER och sedan exkludera kolumner. Inledningsvis visas inte regler om du först klickar på ALLA KOLUMNER, men du kan klicka på INGA KOLUMNER och sedan klicka på ALLA KOLUMNER igen för att börja med alla kolumner och sedan filtrera bort (exkludera) kolumner baserat på namn, datatyp eller kolumnindex.

    3. För Inkludera väljer du Kolumntyp i listrutan och väljer sedan Numerisk eller en mer specifik numerisk typ.

    Alla rensnings- eller ersättningsmetod som du väljer måste gälla för alla kolumner i valet. Om data i en kolumn inte är kompatibla med den angivna åtgärden returnerar modulen ett fel och stoppar experimentet.

  3. För Minsta saknade värdeförhållande anger du det minsta antal saknade värden som krävs för att åtgärden ska utföras.

    Du använder det här alternativet i kombination med maximalt saknade värde-förhållande för att definiera de villkor under vilka en rensningsåtgärd utförs på datauppsättningen. Om det finns för många eller för få rader som saknar värden kan åtgärden inte utföras.

    Talet du anger representerar förhållandet mellan saknade värden och alla värden i kolumnen. Som standard anges egenskapen Minsta saknade värdeförhållande till 0. Det innebär att saknade värden rensas även om det bara finns ett värde som saknas. Ett exempel på hur du använder det här alternativet finns i Ange ett tröskelvärde för rensningsåtgärder.

    Varning

    Det här villkoret måste uppfyllas av varje kolumn för att den angivna åtgärden ska gälla. Anta till exempel att du har valt tre kolumner och sedan anger det minsta förhållandet för saknade värden till 0,2 (20 %), men endast en kolumn har faktiskt 20 % saknade värden. I det här fallet skulle rensningsåtgärden endast gälla för kolumnen med fler än 20 % saknade värden. De andra kolumnerna skulle därför vara oförändrade.

    Om du är osäker på om saknade värden har ändrats väljer du alternativet Generera indikatorkolumn som saknas. En kolumn läggs till i datauppsättningen för att ange om varje kolumn uppfyller de angivna kriterierna för minsta och högsta intervall.

  4. För Maximalt saknade värdeförhållande anger du det maximala antalet saknade värden som kan finnas för den åtgärd som ska utföras.

    Du kanske till exempel bara vill ersätta värden som saknas om 30 % eller färre av raderna innehåller saknade värden, men lämna värdena som de är om fler än 30 % av raderna har saknade värden.

    Du definierar talet som förhållandet mellan saknade värden och alla värden i kolumnen. Som standard är förhållandet Maximalt värde som saknas inställt på 1. Det innebär att saknade värden rensas även om 100 % av värdena i kolumnen saknas.

    Anteckning

    När du anger ett tröskelvärde med alternativen Minsta saknade värdeförhållande eller Maximalt saknat värdeförhållande kan rensningsåtgärden inte utföras om inte ens en av de valda kolumnerna uppfyller kriterierna.

  5. För Rensningsläge väljer du något av följande alternativ för att ersätta eller ta bort saknade värden:

    • Ersätt med HJÄLP av MICE: För varje saknat värde tilldelar det här alternativet ett nytt värde, som beräknas med hjälp av en metod som beskrivs i statistisk dokumentation som "Multivariate Imputation using Chained Equations" eller "Multiple Imputation by Chained Equations". Med en metod med flera imputering modelleras varje variabel med saknade data villkorligt med hjälp av de andra variablerna i data innan de saknade värdena fylls i. I en enda imputeringsmetod (till exempel att ersätta ett värde som saknas med ett kolumngenomvärde) görs däremot ett enda byte över data för att fastställa fyllningsvärdet.

      Alla imputeringsmetoder introducerar vissa fel eller bias, men flera imputering simulerar bättre processen att generera data och sannolikhetsfördelningen av data.

      En allmän introduktion till metoder för att hantera saknade värden finns i Missing Data: the state of the art. Fferfer andFfer, 2002.

      Varning

      Det här alternativet kan inte tillämpas på helt tomma kolumner. Sådana kolumner måste tas bort eller skickas till utdata som de är.

    • Anpassat ersättningsvärde: Använd det här alternativet om du vill ange ett platshållarvärde (till exempel 0 eller NA) som gäller för alla saknade värden. Värdet som du anger som ersättning måste vara kompatibelt med kolumnens datatyp.

    • Ersätt med medelvärde: Beräknar kolumn medelvärdet och använder medelvärdet som ersättningsvärde för varje värde som saknas i kolumnen.

      Gäller endast för kolumner som har heltals-, Double- eller booleska datatyper. Mer information finns i avsnittet Tekniska anteckningar.

    • Ersätt med median: Beräknar kolumnens medianvärde och använder medianvärdet som ersättning för alla saknade värden i kolumnen.

      Gäller endast för kolumner som har heltals- eller double-datatyper. Mer information finns i avsnittet Tekniska anteckningar.

    • Ersätt med läge: Beräknar läget för kolumnen och använder läget som ersättningsvärde för varje saknat värde i kolumnen.

      Gäller för kolumner som har heltals-, Double-, booleska eller kategoriska datatyper. Mer information finns i avsnittet Tekniska anteckningar.

    • Ta bort hela raden: Tar helt bort alla rader i datauppsättningen som har ett eller flera värden som saknas. Detta är användbart om det saknade värdet kan anses saknas slumpmässigt.

    • Ta bort hela kolumnen: Tar helt bort alla kolumner i datauppsättningen som har ett eller flera värden som saknas.

    • Ersätt med probabilistisk PCA: Ersätter saknade värden med hjälp av en linjär modell som analyserar korrelationerna mellan kolumnerna och beräknar en lågdimensionell uppskattning av data, från vilken fullständiga data rekonstrueras. Den underliggande dimensionalitetsminskningen är en probabilistisk form av Principal Component Analysis (PCA) och implementerar en variant av modellen som föreslås i Journal of the Statistical Society, Series B 21(3), 611–622 avBeling ochNde.

      Jämfört med andra alternativ, till exempel flera imputering med kedjekopplade ekvationer (MICE), har det här alternativet fördelen att det inte kräver tillämpning av prediktorer för varje kolumn. I stället approximer det kvariansen för den fullständiga datauppsättningen. Därför kan det ge bättre prestanda för datauppsättningar som har saknade värden i många kolumner.

      De viktigaste begränsningarna med den här metoden är att den expanderar kategoriska kolumner till numeriska indikatorer och beräknar en kompakt kvariansmatris för resulterande data. Det är inte heller optimerat för glesa representationer. Därför stöds inte datauppsättningar med ett stort antal kolumner och/eller stora kategoriska domäner (tiotusentals) på grund av för hög utrymmesförbrukning.

      Tips

      Kom ihåg att den metod du väljer tillämpas på alla kolumner i valet. Om du vill ersätta vissa saknade värden med nollor i vissa kolumner men infoga en platshållare i andra kolumner bör du därför använda Välj kolumner i datauppsättning för att separera data och använda olika instanser av modulen Rensa data som saknas.

  6. Alternativet Ersättningsvärde är tillgängligt om du har valt alternativet Anpassat ersättningsvärde. Ange ett nytt värde som ska användas som ersättningsvärde för alla saknade värden i kolumnen.

    Observera att du bara kan använda det här alternativet i kolumner som har datatyperna Heltal, Double, Boolesk eller Datum. För datumkolumner kan ersättningsvärdet också anges som antalet tick om 100 nanosekunder sedan 1/1/0001 12:00

  7. Generera kolumnen värdeindikator som saknas: Välj det här alternativet om du vill ge en indikation om huruvida värdena i kolumnen uppfyller kriterierna för att rensa värden som saknas. Det här alternativet är särskilt användbart när du ställer in en ny rensningsåtgärd och vill se till att den fungerar som den ska.

  8. Kör experimentet eller välj modulen Rensa data som saknas och klicka på Kör valda.

Resultat

Modulen returnerar två utdata:

  • Rensad datauppsättning: En datauppsättning som består av de valda kolumnerna, där saknade värden hanteras som de anges, tillsammans med en indikatorkolumn, om du har valt det alternativet.

    Kolumner som inte har valts för rensning skickas också vidare.

  • Rensningstransformering: En datatransformering som används för rensning och som kan sparas på din arbetsyta och tillämpas på nya data senare.

Tillämpa en sparad rensningsåtgärd på nya data

Om du behöver upprepa rensningsåtgärder ofta rekommenderar vi att du sparar receptet för datarensning som en transformering för att återanvända med samma datamängd. Att spara en rensningstransformering är särskilt användbart om du ofta måste importera på nytt och sedan rensa data som har samma schema.

  1. Lägg till modulen Tillämpa transformering i experimentet.

  2. Lägg till den datauppsättning som du vill rensa och anslut datauppsättningen till den högra indataporten.

  3. Expandera gruppen Transformeringar i det vänstra fönstret i Studio (klassisk). Leta upp den sparade omvandlingen och dra den till experimentet.

  4. Anslut den sparade omvandlingen till den vänstra indataporten för Tillämpa transformering.

    När du tillämpar en sparad transformering kan du inte välja de kolumner som omvandlingen ska tillämpas på. Det beror på att transformeringen redan har definierats och tillämpas automatiskt på de datatyper som angavs i den ursprungliga åtgärden.

    Anta dock att du har skapat en transformering på en delmängd av numeriska kolumner. Du kan tillämpa den här omvandlingen på en datauppsättning med blandade kolumntyper utan att skapa ett fel, eftersom de saknade värdena endast ändras i matchande numeriska kolumner.

  5. Kör experimentet.

Exempel

Se exempel på hur den här modulen används i Azure AI Gallery:

Teknisk information

Det här avsnittet innehåller implementeringsinformation, kända problem och vanliga frågor.

  • Ett fel inträffar om medelvärdet eller medianalternativet används när alla strängkolumner väljs. Om du behöver bearbeta kolumner med olika datatyper skapar du två instanser av Rensa data som saknas.

  • När du ersätter saknade värden med ett medelvärde i kolumner med datatyperna Boolesk, Heltal, DateTime eller TimeSpan konverteras kolumnen först till flyttalsnummer, medelvärdet beräknas och sedan avrundas resultatet till närmaste värde för den ursprungliga datatypen.

  • När du skriver ett ersättningsvärde måste värdet vara kompatibelt med datatypen i den valda kolumnen.

  • Värden för NaN Inf , och –Inf tillåts för kolumner där datatypen är Double.

  • När du använder MICE-metoden förutsägs ersättningsvärdet med hjälp av den tränade MICE-modellen.

  • Om du använder Rensa data som saknas kan du återställa andra kolumntyper till funktionen. Om dina data innehåller andra typer av kolumner, till exempel etiketter, använder du Redigera metadata för att korrigera kolumntyperna.

Begränsningar för användning av rensningsomvandlar

Följande begränsningar gäller när du använder en sparad transformering (baserat på Rensa data som saknas) för nya data:

  • En sparad transformering kan inte generera indikatorvärden, även om det här alternativet användes i den ursprungliga rensningen. Se indikatorvärdena som mest användbara när du testar en ny transformering.

  • Transformeringen beräknar inte nya värden baserat på den nya datauppsättningen. Med andra ord, om du använde Rensa saknade data i datauppsättning A och genererade ett medelvärde på 0,5, skulle samma värde tillämpas som medelvärdet för att ersätta saknade värden i datauppsättning B, oavsett de faktiska värdena i datauppsättning B.

  • Datatypen för kolumnerna i den nya datauppsättningen måste matcha datatypen för de kolumner som omvandlingen ursprungligen skapades på. Ett fel uppstår om några åtgärder utförs på kolumnen som implicit ändrar datatypen.

    Anta till exempel att du skapar ett medelvärde för en heltalsdatakolumn [Col1] och sparar transformeringen. Nu vill du tillämpa rensningsomvandlingen på en kopia av [Col1] som har justerats med hjälp av en formel, till exempel ([Col1] /1.5). För att säkerställa att resultatet är ett heltal avrundar du resultatet, men får fortfarande ett fel när du tillämpar transformeringen. Men om du justerar värdet med hjälp av en formel som ([Kol 1] * 10) utlöses inget fel!

    Undvik sådana problem genom att använda Redigera metadata för att uttryckligen återställa datatypen till heltal. I allmänhet ändrar åtgärder i modulen Tillämpa matematisk åtgärd implicit numeriska kolumner till double .

Ange och tolka tröskelvärden

När du anger ett tröskelvärde för rensningsåtgärder med alternativen Minsta saknade värdeförhållande eller Maximalt saknade värdeförhållande kan resultatet vara oväntat eller förvirrande. För att illustrera hur alternativen för högsta och lägsta saknade värden fungerar har vi tillhandahållit några exempel från exempeldatamängden Bilpriser, som har många kolumner med saknade värden.

I följande tabell visas antalet saknade värden för flera kolumner i datauppsättningen, tillsammans med förhållandet mellan saknade värden som beräknas på datauppsättningen. Förhållandet mellan saknade värden (i kolumnen längst till höger) är det värde som skulle användas för att utvärdera datauppsättningen mot de angivna tröskelvärdena.

Anta att du ställer in Minsta saknade värde-förhållande till 0,019 och anger Maximalt saknat värdeförhållande till 0,020. I följande tabell med värden uppfyller vissa kolumner tröskelvärdena och vissa inte:

  • Kolumnerna bore och stroke uppfyller tröskelvärdena.
  • Kolumnerna normalized-losses och uppfyller inte compression-ratio tröskelvärdena.
Kolumnnamn Antal saknade värden Förhållandet mellan saknade värden
Normaliserade förluster 41 0,2
Bar 4 0.019512195
Stroke 4 0.019512195
Kompressionsförhållande 0 0

Eftersom vissa kolumner i markeringen inte uppfyller de angivna kriterierna utfördes ingen rensningsåtgärd på någon kolumn. För att hjälpa dig att ta reda på vad som hände returnerar modulen värdet FALSE i de två indikatorkolumnerna, bore_IsMissing och stroke_IsMissing .

Men om du ändrar tillbaka tröskelvärdet till standardvärdena 0 för Minsta saknade värdeförhållande och 1 för Maximalt saknade värdeförhållande returneras en indikatorkolumn för alla valda kolumner och den angivna åtgärden utförs.

Tips

Om du är osäker på om den saknade värderensning fungerar som förväntat väljer du kolumnalternativet Generera saknade värden.

Kända problem

Om du använder MICE-metoden för att rensa data och sedan bearbetar en datauppsättning som innehåller saknade värden kan du få följande felmeddelande: "Undantag för AFx-biblioteksbibliotek: Modellen tränas inte. ( Fel 1000 )"

Det här felet uppstår bara när MICE-metoden väljs och om träningsdatamängden inte innehåller saknade värden, men testdatamängden gör det.

Förväntade indata

Namn Typ Description
Datamängd Datatabell Datauppsättning som ska rensas

Modulparametrar

Name Intervall Typ Standardvärde Description
Kolumner som ska rensas Valfri ColumnSelection Alla Välj kolumner för rensningsåtgärden för saknade värden.
Minsta kvot för saknade värden [0.0;1.0] Float 0.0 Rensa endast kolumn med saknade värden över det angivna värdet, från en uppsättning med alla valda kolumner.
Maximalt saknade värdeförhållande [0.0;1.0] Float 1.0 Rensa endast kolumner med saknade värden under det angivna värdet från en uppsättning med alla valda kolumner.
Rensningsläge Lista Hanteringsprincip Anpassat ersättningsvärde Välj en algoritm som ska användas när värden som saknas rensas.
Ersättningsvärde Valfri Sträng "0" Ange ett värde som ska ta i stället för saknade värden.

Det här värdet är valfritt.
Kol med alla saknade värden Valfri ColumnsWithAllValuesMissing Ta bort Ange om kolumner med alla saknade värden ska bevaras i utdata.
Generera kolumnen värdeindikator som saknas Valfri Boolesk falskt Generera en kolumn som anger vilka rader som har rensats.
Antal iterationer [1;10] Integer 5 Ange antalet iterationer när du använder MICE.
Antal iterationer för PCA-förutsägelse [1;50] Integer 10 Ange antalet iterationer när du använder en PCA-förutsägelse.

Utdata

Namn Typ Description
Rensad datauppsättning Datatabell Rensad datauppsättning
Rensningstransformering ITransform-gränssnitt Transformering som ska skickas till modulen Tillämpa transformering för att rensa nya data.

Undantag

Undantag Description
Fel 0002 Ett undantag inträffar om en eller flera parametrar inte kunde parsas eller konverteras från den angivna typen till den typ som krävs av målmetoden.
Fel 0003 Ett undantag inträffar om en eller flera indatauppsättningar är null eller tomma.
Fel 0008 Ett undantag inträffar om en parameter inte är inom intervallet.
Fel 0013 Ett undantag inträffar om den leaner som skickas till modulen har en ogiltig typ.
Fel 0018 Ett undantag inträffar om indatauppsättningen inte är giltig.
Fel 0039 Ett undantag inträffar om åtgärden misslyckas.

En lista över fel som är specifika för Studio-moduler (klassisk) finns i Machine Learning felkoder.

En lista över API-undantag finns i Machine Learning REST API felkoder.

Se även

Manipulation
Datatransformering
A-Z-modullista