10 fantastiske maskinlæringsvisualiseringer du bør kjenne til i 2023

Yellowbrick for å lage maskinlæringsplott med mindre kode

Photo by David Pisnoy on Unsplash

Datavisualisering spiller en viktig rolle i maskinlæring.

Datavisualiseringsbruk i maskinlæring inkluderer:

  • Innstilling av hyperparameter
  • Modell ytelse evaluering
  • Validering av modellforutsetninger
  • Finne uteliggere
  • Velge de viktigste funksjonene
  • Identifisere mønstre og sammenhenger mellom funksjoner

Visualiseringer som er direkte relatert til de ovennevnte sentrale tingene innen maskinlæring kalles maskinlæringsvisualiseringer.

Å lage maskinlæringsvisualiseringer er noen ganger en komplisert prosess da det krever mye kode å skrive selv i Python. Men takket være Pythons åpen kildekode Yellowbrick bibliotek, til og med komplekse maskinlæringsvisualiseringer kan lages med mindre kode. Det biblioteket utvider Scikit-learn API og gir funksjoner på høyt nivå for visuell diagnostikk som ikke leveres av Scikit-learn.

I dag vil jeg diskutere følgende typer maskinlæringsvisualiseringer, deres brukstilfeller og Yellowbrick-implementering i detalj.

Yellowbrick ML-visualiseringer
-----------------------------
01. Priniciapal Component Plot
02. Valideringskurve
03. Læringskurve
04. Albueplott
05. Silhouette Plot
06. Klasse Ubalanse Plot
07. Rester Plot
08. Prediksjonsfeilplott
09. Cook's Distance Plot
10. Funksjon Viktigheter Plot

Installasjon

Installasjon av Yellowbrick kan gjøres ved å kjøre en av følgende kommandoer.

  • pip pakkeinstallasjonsprogram:
pip installer yellowbrick
  • leilighet pakkeinstallasjonsprogram:
conda install -c districtdatalabs yellowbrick

Bruker Yellowbrick

Yellowbrick-visualiserere har Scikit-learn-lignende syntaks. En visualisator er et objekt som lærer av data for å produsere en visualisering. Den brukes ofte med en Scikit-learn-estimator. For å trene en visualizer kaller vi dens fit()-metode.

Redder tomten

For å lagre et plott opprettet ved hjelp av en Yellowbrick-visualisering, kaller vi show()-metoden som følger. Dette vil lagre plottet som en PNG-fil på disken.

visualizer.show(outpath="name_of_the_plot.png")

bruk

Hovedkomponentplotten visualiserer høydimensjonale data i et 2D- eller 3D-spredningsplott. Derfor er dette plottet ekstremt nyttig for å identifisere viktige mønstre i høydimensjonale data.

Yellowbrick implementering

Å lage dette plottet med den tradisjonelle metoden er komplekst og tidkrevende. Vi må bruke PCA på datasettet først og deretter bruke matplotlib-biblioteket for å lage spredningsplottet.

I stedet kan vi bruke Yellowbricks PCA-visualiseringsklasse for å oppnå samme funksjonalitet. Den bruker hovedkomponentanalysemetoden, reduserer dimensjonaliteten til datasettet og lager spredningsplottet med 2 eller 3 kodelinjer! Alt vi trenger å gjøre er å spesifisere noen nøkkelordargumenter i PCA()-klassen.

La oss ta et eksempel for å forstå dette ytterligere. Her bruker vi brystkreft datasett (se Sitering på slutten) som har 30 funksjoner og 569 prøver av to klasser (Ondartet og benign). På grunn av den høye dimensjonaliteten (30 funksjoner) i dataene, er det umulig å plotte de originale dataene i et 2D- eller 3D-spredningsplot med mindre vi bruker PCA på datasettet.

Følgende kode forklarer hvordan vi kan bruke Yellowbricks PCA-visualisering for å lage et 2D-spredningsplott av et 30-dimensjonalt datasett.

(Kode av forfatter)
Hovedkomponentplot — 2D (Bilde av autr)

Vi kan også lage et 3D-spredningsplott ved å sette projection=3i PCA()-klassen.

