Balansera dina data för maskininlärning med Amazon SageMaker Data Wrangler

Källnod: 1600102

Amazon SageMaker Data Wrangler är en ny förmåga av Amazon SageMaker som gör det snabbare för datavetare och ingenjörer att förbereda data för applikationer för maskininlärning (ML) genom att använda ett visuellt gränssnitt. Den innehåller över 300 inbyggda datatransformationer så att du snabbt kan normalisera, transformera och kombinera funktioner utan att behöva skriva någon kod.

Idag är vi glada över att kunna presentera nya transformationer som låter dig balansera dina datauppsättningar enkelt och effektivt för ML-modellutbildning. Vi visar hur dessa transformationer fungerar i det här inlägget.

Nya balansoperatörer

De nyligen tillkännagivna balanseringsoperatörerna är grupperade under Balansdata transformera typ i LÄGG TILL TRANFORM rutan.

För närvarande stöder transformoperatorerna endast binära klassificeringsproblem. I binära klassificeringsproblem har klassificeraren till uppgift att klassificera varje prov till en av två klasser. När antalet prover i majoritetsklassen (större) är avsevärt större än antalet stickprov i minoritetsklassen (mindre) anses datasetet vara obalanserat. Denna skevhet är utmanande för ML-algoritmer och klassificerare eftersom träningsprocessen tenderar att vara partisk mot majoritetsklassen.

Balanseringsscheman, som förstärker data för att bli mer balanserade innan klassificeraren tränas, föreslogs för att ta itu med denna utmaning. De enklaste balanseringsmetoderna är att antingen översampla minoritetsklassen genom att duplicera minoritetsurval eller undersampling av majoritetsklassen genom att ta bort majoritetsurval. Idén att lägga till syntetiska minoritetssampel till tabelldata föreslogs först i Synthetic Minority Oversampling Technique (SMOTE), där syntetiska minoritetssampel skapas genom att interpolera par av de ursprungliga minoritetspunkterna. SMOTE och andra balanseringssystem studerades omfattande empiriskt och visade sig förbättra förutsägelseprestanda i olika scenarier, enligt publikationen Att SMOTE, eller inte att SMOTE.

Data Wrangler stöder nu följande balanseringsoperatörer som en del av Balansdata omvandla:

  • Slumpmässig översampling – Slumpmässigt duplicera minoritetsprover
  • Slumpmässig undersampling – Ta slumpmässigt bort majoritetsurval
  • slog – Generera syntetiska minoritetssampel genom att interpolera verkliga minoritetssampel

Låt oss nu diskutera de olika balanseringsoperatörerna i detalj.

Slumpmässigt översampling

Slumpmässig översampling inkluderar att välja slumpmässiga exempel från minoritetsklassen med en ersättning och komplettera träningsdata med flera kopior av denna instans. Därför är det möjligt att en enskild instans kan väljas flera gånger. Med Slumpmässig översampling transform typ, översamplar Data Wrangler automatiskt minoritetsklassen åt dig genom att duplicera minoritetsproverna i din datauppsättning.

Slumpmässigt underprov

Slumpmässig undersampling är motsatsen till slumpmässig översampling. Denna metod strävar efter att slumpmässigt välja och ta bort prover från majoritetsklassen, vilket följaktligen minskar antalet exempel i majoritetsklassen i den transformerade datan. De Slumpmässig underprov transform typ låter Data Wrangler automatiskt undersampla majoritetsklassen åt dig genom att ta bort majoritetssampel i din datauppsättning.

slog

I SMOTE läggs syntetiska minoritetsprov till data för att uppnå önskat förhållande mellan majoritets- och minoritetsprov. De syntetiska samplen genereras genom interpolering av par av de ursprungliga minoritetspunkterna. De slog transform stöder balanserande datamängder inklusive numeriska och icke-numeriska funktioner. Numeriska egenskaper interpoleras med vägt medelvärde. Du kan dock inte tillämpa viktad genomsnittlig interpolation på icke-numeriska funktioner – det är omöjligt att göra ett medelvärde “dog” och “cat” till exempel. Istället kopieras icke-numeriska särdrag från ett av de ursprungliga minoritetsproven enligt medelvikten.

Tänk till exempel på två exempel, A och B:

A = [1, 2, "dog", "carnivore"]
B = [0, 0, "cow", "herbivore"]

Antag att proven interpoleras med vikterna 0.3 för prov A och 0.7 för prov B. Därför beräknas medelvärdet för de numeriska fälten med dessa vikter för att ge 0.3 respektive 0.6. Nästa fält fylls med “dog” med sannolikhet 0.3 och “cow” med sannolikhet 0.7. På samma sätt är nästa lika “carnivore” med sannolikhet 0.3 och “herbivore” med sannolikhet 0.7. Den slumpmässiga kopieringen görs oberoende för varje funktion, så exempel C nedan är ett möjligt resultat:

