10 fantastiske maskinlæringsvisualiseringer, du bør kende i 2023

Yellowbrick for creating machine learning plots with less code

Photo by David Pisnoy on Unsplash

Datavisualisering spiller en vigtig rolle i maskinlæring.

Datavisualiseringsbrug i maskinlæring omfatter:

  • Tuning af hyperparametre
  • Model præstationsevaluering
  • Validering af modelantagelser
  • At finde outliers
  • Valg af de vigtigste funktioner
  • Identifikation af mønstre og sammenhænge mellem funktioner

Visualiseringer, der er direkte relateret til ovenstående nøgleting i maskinlæring kaldes maskinlæringsvisualiseringer.

At skabe maskinlæringsvisualiseringer er nogle gange en kompliceret proces, da det kræver meget kode at skrive selv i Python. Men takket være Pythons open source Gul mursten bibliotek, kan selv komplekse maskinlæringsvisualiseringer oprettes med mindre kode. Dette bibliotek udvider Scikit-learn API og giver funktioner på højt niveau til visuel diagnostik, som ikke leveres af Scikit-learn.

I dag vil jeg diskutere følgende typer af maskinlæringsvisualiseringer, deres anvendelsestilfælde og Yellowbrick-implementering i detaljer.

Yellowbrick ML Visualizations
-----------------------------
01. Priniciapal Component Plot
02. Validation Curve
03. Indlæringskurve
04. Elbow Plot
05. Silhouette Plot
06. Class Imbalance Plot
07. Residuals Plot
08. Prediction Error Plot
09. Cook’s Distance Plot
10. Feature Importances Plot

Installation

Installation af Yellowbrick kan udføres ved at køre en af ​​følgende kommandoer.

  • pip pakke installationsprogram:
pip install yellowbrick
  • Conda pakke installationsprogram:
conda install -c districtdatalabs yellowbrick

Bruger Yellowbrick

Yellowbrick-visualizere har Scikit-learn-lignende syntaks. En visualizer er et objekt, der lærer af data for at producere en visualisering. Det bruges ofte sammen med en Scikit-learn estimator. For at træne en visualizer kalder vi dens fit()-metode.

Redder plottet

For at gemme et plot, der er oprettet ved hjælp af en Yellowbrick-visualizer, kalder vi show()-metoden som følger. Dette vil gemme plottet som en PNG-fil på disken.

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

Brug

Hovedkomponentplot visualiserer højdimensionelle data i et 2D- eller 3D-spredningsplot. Derfor er dette plot ekstremt nyttigt til at identificere vigtige mønstre i højdimensionelle data.

Yellowbrick implementering

At skabe dette plot med den traditionelle metode er komplekst og tidskrævende. Vi skal først anvende PCA på datasættet og derefter bruge matplotlib-biblioteket til at oprette spredningsplottet.

I stedet kan vi bruge Yellowbricks PCA-visualizer-klasse til at opnå den samme funktionalitet. Den anvender den primære komponentanalysemetode, reducerer datasættets dimensionalitet og skaber et scatter-plot med 2 eller 3 linjer kode! Det eneste, vi skal gøre, er at angive nogle søgeordsargumenter i PCA()-klassen.

Lad os tage et eksempel for yderligere at forstå dette. Her bruger vi brystkræft datasæt (se Citation i slutningen), som har 30 funktioner og 569 prøver af to klasser (Malign , Benign). På grund af den høje dimensionalitet (30 funktioner) i dataene, er det umuligt at plotte de originale data i et 2D- eller 3D-spredningsplot, medmindre vi anvender PCA til datasættet.

Den følgende kode forklarer, hvordan vi kan bruge Yellowbricks PCA-visualizer til at skabe et 2D-spredningsplot af et 30-dimensionelt datasæt.

(Code by author)
Principal Component Plot — 2D (Image by autr)

Vi kan også lave et 3D scatter plot ved at indstille projection=3i PCA()-klassen.

(Code by author)
Principal Component Plot — 3D (Image by author)