(Kode av forfatter)
Hovedkomponentplot — 3D (Bilde av forfatter)

De viktigste parametrene til PCA-visualiseringen inkluderer:

  • skala: bool, standard True. Dette indikerer om dataene skal skaleres eller ikke. Vi bør skalere data før vi kjører PCA. Lære mer om her..
  • projeksjon: int, standard er 2. Når projection=2, opprettes et 2D-spredningsplott. Når projection=3, opprettes et 3D-spredningsplott.
  • klasser: liste, standard None. Dette indikerer klasseetikettene for hver klasse i y. Klassenavnene vil være etikettene for legenden.

bruk

Valideringskurven plotter innvirkningen av en enkelt hyperparameter på toget og valideringssett. Ved å se på kurven kan vi bestemme overtilpasningen, undertilpasningen og de helt riktige forholdene til modellen for de angitte verdiene til den gitte hyperparameteren. Når det er flere hyperparametre som skal justeres samtidig, kan ikke valideringskurven brukes. På forhånd kan du bruke rutenettsøk eller tilfeldig søk.

Yellowbrick implementering

Å lage en valideringskurve med den tradisjonelle metoden er komplekst og tidkrevende. I stedet kan vi bruke Yellowbricks ValidationCurve visualizer.

For å plotte en valideringskurve i Yellowbirck, bygger vi en tilfeldig skogklassifiserer ved å bruke den samme brystkreft datasett (se Sitering på slutten). Vi vil plotte innvirkningen av maks. dybde hyperparameter i den tilfeldige skogmodellen.

Følgende kode forklarer hvordan vi kan bruke Yellowbricks ValidationCurve visualizer for å lage en valideringskurve ved å bruke brystkreft datasett.

(Kode av forfatter)
Valideringskurve (Bilde av forfatter)

Modellen begynner å overfitte etter maks. dybde verdi på 6. Når max_depth=6, modellen passer veldig godt til treningsdataene og generaliserer også godt på nye usett data.

De viktigste parametrene til ValidationCurve visualizer inkluderer:

  • estimator: Dette kan være hvilken som helst Scikit-learn ML-modell som et beslutningstre, tilfeldig skog, støttevektormaskin, etc.
  • param_name: Dette er navnet på hyperparameteren som vi ønsker å overvåke.
  • param_range: Dette inkluderer de mulige verdiene for param_name.
  • CV: int, definerer antall folder for kryssvalideringen.
  • scoring: streng, inneholder metoden for scoring av modellen. For klassifisering, nøyaktighet er foretrukket.

bruk

Læringskurven plotter trenings- og valideringsfeil eller nøyaktighet mot antall epoker eller antall treningsforekomster. Du tror kanskje at både læringskurver og valideringskurver ser like ut, men antall iterasjoner er plottet i læringskurvens x-akse mens verdiene til hyperparameteren er plottet i valideringskurvens x-akse.

Bruken av læringskurven inkluderer:

  • Læringskurven brukes til å oppdage undermontering, overtilpassing og akkurat passe forholdene til modellen.
  • Læringskurven brukes til å identifisere slav konvergens, oscillerende, oscillerende med divergens og riktig konvergens scenarier når man finner den optimale læringshastigheten til et nevralt nettverk eller ML-modell.
  • Læringskurven brukes til å se hvor mye vår modell drar nytte av å legge til flere treningsdata. Når den brukes på denne måten, viser x-aksen antall treningsinstanser.

Yellowbrick implementering

Å lage læringskurven med den tradisjonelle metoden er komplekst og tidkrevende. I stedet kan vi bruke Yellowbricks LearningCurve visualizer.

For å plotte en læringskurve i Yellowbirck, bygger vi en støttevektorklassifisering ved å bruke den samme brystkreft datasett (se Sitering på slutten).

Følgende kode forklarer hvordan vi kan bruke Yellowbricks LearningCurve visualizer for å lage en valideringskurve ved å bruke brystkreft datasett.

(Kode av forfatter)
Læringskurve (Bilde av forfatter)

Modellen vil ikke tjene på å legge til flere treningsinstanser. Modellen er allerede trent med 569 treningsinstanser. Valideringsnøyaktigheten blir ikke bedre etter 175 treningsinstanser.

