Isolasjonsskogalgoritme for avviksdeteksjon i Python

Outlier-deteksjon er en viktig oppgave innen maskinlæring. Den brukes til å identifisere uvanlige observasjoner eller datapunkter som avviker fra den generelle trenden til datasettet. En effektiv algoritme for avvikdeteksjon er Isolation Forest- algoritmen. 

I dagens blogg vil vi dekke det grunnleggende om Isolation Forest-algoritmen og demonstrere hvordan du bruker den til å oppdage uteliggere i et datasett ved hjelp av . Du kan se hele videoen av denne opplæringen nederst på denne bloggen .

Innholdsfortegnelse

Isolasjonsskogalgoritme vs boksplottmetode 

Nedenfor vises to bilder for avviksdeteksjon. Legg merke til de betydelige forskjellene i den visuelle representasjonen når du bruker sammenlignet med når Isolation Forest ML-modellen for avviksdeteksjon brukes. 

Isolasjonsskogalgoritme for avviksdeteksjon i Python

I Isolation Forest ML-modellen er prosentandelen av uteliggere oppdaget av IS Anomaly Detection-algoritmen 32,56 %. Ved å bruke samme algoritme faller de resterende 67,44% av dataene i normalområdet, noe som er ganske sensitivt. Målet vårt er å finjustere denne følsomheten ved å bruke . 

Isolasjonsskogalgoritme for avviksdeteksjon i Python

Den tradisjonelle metoden for avviksdeteksjon

Den tradisjonelle måten å finne en uteligger på er å bruke en boksplottmetode . I denne metoden bruker vi IQR for å finne hva som faller utenfor det forventede området for dataene. 

Isolasjonsskogalgoritme for avviksdeteksjon i Python

I dette eksemplet er dette enkeltpunktet over værhåren vår ytterside.

Isolasjonsskogalgoritme for avviksdeteksjon i Python

Hvis vi oversetter denne visuelle grafen til et sektordiagram, får vi denne spesielle uteliggeren som tilsvarer 2,33 % av de totale dataene. 

Isolasjonsskogalgoritme for avviksdeteksjon i Python

I denne bloggen lærer vi hvordan du bruker Isolation Forest ML-metoden, finjusterer den for å matche den tradisjonelle metoden og øker eller reduserer dens følsomhet.

Datasettet for isolasjonsskogalgoritmen

Åpne datasettet vårt i LuckyTemplates. Klikk deretter Transformer data. 

Isolasjonsskogalgoritme for avviksdeteksjon i Python

Datasettet vårt for denne opplæringen vil dukke opp. Den inneholder dato , antall brukere , indeks og isolasjonsskogavvik med utgang 1 for normalområdet og -1 for avvikere  .

Vi har også en kolonne for Traditional Outlier , og en betinget kolonne med tittelen IS Anomaly Detection som gjenspeiler Isolation Forest Outlier. 

Isolasjonsskogalgoritme for avviksdeteksjon i Python

Vår andre spørring viser vår dataramme som vi lærer hvordan vi setter alt sammen. 

Isolasjonsskogalgoritme for avviksdeteksjon i Python

Python-kodene

Egenskaper- ruten kan vi se de to kjørende skriptene våre. Vi lager Isolation Forest-utgangen med ett av disse skriptene og genererer den tradisjonelle uteliggeren med den andre. 

Isolasjonsskogalgoritme for avviksdeteksjon i Python

Isolasjonsskogalgoritme Python-kode

Klikk Kjør Python-skript for å se koden. 

Isolasjonsskogalgoritme for avviksdeteksjon i Python

I denne Python-koden importerer vi som pd og bruk noe som heter Isolation Forest. 

Isolasjonsskogalgoritme for avviksdeteksjon i Python

En isolasjonsskog er en trebasert modell som tar beslutninger basert på en trestruktur og deretter bestemmer om den er en uteligger eller ikke. Vi kaller det en ensemblemodell fordi den bruker to forskjellige metoder for å finne en bestemt uteligger. 

Vi erstatter også datasettvariabelen , som holder datasettet vårt som standard, som df

Isolasjonsskogalgoritme for avviksdeteksjon i Python