De vigtigste parametre i PCA-visualizeren inkluderer:

  • vægt: bool, standard True. Dette angiver, om dataene skal skaleres eller ej. Vi bør skalere data, før vi kører PCA. Lær mere om link..
  • fremspring: int, standard er 2. Hvornår projection=2, oprettes et 2D-spredningsplot. Hvornår projection=3, oprettes et 3D-spredningsplot.
  • klasser: liste, standard None. Dette angiver klassebetegnelserne for hver klasse i y. Klassenavnene vil være etiketterne for forklaringen.

Brug

Valideringskurven plotter indflydelsen af ​​en enkelt hyperparameter på toget og valideringssættet. Ved at se på kurven kan vi bestemme modellens overtilpasning, undertilpasning og helt rigtige forhold for de angivne værdier af den givne hyperparameter. Når der er flere hyperparametre, der skal indstilles på én gang, kan valideringskurven ikke bruges. Indstillet kan du bruge gittersøgning eller tilfældig søgning.

Yellowbrick implementering

At skabe en valideringskurve med den traditionelle metode er kompleks og tidskrævende. I stedet kan vi bruge Yellowbricks ValidationCurve-visualizer.

For at plotte en valideringskurve i Yellowbirck bygger vi en tilfældig skovklassifikator ved hjælp af den samme brystkræft datasæt (se Citation i slutningen). Vi vil plotte indflydelsen af max_depth hyperparameter i den tilfældige skovmodel.

Følgende kode forklarer, hvordan vi kan bruge Yellowbricks ValidationCurve-visualizer til at oprette en valideringskurve ved hjælp af brystkræft datasæt.

(Code by author)
Validation Curve (Image by author)

Modellen begynder at overfitte efter max_depth værdi af 6. Hvornår max_depth=6, modellen passer meget godt til træningsdataene og generaliserer også godt på nye usete data.

De vigtigste parametre i ValidationCurve-visualizeren inkluderer:

  • estimator: Dette kan være enhver Scikit-learn ML-model, såsom et beslutningstræ, tilfældig skov, støttevektormaskine osv.
  • param_navn: Dette er navnet på hyperparameteren, som vi ønsker at overvåge.
  • param_range: Dette inkluderer de mulige værdier for param_navn.
  • cv: int, definerer antallet af folder for krydsvalideringen.
  • scoring: snor, indeholder metoden til scoring af modellen. Til klassificering, nøjagtighed er foretrukket.

Brug

Indlæringskurven plotter trænings- og valideringsfejl eller nøjagtighed mod antallet af epoker eller antallet af træningstilfælde. Du tror måske, at både indlæringskurver og valideringskurver fremstår ens, men antallet af iterationer er plottet i indlæringskurvens x-akse, mens værdierne af hyperparameteret er plottet i valideringskurvens x-akse.

Indlæringskurvens anvendelser omfatter:

  • Indlæringskurven bruges til at detektere undertilpasning, overmontering , helt rigtigt modellens betingelser.
  • Læringskurven bruges til at identificere slow convergence, oscillerende, oscillerende med divergens , ordentlig konvergens scenarier, når man finder den optimale indlæringshastighed for et neuralt netværk eller ML-model.
  • Læringskurven bruges til at se, hvor meget vores model har gavn af at tilføje flere træningsdata. Når den bruges på denne måde, viser x-aksen antallet af træningstilfælde.

Yellowbrick implementering

At skabe læringskurven med den traditionelle metode er kompleks og tidskrævende. I stedet kan vi bruge Yellowbricks LearningCurve visualizer.

For at plotte en indlæringskurve i Yellowbirck bygger vi en støttevektorklassifikator ved hjælp af den samme brystkræft datasæt (se Citation i slutningen).

Følgende kode forklarer, hvordan vi kan bruge Yellowbricks LearningCurve visualizer til at oprette en valideringskurve ved hjælp af brystkræft datasæt.

(Code by author)
Indlæringskurve (Image by author)