De viktigste parametrene til LearningCurve visualizer inkluderer:

  • estimator: Dette kan være hvilken som helst Scikit-learn ML-modell som et beslutningstre, tilfeldig skog, støttevektormaskin, etc.
  • CV: int, definerer antall folder for kryssvalideringen.
  • scoring: streng, inneholder metoden for scoring av modellen. For klassifisering, nøyaktighet er foretrukket.

bruk

Albueplottet brukes til å velge det optimale antallet klynger i K-Means-klynger. Modellen passer best på det punktet hvor albuen forekommer i linjediagrammet. Albuen er bøyningspunktet på diagrammet.

Yellowbrick implementering

Å lage Elbow-plottet med den tradisjonelle metoden er komplekst og tidkrevende. I stedet kan vi bruke Yellowbricks KEbowVisualizer.

For å plotte en læringskurve i Yellowbirck, bygger vi en K-Means-klyngemodell ved å bruke iris datasett (se Sitering på slutten).

Følgende kode forklarer hvordan vi kan bruke Yellowbricks KEbowVisualizer til å lage et albueplot ved å bruke iris datasett.

(Kode av forfatter)
Albueplott (Bilde av forfatter)

De albue oppstår ved k=4 (annotert med stiplet linje). Plottet indikerer at det optimale antallet klynger for modellen er 4. Modellen er med andre ord godt tilpasset med 4 klynger.

De viktigste parametrene til KEbowVisualizer inkluderer:

  • estimator: K-Means modellforekomst
  • k: int eller tuple. Hvis det er et heltall, vil det beregne poengsum for klyngene i området (2, k). Hvis en tuppel, vil den beregne poengsum for klyngene i det gitte området, for eksempel (3, 11).

bruk

Silhuettplottet brukes til å velge det optimale antallet klynger i K-Means-klynger og også til å oppdage klyngeubalanse. Dette plottet gir svært nøyaktige resultater enn albueplottet.

Yellowbrick implementering

Å lage silhuettplottet med den tradisjonelle metoden er komplekst og tidkrevende. I stedet kan vi bruke Yellowbricks SilhouetteVisualizer.

For å lage en silhuettplott i Yellowbirck, bygger vi en K-Means-klyngemodell ved å bruke iris datasett (se Sitering på slutten).

Følgende kodeblokker forklarer hvordan vi kan bruke Yellowbricks SilhouetteVisualizer til å lage silhuettplott ved å bruke iris datasett med forskjellige k (antall klynger) verdier.

k = 2

(Kode av forfatter)
Silhuettplott med 2 klynger (k=2), (Bilde av forfatter)

Ved å endre antall klynger i KMeans()-klassen, kan vi utføre koden ovenfor på forskjellige tidspunkter for å lage silhuettplott når k=3, k=4 og k=5.

k = 3

Silhuettplott med 3 klynger (k=3), (Bilde av forfatter)

k = 4

Silhuettplott med 4 klynger (k=4), (Bilde av forfatter)

k = 5

Silhuettplott med 4 klynger (k=5), (Bilde av forfatter)

Silhuettplottet inneholder én knivform per klynge. Hver knivform er laget av stolper som representerer alle datapunktene i klyngen. Så, bredden på en knivform representerer antallet av alle forekomster i klyngen. Søylelengden representerer silhuettkoeffisienten for hver forekomst. Den stiplede linjen indikerer silhuettpoengsummen — Kilde: Hands-On K-Means Clustering (skrevet av meg).

Et plott med omtrent like bredder av knivformer forteller oss at klyngene er velbalanserte og har omtrent samme antall forekomster i hver klynge - en av de viktigste antakelsene i K-Means klynging.

Når stengene i en knivform forlenger den stiplede linjen, er klyngene godt adskilt - en annen viktig antakelse i K-Means-klynger.

Når k=3 er klyngene godt balansert og godt adskilt. Så det optimale antallet klynger i vårt eksempel er 3.