C = [0.3, 0.6, "dog", "herbivore"]

Det här exemplet visar hur interpoleringsprocessen kan resultera i orealistiska syntetiska prover, till exempel en växtätare hund. Detta är vanligare med kategoriska drag men kan också förekomma i numeriska drag. Även om vissa syntetiska prover kan vara orealistiska, kan SMOTE fortfarande förbättra klassificeringsprestandan.

För att heuristiskt generera mer realistiska sampel, interpolerar SMOTE endast par som är nära i objektutrymmet. Tekniskt sett interpoleras varje prov endast med sina k närmaste grannar, där ett gemensamt värde för k är 5. I vår implementering av SMOTE används endast de numeriska funktionerna för att beräkna avstånden mellan punkter (avstånden används för att bestämma grannskapet av varje prov). Det är vanligt att normalisera de numeriska funktionerna innan man beräknar avstånd. Observera att de numeriska egenskaperna är normaliserade endast för att beräkna avståndet; de resulterande interpolerade funktionerna är inte normaliserade.

Låt oss nu balansera Datauppsättning för vuxna (även känd som Census Income dataset) med den inbyggda SMOTE-transformen som tillhandahålls av Data Wrangler. Denna multivariata datauppsättning innehåller sex numeriska funktioner och åtta strängfunktioner. Målet med datamängden är en binär klassificeringsuppgift för att förutsäga om inkomsten för en individ överstiger $50,000 XNUMX per år eller inte baserat på folkräkningsdata.

Du kan också se fördelningen av klasserna visuellt genom att skapa ett histogram med hjälp av histogramanalystyp i Data Wrangler. Målfördelningen är obalanserad och förhållandet mellan poster med >50K till <=50K är ungefär 1:4.

Vi kan balansera denna data med hjälp av slog operatör som finns under Balansdata transformera i Data Wrangler med följande steg:

  1. Välja income som målkolumn.

Vi vill att fördelningen av denna kolumn ska vara mer balanserad.

  1. Ställ in önskat förhållande till 0.66.

Därför är förhållandet mellan antalet minoritets- och majoritetsurval 2:3 (istället för råförhållandet 1:4).

  1. Välja slog som omvandlingen att använda.
  2. Lämna standardvärdena för Antal grannar till genomsnittet och om man ska normalisera eller inte.
  3. Välja Förhandsvisning för att få en förhandsvisning av den tillämpade transformationen och välja Lägg till för att lägga till omvandlingen till ditt dataflöde.

Nu kan vi skapa ett nytt histogram som liknar det vi gjorde tidigare för att se omfördelningen av klasserna. Följande figur visar histogrammet för income kolumn efter att ha balanserat datamängden. Provfördelningen är nu 3:2, som det var tänkt.

Vi kan nu exportera denna nya balanserade data och träna en klassificerare på den, vilket kan ge överlägsen prediktionskvalitet.

Slutsats

I det här inlägget visade vi hur man balanserar obalanserad binär klassificeringsdata med hjälp av Data Wrangler. Data Wrangler erbjuder tre balanseringsoperatorer: slumpmässig undersampling, slumpmässig översampling och SMOTE för att balansera om data i dina obalanserade datamängder. Alla tre metoderna som erbjuds av Data Wrangler stöder multimodal data inklusive numeriska och icke-numeriska funktioner.

Som nästa steg rekommenderar vi att du replikerar exemplet i det här inlägget i ditt Data Wrangler-dataflöde för att se vad vi diskuterade i praktiken. Om du är ny på Data Wrangler eller SageMaker Studio, hänvisa till Kom igång med Data Wrangler. Om du har några frågor relaterade till det här inlägget, lägg till det i kommentarsfältet.


Om författarna

Yotam Elor är Senior Applied Scientist på Amazon SageMaker. Hans forskningsintressen är maskininlärning, särskilt för tabelldata.

Arunprasath Shankar är en artificiell intelligens och maskininlärning (AI / ML) specialistlösningsarkitekt med AWS, som hjälper globala kunder att skala sina AI-lösningar effektivt och effektivt i molnet. På fritiden tycker Arun om att titta på sci-fi-filmer och lyssna på klassisk musik.

Källa: https://aws.amazon.com/blogs/machine-learning/balance-your-data-for-machine-learning-with-amazon-sagemaker-data-wrangler/

Tidsstämpel:

Mer från AWS-maskininlärningsblogg