Modellen vil ikke have gavn af at tilføje flere træningsinstanser. Modellen er allerede trænet med 569 træningsinstanser. Valideringsnøjagtigheden er ikke blevet bedre efter 175 træningstilfælde.

De vigtigste parametre i LearningCurve visualizer inkluderer:

  • estimator: Dette kan være enhver Scikit-learn ML-model, såsom et beslutningstræ, tilfældig skov, støttevektormaskine osv.
  • cv: int, definerer antallet af folder for krydsvalideringen.
  • scoring: snor, indeholder metoden til scoring af modellen. Til klassificering, nøjagtighed er foretrukket.

Brug

Albueplottet bruges til at vælge det optimale antal klynger i K-Means-klynger. Modellen passer bedst på det punkt, hvor albuen optræder i linjediagrammet. Albuen er bøjningspunktet på diagrammet.

Yellowbrick implementering

At skabe Elbow-plottet med den traditionelle metode er komplekst og tidskrævende. I stedet kan vi bruge Yellowbricks KEbowVisualizer.

For at plotte en indlæringskurve i Yellowbirck bygger vi en K-Means klyngemodel ved hjælp af iris datasæt (se Citation i slutningen).

Den følgende kode forklarer, hvordan vi kan bruge Yellowbrick's KEbowVisualizer til at skabe et albueplot ved hjælp af iris datasæt.

(Code by author)
Elbow Plot (Image by author)

albue forekommer ved k=4 (annoteret med en stiplet linje). Plottet indikerer, at det optimale antal klynger for modellen er 4. Med andre ord er modellen godt tilpasset med 4 klynger.

De vigtigste parametre for KEbowVisualizer inkluderer:

  • estimator: K-Means modelforekomst
  • k: int eller tuple. Hvis et heltal, vil det beregne score for klynger i området (2, k). Hvis en tuple, vil den beregne score for klyngerne i det givne område, for eksempel (3, 11).

Brug

Silhuet-plottet bruges til at vælge det optimale antal klynger i K-Means-klynger og også til at detektere klyngeubalance. Dette plot giver meget nøjagtige resultater end albueplottet.

Yellowbrick implementering

At skabe silhuetplottet med den traditionelle metode er komplekst og tidskrævende. I stedet kan vi bruge Yellowbricks SilhouetteVisualizer.

For at skabe et silhuetplot i Yellowbirck bygger vi en K-Means klyngemodel ved hjælp af iris datasæt (se Citation i slutningen).

De følgende kodeblokke forklarer, hvordan vi kan bruge Yellowbrick's SilhouetteVisualizer til at skabe silhuetplot ved hjælp af iris datasæt med forskellige k (antal klynger) værdier.

k = 2

(Code by author)
Silhouette Plot with 2 Clusters (k=2), (Image by author)

Ved at ændre antallet af klynger i klassen KMeans() kan vi udføre ovenstående kode på forskellige tidspunkter for at skabe silhuetplot, når k=3, k=4 og k=5.

k = 3

Silhouette Plot with 3 Clusters (k=3), (Image by author)

k = 4

Silhouette Plot with 4 Clusters (k=4), (Image by author)

k = 5

Silhouette Plot with 4 Clusters (k=5), (Image by author)

Silhuet-plottet indeholder en knivform pr. klynge. Hver knivform er skabt af søjler, der repræsenterer alle datapunkterne i klyngen. Så bredden af ​​en knivform repræsenterer antallet af alle forekomster i klyngen. Stængelængden repræsenterer silhuetkoefficienten for hver instans. Den stiplede linje angiver silhuetresultatet — Kilde: Hands-On K-Means Clustering (skrevet af mig).

Et plot med nogenlunde lige store bredder af knivformer fortæller os, at klyngerne er velafbalancerede og har nogenlunde det samme antal forekomster inden for hver klynge - en af ​​de vigtigste antagelser i K-Means-klyngning.

Når stængerne i en knivform forlænger den stiplede linje, er klyngerne godt adskilt - en anden vigtig antagelse i K-Means-klynger.