De viktigste parametrene til SilhouetteVisualizer inkluderer:

  • estimator: K-Means modellforekomst
  • farger: streng, en samling farger som brukes for hver knivform. 'yellowbrick' eller en av Matplotlib fargekartstrenger som 'Accent', 'Set1', etc.

bruk

Klasseubalanseplottet oppdager ubalansen til klassene i målkolonnen i klassifikasjonsdatasett.

Klasseubalanse oppstår når en klasse har betydelig flere forekomster enn den andre klassen. Et datasett relatert til e-postoppdagelse av søppelpost har for eksempel 9900 forekomster for «Ikke spam»-kategorien og bare 100 forekomster for «Spam»-kategorien. Modellen vil ikke fange minoritetsklassen (den Spam kategori). Som et resultat av dette vil modellen ikke være nøyaktig når det gjelder å forutsi minoritetsklassen når en klasseubalanse oppstår — Kilde: Topp 20 maskinlærings- og dyplæringsfeil som i all hemmelighet skjer bak kulissene (skrevet av meg).

Yellowbrick implementering

Å lage klasseubalanseplottet med den tradisjonelle metoden er komplekst og tidkrevende. I stedet kan vi bruke Yellowbricks ClassBalance visualizer.

For å plotte et klasseubalanseplot i Yellowbirck, bruker vi brystkreft datasett (klassifiseringsdatasett, se Sitering på slutten).

Følgende kode forklarer hvordan vi kan bruke Yellowbricks ClassBalance-visualisering for å lage et klasseubalanseplot ved hjelp av brystkreft datasett.

(Kode av forfatter)
Klasse Ubalanse Plot (Bilde av forfatter)

Det er mer enn 200 tilfeller i Ondartet klasse og mer enn 350 forekomster i benign klasse. Derfor kan vi ikke se mye klasseubalanse her selv om instansene ikke er likt fordelt mellom de to klassene.

De viktigste parametrene til ClassBalance visualizer inkluderer:

  • etiketter: liste, navnene på de unike klassene i målkolonnen.

bruk

Residualplottet i lineær regresjon brukes til å bestemme om residualene (observerte verdier-predikerte verdier) er ukorrelerte (uavhengige) ved å analysere variansen av feil i en regresjonsmodell.

Residualplottet lages ved å plotte residualene mot prediksjonene. Hvis det er noen form for mønster mellom prediksjoner og residualer, bekrefter det at den tilpassede regresjonsmodellen ikke er perfekt. Hvis punktene er tilfeldig spredt rundt x-aksen, er regresjonsmodellen godt tilpasset dataene.

Yellowbrick implementering

Å lage restplottet med den tradisjonelle metoden er komplekst og tidkrevende. I stedet kan vi bruke Yellowbricks ResidualsPlot-visualisering.

For å plotte en restplott i Yellowbirck, bruker vi Annonsering (Advertising.csv, Se Sitering på slutten) datasettet.

Følgende kode forklarer hvordan vi kan bruke Yellowbricks ResidualsPlot-visualisering for å lage et restplott ved å bruke Annonsering datasett.

(Kode av forfatter)
Rester Plot (Bilde av forfatter)

Vi kan tydelig se et eller annet ikke-lineært mønster mellom prediksjoner og residualer i residualplottet. Den tilpassede regresjonsmodellen er ikke perfekt, men den er god nok.

De viktigste parametrene til ResidualsPlot-visualiseringen inkluderer:

  • estimator: Dette kan være hvilken som helst Scikit-learn-regressor.
  • hist: bool, standard True. Om histogrammet av residualer skal plottes, som brukes til å kontrollere en annen antakelse — Residualene er tilnærmet normalfordelt med gjennomsnittet 0 og et fast standardavvik.

bruk

Prediksjonsfeilplottet i lineær regresjon er en grafisk metode som brukes til å evaluere en regresjonsmodell.

Prediksjonsfeilplottet lages ved å plotte prediksjonene mot de faktiske målverdiene.

Hvis modellen gjør svært nøyaktige spådommer, bør punktene være på 45-graderslinjen. Ellers er punktene spredt rundt den linjen.

Yellowbrick implementering

Å lage prediksjonsfeilplottet med den tradisjonelle metoden er komplekst og tidkrevende. I stedet kan vi bruke Yellowbricks PredictionError-visualisering.