Gitt vårt datasett, vil vi ikke trenge de to linjene med koder som er uthevet nedenfor, så vi kan bare slette disse linjene. 

Isolasjonsskogalgoritme for avviksdeteksjon i Python

Det vi gjør er å instansiere modellen.

Lagre modellen som IsolationForest og la modellen lære dataene med brukere. Deretter oppretter du en ny kolonne kalt Anomaly Detection som vil gå tilbake over alle dataene den lærer og forutsi hvilken som skal være en uteligger eller ikke. 

Isolasjonsskogalgoritme for avviksdeteksjon i Python

For denne funksjonen er standard for kontaminering satt til 0,5 . Dermed er den supersensitiv for øyeblikket og vil lete etter mange uteliggere. Det er derfor vi i kakediagrammet vårt tidligere har et veldig høyt spekter av utliggere på 32,56 %. 

Isolasjonsskogalgoritme for avviksdeteksjon i Python

For å gjøre det mindre følsomt, kan vi legge til kontaminering = .1 i IsolationForest -funksjonen.

Isolasjonsskogalgoritme for avviksdeteksjon i Python

Til slutt tilbakestill indeksen og klikk OK.

Resultatet vil vise en oppsummeringstabell. Gå til Applied Steps- panelet og klikk på df.

Isolasjonsskogalgoritme for avviksdeteksjon i Python

I utdataene kan vi finne uteliggere under kolonnen Anomaly Detection

Isolasjonsskogalgoritme for avviksdeteksjon i Python

Vi ønsker også å se hvordan den presterer ved siden av den tradisjonelle uteliggeren. 

Tradisjonell Outlier Python-kode

Vi kjører et annet Python-skript som i dette eksemplet er Run Python-skript1.

Isolasjonsskogalgoritme for avviksdeteksjon i Python

Denne koden legger til en uteliggerfunksjon ved å bruke den første og tredje kvartilen. Når vi trekker q1 fra q3 , får vi Interquartile Range (IQR)

Isolasjonsskogalgoritme for avviksdeteksjon i Python

De to neste linjene setter betingelsene for uteliggere. Den første linjen sier at alt mindre enn 1,5 * iqr anses som negative eller lavere uteliggere. Det er også slik vi finner uteliggere på tradisjonell måte.

Vi vet også at vi har én uteligger som høyeste punkt i dataene våre. For å gjøre rede for det, sier den andre linjen at datapunkter som er høyere enn q3 + 1,5 * iqr også anses som uteliggere. 

Isolasjonsskogalgoritme for avviksdeteksjon i Python

Returner det datasettet og bruk funksjonen outliers(df, 'Brukere') . Klikk deretter OK.

Isolasjonsskogalgoritme for avviksdeteksjon i Python

En oppsummeringstabell som ligner på det vi har tidligere vil dukke opp. 

Hvis vi går til Applied Steps- panelet og klikker Changed Type1 , får vi Tradisjonell Outlier og Anomaly Detection- kolonner side om side, med sistnevnte bruker 1 og -1 for å angi uteliggere og ikke.

Isolasjonsskogalgoritme for avviksdeteksjon i Python

Men når vi bruker datoer med Python, kan de virke rotete ut. 

Isolasjonsskogalgoritme for avviksdeteksjon i Python

Det vi kan gjøre er å lage en ekstra kolonne ved å bruke indeksen fra Legg til kolonne .

Isolasjonsskogalgoritme for avviksdeteksjon i Python

Legg deretter til Index i forrige kolonne med Merge , slik at vi kan bevare all informasjonen i den originale kolonnen/datasettet. 

Isolasjonsskogalgoritme for avviksdeteksjon i Python

Når vi har alt sammen, kan vi kjøre koden vår og oppdatere bildene våre. Husk at vi endret forurensningen av uteliggeren fra 0,5 til 0,1, så vi bør se denne delen av grafen krympe ganske mye. 

Isolasjonsskogalgoritme for avviksdeteksjon i Python

Gå tilbake til det visuelle og klikk på Bruk endringer. 

Isolasjonsskogalgoritme for avviksdeteksjon i Python