Når k=3 er klyngerne velafbalancerede og godt adskilte. Så det optimale antal klynger i vores eksempel er 3.

De vigtigste parametre for SilhouetteVisualizer inkluderer:

  • estimator: K-Means modelforekomst
  • farver: snor, en samling af farver, der bruges til hver knivform. 'yellowbrick' eller en af ​​Matplotlib farvekortstrenge såsom 'Accent', 'Set1' osv.

Brug

Klasseubalanceplottet registrerer ubalancen af ​​klasser i målkolonnen i klassifikationsdatasæt.

Klasseubalance opstår, når en klasse har væsentligt flere forekomster end den anden klasse. For eksempel har et datasæt relateret til spam-e-maildetektion 9900 forekomster for kategorien "Ikke spam" og kun 100 forekomster for kategorien "Spam". Modellen vil ikke fange minoritetsklassen (den Spam kategori). Som et resultat af dette vil modellen ikke være nøjagtig til at forudsige minoritetsklassen, når der opstår en klasseubalance — Kilde: Top 20 Machine Learning og Deep Learning fejl, der i hemmelighed sker bag kulisserne (skrevet af mig).

Yellowbrick implementering

At skabe klasseubalanceplottet med den traditionelle metode er komplekst og tidskrævende. I stedet kan vi bruge Yellowbricks ClassBalance visualizer.

For at plotte et klasseubalanceplot i Yellowbirck bruger vi brystkræft datasæt (klassifikationsdatasæt, se Citation i slutningen).

Den følgende kode forklarer, hvordan vi kan bruge Yellowbricks ClassBalance-visualizer til at skabe et klasseubalanceplot ved hjælp af brystkræft datasæt.

(Code by author)
Class Imbalance Plot (Image by author)

Der er mere end 200 tilfælde i Malign klasse og mere end 350 forekomster i Benign klasse. Derfor kan vi ikke se meget klasseubalance her, selvom instanserne ikke er ligeligt fordelt mellem de to klasser.

De vigtigste parametre i ClassBalance visualizer inkluderer:

  • etiketter: liste, navnene på de unikke klasser i målkolonnen.

Brug

Residualplottet i lineær regression bruges til at bestemme, om residualerne (observerede værdier-forudsagte værdier) er ukorrelerede (uafhængige) ved at analysere variansen af ​​fejl i en regressionsmodel.

Residualplottet skabes ved at plotte residualerne mod forudsigelserne. Hvis der er nogen form for mønster mellem forudsigelser og residualer, bekræfter det, at den tilpassede regressionsmodel ikke er perfekt. Hvis punkterne er tilfældigt spredt rundt om x-aksen, passer regressionsmodellen godt til dataene.

Yellowbrick implementering

Det er komplekst og tidskrævende at skabe restplottet med den traditionelle metode. I stedet kan vi bruge Yellowbricks ResidualsPlot visualizer.

For at plotte et residualplot i Yellowbirck bruger vi Reklame (Advertising.csvSe Citation i slutningen) datasæt.

Følgende kode forklarer, hvordan vi kan bruge Yellowbrick's ResidualsPlot-visualizer til at skabe et residualplot ved hjælp af Reklame datasæt.

(Code by author)
Residuals Plot (Image by author)

Vi kan tydeligt se en form for ikke-lineært mønster mellem forudsigelser og residualer i residualplottet. Den tilpassede regressionsmodel er ikke perfekt, men den er god nok.

De vigtigste parametre i ResidualsPlot-visualizeren inkluderer:

  • estimator: Dette kan være enhver Scikit-learn regressor.
  • hist: bool, standard True. Om der skal plottes histogrammet af residualer, som bruges til at kontrollere en anden antagelse — Residualerne er tilnærmelsesvis normalfordelte med middelværdien 0 og en fast standardafvigelse.

Brug

Forudsigelsesfejlplot i lineær regression er en grafisk metode, der bruges til at evaluere en regressionsmodel.