For å plotte et prediksjonsfeilplott i Yellowbirck, bruker vi Annonsering (Advertising.csv, Se Sitering på slutten) datasettet.

Følgende kode forklarer hvordan vi kan bruke Yellowbricks PredictionError-visualisering for å lage et restplott ved å bruke Annonsering datasett.

(Kode av forfatter)
Prediksjonsfeilplott (Bilde av forfatter)

Punktene er ikke akkurat på 45-graderslinjen, men modellen er god nok.

De viktigste parameterne til PredictionError-visualiseringen inkluderer:

  • estimator: Dette kan være hvilken som helst Scikit-learn-regressor.
  • identitet: bool, standard True. Om du skal tegne 45-graderslinjen.

bruk

Cooks avstand måler virkningen av forekomster på lineær regresjon. Forekomster med stor påvirkning anses som uteliggere. Et datasett med et stort antall uteliggere er ikke egnet for lineær regresjon uten forbehandling. Kokkens avstandsplott brukes ganske enkelt til å oppdage uteliggere i datasettet.

Yellowbrick implementering

Å lage kokkens avstandsplott med den tradisjonelle metoden er komplekst og tidkrevende. I stedet kan vi bruke Yellowbricks CooksDistance-visualizer.

For å plotte en Cook's distance plot i Yellowbirck, bruker vi Annonsering (Advertising.csv, Se Sitering på slutten) datasettet.

Følgende kode forklarer hvordan vi kan bruke Yellowbricks CooksDistance-visualisering for å lage en Cooks avstandsplott ved å bruke Annonsering datasett.

(Kode av forfatter)
Cook's Distance Plot (Bilde av forfatter)

Det er noen observasjoner som utvider terskellinjen (horisontal rød). De er uteliggere. Så vi bør forberede dataene før vi lager noen regresjonsmodell.

De viktigste parametrene til CooksDistance-visualiseringen inkluderer:

  • draw_threshold: bool, standard True. Om terskellinjen skal trekkes.

bruk

Plottet for funksjonsviktigheter brukes til å velge minimum nødvendige viktige funksjoner for å produsere en ML-modell. Siden ikke alle funksjoner bidrar likt til modellen, kan vi fjerne mindre viktige funksjoner fra modellen. Det vil redusere kompleksiteten til modellen. Enkle modeller er enkle å trene og tolke.

Plottet for funksjonens betydning visualiserer den relative viktigheten av hver funksjon.

Yellowbrick implementering

Det er komplisert og tidkrevende å lage plottet med viktige funksjoner med den tradisjonelle metoden. I stedet kan vi bruke Yellowbricks FeatureImportances-visualisering.

For å plotte et plott med viktigheter i Yellowbirck, bruker vi brystkreft datasett (se Sitering på slutten) som inneholder 30 funksjoner.

Følgende kode forklarer hvordan vi kan bruke Yellowbricks FeatureImportances-visualisering for å lage et plott for funksjonsviktigheter ved å bruke brystkreft datasett.

(Kode av forfatter)
Funksjon Viktigheter Plot (Bilde av forfatter)

Ikke alle 30 funksjonene i datasettet er mye bidratt til modellen. Vi kan fjerne funksjonene med små søyler fra datasettet og tilpasse modellen med utvalgte funksjoner.