Legg merke til hvordan anomalideteksjonen gikk hele veien fra 32,56 % ned til 11,63 % av dataene våre. 

Isolasjonsskogalgoritme for avviksdeteksjon i Python

Som vi ser i resultatene våre, er dette en god måte å optimalisere avvikdeteksjonen vår. 

Husk også at når folk bruker den tradisjonelle metoden, kan de bruke verdier lavere enn 1,5, men 1,5 x IQR er den tradisjonelle måten, likevel. 

Isolasjonsskogalgoritme for avviksdeteksjon i Python

Isolasjonsskogalgoritme for avviksdeteksjon i Python




Konklusjon

Ved å bruke Isolation Forest-algoritmen kan vi enkelt identifisere og ekskludere uvanlige observasjoner fra datasettet vårt, og dermed forbedre nøyaktigheten til analysen vår. Denne opplæringen har gitt en trinn-for-trinn-guide for hvordan du bruker Isolation Forest-algoritmen for avvikdeteksjon ved hjelp av Python, som skal hjelpe deg med å komme i gang med å implementere den i dine egne prosjekter.

Det vi gjorde var en veldig enkel kode for å finne anomalier. Du kan optimalisere denne algoritmen ytterligere ved å modifisere forurensning og en rekke andre variabler som du kan lære gjennom kodesett. 

Beste ønsker,


Pipe In R: Koblingsfunksjoner med Dplyr

Pipe In R: Koblingsfunksjoner med Dplyr

I denne opplæringen lærer du hvordan du kobler funksjoner sammen ved å bruke dplyr-røroperatøren i programmeringsspråket R.

RANKX Deep Dive: A LuckyTemplates DAX-funksjon

RANKX Deep Dive: A LuckyTemplates DAX-funksjon

RANKX fra LuckyTemplates lar deg returnere rangeringen til et spesifikt tall i hver tabellrad som utgjør en del av en liste med tall.

Trekker ut LuckyTemplates-temaer og bilder fra PBIX

Trekker ut LuckyTemplates-temaer og bilder fra PBIX

Lær hvordan du demonterer en PBIX-fil for å trekke ut LuckyTemplates-temaer og bilder fra bakgrunnen og bruke den til å lage rapporten din!

Excel Formulas Cheat Sheet: Mellomveiledning

Excel Formulas Cheat Sheet: Mellomveiledning

Excel Formulas Cheat Sheet: Mellomveiledning

LuckyTemplates-kalendertabell: Hva er det og hvordan du bruker det

LuckyTemplates-kalendertabell: Hva er det og hvordan du bruker det

LuckyTemplates-kalendertabell: Hva er det og hvordan du bruker det

Python i LuckyTemplates: Hvordan installere og sette opp

Python i LuckyTemplates: Hvordan installere og sette opp

Lær hvordan du installerer programmeringsspråket Python i LuckyTemplates og hvordan du bruker verktøyene til å skrive koder og vise visuelle elementer.

Beregning av dynamiske fortjenestemarginer – enkel analyse av LuckyTemplates med DAX

Beregning av dynamiske fortjenestemarginer – enkel analyse av LuckyTemplates med DAX

Lær hvordan du beregner dynamiske fortjenestemarginer ved siden av LuckyTemplates og hvordan du kan få mer innsikt ved å grave dypere inn i resultatene.

Sortering av datotabellkolonner i LuckyTemplates

Sortering av datotabellkolonner i LuckyTemplates

Lær hvordan du sorterer feltene fra kolonner med utvidet datotabell på riktig måte. Dette er en god strategi å gjøre for vanskelige felt.

Finn dine beste produkter for hver region i LuckyTemplates ved å bruke DAX

Finn dine beste produkter for hver region i LuckyTemplates ved å bruke DAX

I denne artikkelen går jeg gjennom hvordan du kan finne de beste produktene dine per region ved å bruke DAX-beregninger i LuckyTemplates, inkludert TOPN- og CALCUATE-funksjonene.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Lær hvordan du bruker en søppeldimensjon for flagg med lav kardinalitet som du ønsker å inkludere i datamodellen din på en effektiv måte.