Forudsigelsesfejlsplottet oprettes ved at plotte forudsigelserne mod de faktiske målværdier.

Hvis modellen laver meget præcise forudsigelser, skal punkterne være på 45-graderslinjen. Ellers er punkterne spredt rundt om den linje.

Yellowbrick implementering

Oprettelse af forudsigelsesfejlplot med den traditionelle metode er kompleks og tidskrævende. I stedet kan vi bruge Yellowbricks PredictionError-visualizer.

For at plotte et forudsigelsesfejlplot i Yellowbirck bruger vi Reklame (Advertising.csvSe Citation i slutningen) datasæt.

Følgende kode forklarer, hvordan vi kan bruge Yellowbrick's PredictionError-visualizer til at skabe et residualplot ved hjælp af Reklame datasæt.

(Code by author)
Prediction Error Plot (Image by author)

Punkterne er ikke lige på 45 graders linjen, men modellen er god nok.

De vigtigste parametre i PredictionError-visualizeren inkluderer:

  • estimator: Dette kan være enhver Scikit-learn regressor.
  • identitet: bool, standard True. Om man skal tegne 45-graderslinjen.

Brug

The Cook's distance måler virkningen af ​​instanser på lineær regression. Forekomster med stor påvirkning betragtes som outliers. Et datasæt med et stort antal outliers er ikke egnet til lineær regression uden forbehandling. Kokkens afstandsplot bruges simpelthen til at detektere afvigere i datasættet.

Yellowbrick implementering

At skabe kokkens afstandsplot med den traditionelle metode er komplekst og tidskrævende. I stedet kan vi bruge Yellowbricks CooksDistance visualizer.

For at plotte en Cook's distance plot i Yellowbirck bruger vi Reklame (Advertising.csvSe Citation i slutningen) datasæt.

Følgende kode forklarer, hvordan vi kan bruge Yellowbrick's CooksDistance-visualizer til at oprette et Cook's distance-plot ved hjælp af Reklame datasæt.

(Code by author)
Cook’s Distance Plot (Image by author)

Der er nogle observationer, der udvider tærskellinjen (vandret rød). De er outliers. Så vi bør forberede dataene, før vi laver nogen regressionsmodel.

De vigtigste parametre i CooksDistance visualizer inkluderer:

  • draw_threshold: bool, standard True. Om tærskellinjen skal trækkes.

Brug

Funktionsvigtighedsplottet bruges til at vælge de mindst nødvendige vigtige funktioner for at producere en ML-model. Da ikke alle funktioner bidrager det samme til modellen, kan vi fjerne mindre vigtige funktioner fra modellen. Det vil reducere kompleksiteten af ​​modellen. Simple modeller er nemme at træne og fortolke.

Plottet med træk vigtighed visualiserer den relative betydning af hver funktion.

Yellowbrick implementering

Det er komplekst og tidskrævende at skabe plottet med vigtige funktioner med den traditionelle metode. I stedet kan vi bruge Yellowbricks FeatureImportances visualizer.

For at plotte et plot med vigtighed af funktioner i Yellowbirck, bruger vi brystkræft datasæt (se Citation i slutningen), som indeholder 30 funktioner.

Følgende kode forklarer, hvordan vi kan bruge Yellowbrick's FeatureImportances-visualizer til at skabe et plot med vigtighed af funktioner ved hjælp af brystkræft datasæt.

(Code by author)
Feature Importances Plot (Image by author)

Ikke alle 30 funktioner i datasættet er meget bidraget til modellen. Vi kan fjerne funktionerne med små streger fra datasættet og ombygge modellen med udvalgte funktioner.