De viktigste parametrene til Visualizer FeatureImportances inkluderer:

  • estimator: Noen Scikit-learn estimator som støtter enten feature_importances_ attributt eller coef_ attributt.
  • slektning: bool, standard True. Om du skal plotte relativ betydning i prosent. Hvis False, vises den rå numeriske poengsummen for funksjonens betydning.
  • absolutt: bool, standard False. Om man kun skal vurdere størrelsen på koeffisientene ved å unngå negative fortegn.
  1. Hovedkomponentplot: PCA(), Bruk — Visualiserer høydimensjonale data i et 2D- eller 3D-spredningsplott som kan brukes til å identifisere viktige mønstre i høydimensjonale data.
  2. Valideringskurve: Valideringskurve(), Bruk — plotter innvirkningen av en enkelt hyperparameter på toget og valideringssett.
  3. Læringskurve: Læringskurve(), Bruk — oppdager undermontering, overtilpassing og akkurat passe betingelser for en modell, identifiserer slav konvergens, oscillerende, oscillerende med divergens og riktig konvergens scenarier når du finner den optimale læringshastigheten til et nevralt nettverk, Viser hvor mye vår modell drar nytte av å legge til flere treningsdata.
  4. Albueplott: KEbowVisualizer(), Bruk — Velger det optimale antallet klynger i K-Means-klynger.
  5. Silhouette Plot: SilhouetteVisualizer(), Bruk — Velger det optimale antallet klynger i K-Means-klynger, oppdager klyngeubalanse i K-Means-klynger.
  6. Klasseubalanseplott: ClassBalance(), Bruk — Oppdager ubalansen til klasser i målkolonnen i klassifikasjonsdatasett.
  7. Rester Plot: ResidualsPlot(), Bruk — Bestemmer om residualene (observerte verdier-predikerte verdier) er ukorrelerte (uavhengige) ved å analysere variansen av feil i en regresjonsmodell.
  8. Prediksjonsfeilplott: PredictionError(), Bruk — En grafisk metode som brukes til å evaluere en regresjonsmodell.
  9. Cook's Distance Plot: CooksDistance(), Bruk — Oppdager uteliggere i datasettet basert på kokkens avstander til forekomster.
  10. Plott for funksjonsviktigheter: FeatureIportances(), Bruk — Velger minimum nødvendige viktige funksjoner basert på den relative betydningen av hver funksjon for å produsere en ML-modell.

Dette er slutten på dagens innlegg.

Gi meg beskjed hvis du har spørsmål eller tilbakemeldinger.

Les neste (anbefalt)

  • Yellowbrick for å visualisere funksjonenes betydning ved å bruke en enkelt kodelinje
  • Valideringskurve forklart — Plott innflytelsen til en enkelt hyperparameter
  • Plotte læringskurven for å analysere treningsytelsen til et nevralt nettverk
  • Hands-On K-Means Clustering

Støtt meg som forfatter

Jeg håper du likte å lese denne artikkelen. Hvis du vil støtte meg som forfatter, vennligst vurder registrere et medlemskap for å få ubegrenset tilgang til Medium. Det koster bare $5 per måned, og jeg vil motta en del av medlemsavgiften din.

Tusen takk for din kontinuerlige støtte! Vi sees i neste artikkel. God læring til alle!

Informasjon om brystkreftdatasett

  • Sitering: Dua, D. og Graff, C. (2019). UCI Machine Learning Repository [http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science.
  • kilde: https://archive.ics.uci.edu/ml/datasets/breast+cancer+wisconsin+(diagnostic)
  • Tillatelse: Dr. William H. Wolberg (Generell kirurgisk avd.
    University of Wisconsin), W. Nick Street (Datavitenskapsavdelingen
    University of Wisconsin) og Olvi L. Mangasarian (Computer Sciences Dept. University of Wisconsin) har opphavsretten til dette datasettet. Nick Street donerte dette datasettet til publikum under Creative Commons Attribution 4.0 Internasjonal lisens (CC BY 4.0). Du kan lære mer om ulike datasettlisenstyper her..

Iris datasett info

  • Sitering: Dua, D. og Graff, C. (2019). UCI Machine Learning Repository [http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science.
  • kilde: https://archive.ics.uci.edu/ml/datasets/iris
  • Tillatelse: RA Fisher har opphavsretten til dette datasettet. Michael Marshall donerte dette datasettet til publikum under Creative Commons Public Domain Dedication License (CC0). Du kan lære mer om ulike datasettlisenstyper her..

Informasjon om annonsedatasett

Referanser

10 fantastiske maskinlæringsvisualiseringer du bør kjenne til i 2023, publisert på nytt fra kilde https://towardsdatascience.com/10-amazing-machine-learning-visualizations-you-should-know-in-2023-528282940582?source=rss—-7cf—60cf 5620 via https://towardsdatascience.com/feed

<!–

->

Tidstempel:

Mer fra Blockchain-konsulenter