De vigtigste parametre i FeatureImportances visualizer inkluderer:

  • estimator: Enhver Scikit-learn estimator, der understøtter enten feature_importances_ attribut eller coef_ attribut.
  • i forhold: bool, standard True. Om relativ betydning skal plottes i procent. Hvis False, vises den rå numeriske score for trækets betydning.
  • absolut: bool, standard False. Om man kun skal overveje størrelsen af ​​koefficienter ved at undgå negative fortegn.
  1. Hovedkomponentplot: PCA(), Anvendelse — Visualiserer højdimensionelle data i et 2D- eller 3D-spredningsplot, som kan bruges til at identificere vigtige mønstre i højdimensionelle data.
  2. Valideringskurve: ValidationCurve(), Brug — Tegner indflydelsen af ​​en enkelt hyperparameter på toget og valideringssættet.
  3. Indlæringskurve: Indlæringskurve(), Brug — Registrerer undertilpasning, overmontering , helt rigtigt betingelser for en model, Identificerer slow convergence, oscillerende, oscillerende med divergens , ordentlig konvergens scenarier, når man finder den optimale indlæringshastighed for et neuralt netværk, Viser, hvor meget vores model har gavn af at tilføje flere træningsdata.
  4. Albue plot: KEbowVisualizer(), Brug — Vælger det optimale antal klynger i K-Means-klynger.
  5. Silhouette plot: SilhouetteVisualizer(), Brug — Vælger det optimale antal klynger i K-Means-klynger, registrerer klyngeubalance i K-Means-klynger.
  6. Klasse ubalance plot: ClassBalance(), Brug — Registrerer ubalancen mellem klasser i målkolonnen i klassifikationsdatasæt.
  7. Rester Plot: ResidualsPlot(), Usage — Bestemmer, om residualerne (observerede værdier-forudsagte værdier) er ukorrelerede (uafhængige) ved at analysere variansen af ​​fejl i en regressionsmodel.
  8. Forudsigelsesfejlplot: PredictionError(), Usage — En grafisk metode, der bruges til at evaluere en regressionsmodel.
  9. Cook's Distance plot: CooksDistance(), Brug — Detekterer afvigelser i datasættet baseret på kokkens afstande til instanser.
  10. Plot med funktioners betydning: FeatureIportances(), Brug — Vælger de mindst nødvendige vigtige funktioner baseret på den relative betydning af hver funktion for at producere en ML-model.

Dette er slutningen på dagens indlæg.

Fortæl mig venligst, hvis du har spørgsmål eller feedback.

Read next (Recommended)

  • Yellowbrick for Visualizing Features’ Importances Using a Single Line of Code
  • Validation Curve Explained — Plot the influence of a single hyperparameter
  • Plotting the Learning Curve to Analyze the Training Performance of a Neural Network
  • Hands-On K-Means Clustering

Support me as a writer

I hope you enjoyed reading this article. If you’d like to support me as a writer, kindly consider signing up for a membership to get unlimited access to Medium. It only costs $5 per month and I will receive a portion of your membership fee.

Thank you so much for your continuous support! See you in the next article. Happy learning to everyone!

Datasæt om brystkræft

  • Citation: 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)
  • Licens: Dr. William H. Wolberg (Almen kirurgisk afd.
    University of Wisconsin), W. Nick Street (Computervidenskab Afd.
    University of Wisconsin) og Olvi L. Mangasarian (Computer Sciences Dept. University of Wisconsin) har ophavsretten til dette datasæt. Nick Street donerede dette datasæt til offentligheden under Creative Commons Attribution 4.0 International licens (CC BY 4.0). Du kan lære mere om forskellige datasætlicenstyper link..

Iris datasæt info

  • Citation: 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
  • Licens: RA Fisher har ophavsretten til dette datasæt. Michael Marshall donerede dette datasæt til offentligheden under Creative Commons Public Domain Dedication License (CC0). Du kan lære mere om forskellige datasætlicenstyper link..

Annoncedatasæt info

Referencer

10 Amazing Machine Learning Visualizations You Should Know in 2023 Republished from Source https://towardsdatascience.com/10-amazing-machine-learning-visualizations-you-should-know-in-2023-528282940582?source=rss—-7f60cf5620c9—4 via https://towardsdatascience.com/feed

<!–

->

Tidsstempel:

Mere fra Blockchain-konsulenter