10 fantastiska maskininlärningsvisualiseringar du bör känna till 2023

Yellowbrick för att skapa maskininlärningsplots med mindre kod

Foto: David Pisnoy on Unsplash

Datavisualisering spelar en viktig roll i maskininlärning.

Användningsfall för datavisualisering i maskininlärning inkluderar:

  • Hyperparameterjustering
  • Utvärdering av modellprestanda
  • Validera modellantaganden
  • Hitta avvikare
  • Välja de viktigaste funktionerna
  • Identifiera mönster och samband mellan egenskaper

Visualiseringar som är direkt relaterade till ovanstående nyckelsaker inom maskininlärning kallas visualiseringar för maskininlärning.

Att skapa visualiseringar för maskininlärning är ibland en komplicerad process eftersom det kräver mycket kod att skriva även i Python. Men tack vare Pythons öppen källkod Yellowbrick bibliotek, även komplexa maskininlärningsvisualiseringar kan skapas med mindre kod. Det biblioteket utökar Scikit-learn API och tillhandahåller funktioner på hög nivå för visuell diagnostik som inte tillhandahålls av Scikit-learn.

Idag kommer jag att diskutera följande typer av maskininlärningsvisualiseringar, deras användningsfall och Yellowbrick-implementering i detalj.

Yellowbrick ML-visualiseringar
-----------------------------
01. Priniciapal Component Plot
02. Valideringskurva
03. Inlärningskurva
04. Armbågsplot
05. Silhouette Plot
06. Klass Obalans Plot
07. Rester Plot
08. Plott för prediktionsfel
09. Cook's Distance Plot
10. Funktionsviktigheter Plot

Installation

Installation av Yellowbrick kan göras genom att köra ett av följande kommandon.

  • pip paketinstallationsprogram:
pip installera yellowbrick
  • Conda paketinstallationsprogram:
conda installera -c districtdatalabs yellowbrick

Använder Yellowbrick

Yellowbrick-visualiserare har Scikit-lär-liknande syntax. En visualizer är ett objekt som lär sig av data för att producera en visualisering. Det används ofta med en Scikit-learn estimator. För att träna en visualizer kallar vi dess fit()-metod.

Sparar tomten

För att spara en plot skapad med hjälp av en Yellowbrick-visualiserare kallar vi metoden show() enligt följande. Detta kommer att spara plottet som en PNG-fil på disken.

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

Användning

Huvudkomponentdiagrammet visualiserar högdimensionell data i ett 2D- eller 3D-spridningsdiagram. Därför är denna plot extremt användbar för att identifiera viktiga mönster i högdimensionella data.

Yellowbrick implementering

Att skapa denna handling med den traditionella metoden är komplext och tidskrävande. Vi måste först tillämpa PCA på datasetet och sedan använda matplotlib-biblioteket för att skapa spridningsdiagrammet.

Istället kan vi använda Yellowbricks PCA-visualiseringsklass för att uppnå samma funktionalitet. Den använder den huvudsakliga komponentanalysmetoden, minskar dimensionaliteten hos datamängden och skapar spridningsdiagrammet med 2 eller 3 rader kod! Allt vi behöver göra är att ange några nyckelordsargument i klassen PCA().

Låt oss ta ett exempel för att ytterligare förstå detta. Här använder vi bröstcancer dataset (se Citat i slutet) som har 30 funktioner och 569 prover av två klasser (Malign och Godartad). På grund av den höga dimensionaliteten (30 funktioner) i data, är det omöjligt att plotta originaldata i ett 2D- eller 3D-spridningsdiagram om vi inte tillämpar PCA på datamängden.

Följande kod förklarar hur vi kan använda Yellowbricks PCA-visualiserare för att skapa ett 2D-spridningsdiagram av en 30-dimensionell datauppsättning.

(Kod av författare)
Huvudkomponentplot — 2D (Bild av autr)

Vi kan också skapa en 3D-spridningsplot genom inställning projection=3i PCA()-klassen.

(Kod av författare)
Huvudkomponentplot — 3D (Bild av författare)

De viktigaste parametrarna för PCA-visualiseraren inkluderar:

  • skala: bool, standard True. Detta indikerar om data ska skalas eller inte. Vi bör skala data innan vi kör PCA. Lära sig mer om här..
  • utsprång: int, standard är 2. När projection=2skapas ett 2D-spridningsdiagram. När projection=3skapas ett 3D-spridningsdiagram.
  • klasser: lista, standard None. Detta anger klassetiketterna för varje klass i y. Klassnamnen kommer att vara etiketterna för legenden.

Användning

Valideringskurvan plottar inverkan av a enda hyperparameter på tåget och valideringsuppsättning. Genom att titta på kurvan kan vi bestämma modellens överanpassning, underanpassning och precis rätt villkor för de angivna värdena för den givna hyperparametern. När det finns flera hyperparametrar att ställa in samtidigt kan valideringskurvan inte användas. Instated, du kan använda rutnätssökning eller slumpmässig sökning.

Yellowbrick implementering

Att skapa en valideringskurva med den traditionella metoden är komplext och tidskrävande. Istället kan vi använda Yellowbricks ValidationCurve-visualiserare.

För att rita en valideringskurva i Yellowbirck bygger vi en slumpmässig skogsklassificerare med densamma bröstcancer dataset (se Citat i slutet). Vi kommer att plotta inflytandet av Max djup hyperparameter i den slumpmässiga skogsmodellen.

Följande kod förklarar hur vi kan använda Yellowbricks ValidationCurve-visualiserare för att skapa en valideringskurva med bröstcancer datasätt.

(Kod av författare)
Valideringskurva (Bild av författare)

Modellen börjar överfita efter Max djup värde på 6. När max_depth=6, modellen passar träningsdatan mycket väl och generaliserar även bra på nya osynliga data.

De viktigaste parametrarna för ValidationCurve visualizer inkluderar:

  • uppskattare: Detta kan vara vilken Scikit-learn ML-modell som helst som ett beslutsträd, slumpmässig skog, stödvektormaskin, etc.
  • param_name: Detta är namnet på hyperparametern som vi vill övervaka.
  • param_range: Detta inkluderar möjliga värden för param_name.
  • CV: int, definierar antalet veck för korsvalideringen.
  • poäng: sträng, innehåller metoden för poängsättning av modellen. För klassificering, noggrannhet Är föredraget.

Användning

Inlärningskurvan plottar tränings- och valideringsfelen eller noggrannheterna mot antalet epoker eller antalet träningstillfällen. Du kanske tror att både inlärnings- och valideringskurvor ser likadana ut, men antalet iterationer plottas i inlärningskurvans x-axel medan värdena på hyperparametern plottas i valideringskurvans x-axel.

Användningsområdena för inlärningskurvan inkluderar:

  • Inlärningskurvan används för att detektera undermontering, överanpassning och precis rätt modellens villkor.
  • Inlärningskurvan används för att identifiera slåg konvergens, oscillerande, oscillerande med divergens och korrekt konvergens scenarier när man hittar den optimala inlärningshastigheten för ett neuralt nätverk eller ML-modell.
  • Inlärningskurvan används för att se hur mycket vår modell tjänar på att lägga till mer träningsdata. När den används på detta sätt visar x-axeln antalet träningstillfällen.

Yellowbrick implementering

Att skapa inlärningskurvan med den traditionella metoden är komplext och tidskrävande. Istället kan vi använda Yellowbricks LearningCurve-visualiserare.

För att rita en inlärningskurva i Yellowbirck bygger vi en stödvektorklassificerare med densamma bröstcancer dataset (se Citat i slutet).

Följande kod förklarar hur vi kan använda Yellowbricks LearningCurve-visualiserare för att skapa en valideringskurva med hjälp av bröstcancer datasätt.

(Kod av författare)
Inlärningskurva (Bild av författare)

Modellen kommer inte att tjäna på att lägga till fler utbildningsinstanser. Modellen har redan tränats med 569 träningstillfällen. Valideringsnoggrannheten förbättras inte efter 175 träningstillfällen.

De viktigaste parametrarna i LearningCurve visualizer inkluderar:

  • uppskattare: Detta kan vara vilken Scikit-learn ML-modell som helst som ett beslutsträd, slumpmässig skog, stödvektormaskin, etc.
  • CV: int, definierar antalet veck för korsvalideringen.
  • poäng: sträng, innehåller metoden för poängsättning av modellen. För klassificering, noggrannhet Är föredraget.

Användning

Armbågsdiagrammet används för att välja det optimala antalet kluster i K-Means-kluster. Modellen passar bäst på den punkt där armbågen förekommer i linjediagrammet. Armbågen är böjningspunkten på diagrammet.

Yellowbrick implementering

Att skapa armbågsplotten med den traditionella metoden är komplext och tidskrävande. Istället kan vi använda Yellowbricks KEbowVisualizer.

För att rita en inlärningskurva i Yellowbirck bygger vi en K-Means-klustringsmodell med hjälp av iris dataset (se Citat i slutet).

Följande kod förklarar hur vi kan använda Yellowbricks KEbowVisualizer för att skapa en armbågsplot med hjälp av iris datasätt.

(Kod av författare)
Armbågsplot (Bild av författare)

Smakämnen armbåge inträffar vid k=4 (kommenteras med en streckad linje). Plottet indikerar att det optimala antalet kluster för modellen är 4. Modellen är med andra ord väl anpassad med 4 kluster.

De viktigaste parametrarna för KEbowVisualizer inkluderar:

  • uppskattare: K-Means modellinstans
  • k: int eller tupel. Om ett heltal kommer det att beräkna poäng för klustren inom området (2, k). Om en tupel kommer den att beräkna poängen för klustren i det givna området, till exempel (3, 11).

Användning

Siluettdiagrammet används för att välja det optimala antalet kluster i K-Means-kluster och även för att detektera klusterobalans. Denna plot ger mycket exakta resultat än armbågsplotten.

Yellowbrick implementering

Att skapa siluettplotten med den traditionella metoden är komplext och tidskrävande. Istället kan vi använda Yellowbricks SilhouetteVisualizer.

För att skapa en siluettplot i Yellowbirck, bygger vi en K-Means-klustringsmodell med hjälp av iris dataset (se Citat i slutet).

Följande kodblock förklarar hur vi kan använda Yellowbricks SilhouetteVisualizer för att skapa siluettplottar med hjälp av iris dataset med olika k-värden (antal kluster).

k = 2

(Kod av författare)
Silhouette Plot med 2 kluster (k=2), (Bild av författare)

Genom att ändra antalet kluster i klassen KMeans() kan vi exekvera ovanstående kod vid olika tidpunkter för att skapa siluettdiagram när k=3, k=4 och k=5.

k = 3

Silhouette Plot med 3 kluster (k=3), (Bild av författare)

k = 4

Silhouette Plot med 4 kluster (k=4), (Bild av författare)

k = 5

Silhouette Plot med 4 kluster (k=5), (Bild av författare)

Siluettplotten innehåller en knivform per kluster. Varje knivform skapas av staplar som representerar alla datapunkter i klustret. Så, bredden på en knivform representerar antalet av alla instanser i klustret. Stapelns längd representerar siluettkoefficienten för varje instans. Den streckade linjen indikerar siluettpoängen — Källa: Hands-On K-Means Clustering (skrivet av mig).

En plot med ungefär lika breda knivformer berättar att klustren är välbalanserade och har ungefär samma antal instanser inom varje kluster - ett av de viktigaste antagandena i K-Means-kluster.

När stängerna i en knivform förlänger den streckade linjen är klustren väl åtskilda - ett annat viktigt antagande i K-Means-klustring.

När k=3 är klustren välbalanserade och väl separerade. Så det optimala antalet kluster i vårt exempel är 3.

De viktigaste parametrarna för SilhouetteVisualizer inkluderar:

  • uppskattare: K-Means modellinstans
  • färger: string, en samling färger som används för varje knivform. 'yellowbrick' eller en av Matplotlib-färgkartasträngar som 'Accent', 'Set1', etc.

Användning

Klassobalansdiagrammet upptäcker obalansen för klasser i målkolumnen i klassificeringsdatauppsättningar.

Klassobalans uppstår när en klass har betydligt fler instanser än den andra klassen. Till exempel har en datauppsättning relaterad till skräppostdetektering 9900 instanser för kategorin "Inte skräppost" och bara 100 instanser för kategorin "Spam". Modellen kommer inte att fånga minoritetsklassen (den Spam kategori). Som ett resultat av detta kommer modellen inte att vara korrekt när det gäller att förutsäga minoritetsklassen när en klassobalans uppstår — Källa: Topp 20 maskininlärnings- och djupinlärningsmisstag som i hemlighet händer bakom kulisserna (skrivet av mig).

Yellowbrick implementering

Att skapa klassobalansdiagrammet med den traditionella metoden är komplext och tidskrävande. Istället kan vi använda Yellowbricks ClassBalance-visualiserare.

För att rita en klassobalansplot i Yellowbirck använder vi bröstcancer dataset (klassificeringsdatauppsättning, se Citat i slutet).

Följande kod förklarar hur vi kan använda Yellowbricks ClassBalance-visualiserare för att skapa en klassobalansplot med hjälp av bröstcancer datasätt.

(Kod av författare)
Klass Obalans Plot (Bild av författare)

Det finns mer än 200 instanser i Malign klass och mer än 350 instanser i Godartad klass. Därför kan vi inte se mycket klassobalans här även om instanserna inte är lika fördelade mellan de två klasserna.

De viktigaste parametrarna för ClassBalance visualizer inkluderar:

  • etiketter: lista, namnen på de unika klasserna i målkolumnen.

Användning

Residualploten i linjär regression används för att bestämma om residualerna (observerade värden-predikterade värden) är okorrelerade (oberoende) genom att analysera variansen av fel i en regressionsmodell.

Residualploten skapas genom att plotta residualerna mot förutsägelserna. Om det finns något slags mönster mellan förutsägelser och residualer, bekräftar det att den anpassade regressionsmodellen inte är perfekt. Om punkterna är slumpmässigt fördelade runt x-axeln passar regressionsmodellen väl med data.

Yellowbrick implementering

Det är komplext och tidskrävande att skapa restdiagrammet med den traditionella metoden. Istället kan vi använda Yellowbricks ResidualsPlot-visualiserare.

För att rita en restdiagram i Yellowbirck använder vi reklam (Advertising.csv, Se Citat i slutet) dataset.

Följande kod förklarar hur vi kan använda Yellowbricks ResidualsPlot-visualiserare för att skapa en residualplot med hjälp av reklam datasätt.

(Kod av författare)
Rester Plot (Bild av författare)

Vi kan tydligt se något slags icke-linjärt mönster mellan förutsägelser och residualer i residualdiagrammet. Den anpassade regressionsmodellen är inte perfekt, men den är tillräckligt bra.

De viktigaste parametrarna i ResidualsPlot-visualiseraren inkluderar:

  • uppskattare: Detta kan vara vilken Scikit-lärande regressor som helst.
  • hist: bool, standard True. Om histogrammet för residualer ska plottas, som används för att kontrollera ett annat antagande — Residualerna är ungefär normalfördelade med medelvärdet 0 och en fast standardavvikelse.

Användning

Prediktionsfelplotten i linjär regression är en grafisk metod som används för att utvärdera en regressionsmodell.

Prediktionsfeldiagrammet skapas genom att plotta prediktionerna mot de faktiska målvärdena.

Om modellen gör mycket exakta förutsägelser bör punkterna ligga på 45-graderslinjen. Annars är punkterna utspridda runt den linjen.

Yellowbrick implementering

Att skapa prediktionsfelplotten med den traditionella metoden är komplext och tidskrävande. Istället kan vi använda Yellowbricks PredictionError-visualiserare.

För att plotta en prediktionsfelplot i Yellowbirck använder vi reklam (Advertising.csv, Se Citat i slutet) dataset.

Följande kod förklarar hur vi kan använda Yellowbricks PredictionError-visualiserare för att skapa en residualplot med hjälp av reklam datasätt.

(Kod av författare)
Plott för prediktionsfel (Bild av författare)

Punkterna ligger inte precis på 45-graderslinjen, men modellen är tillräckligt bra.

De viktigaste parametrarna för PredictionError-visualiseraren inkluderar:

  • uppskattare: Detta kan vara vilken Scikit-lärande regressor som helst.
  • identitet: bool, standard True. Om man ska dra 45-graderslinjen.

Användning

Kockens avstånd mäter instansernas inverkan på linjär regression. Förekomster med stor påverkan betraktas som extremvärden. En datauppsättning med ett stort antal extremvärden är inte lämplig för linjär regression utan förbearbetning. Kockens avståndsdiagram används helt enkelt för att upptäcka extremvärden i datamängden.

Yellowbrick implementering

Att skapa Kockens distansplot med den traditionella metoden är komplext och tidskrävande. Istället kan vi använda Yellowbricks CooksDistance-visualiserare.

För att rita en kocks distansplot i Yellowbirck kommer vi att använda reklam (Advertising.csv, Se Citat i slutet) dataset.

Följande kod förklarar hur vi kan använda Yellowbricks CooksDistance-visualiserare för att skapa en Cooks distansplot med hjälp av reklam datasätt.

(Kod av författare)
Cook's Distance Plot (Bild av författare)

Det finns några observationer som förlänger tröskellinjen (horisontell röd). De är outliers. Så vi bör förbereda data innan vi gör någon regressionsmodell.

De viktigaste parametrarna för CooksDistance visualizer inkluderar:

  • draw_threshold: bool, standard True. Om man ska dra tröskellinjen.

Användning

Funktionsviktighetsdiagrammet används för att välja minsta nödvändiga viktiga funktioner för att producera en ML-modell. Eftersom inte alla funktioner bidrar på samma sätt till modellen kan vi ta bort mindre viktiga funktioner från modellen. Det kommer att minska komplexiteten i modellen. Enkla modeller är lätta att träna och tolka.

Funktionsviktighetsdiagrammet visualiserar de relativa betydelserna av varje funktion.

Yellowbrick implementering

Det är komplext och tidskrävande att skapa plotten för funktionsviktigheter med den traditionella metoden. Istället kan vi använda Yellowbricks Visualizer FeatureImportances.

För att plotta en plot av funktionsviktigheter i Yellowbirck använder vi bröstcancer dataset (se Citat i slutet) som innehåller 30 funktioner.

Följande kod förklarar hur vi kan använda Yellowbricks FeatureImportances-visualiserare för att skapa en funktionsviktsplot med hjälp av bröstcancer datasätt.

(Kod av författare)
Funktionsviktigheter Plot (Bild av författare)

Inte alla 30 funktionerna i datamängden har bidragit mycket till modellen. Vi kan ta bort funktionerna med små staplar från datasetet och utrusta modellen med utvalda funktioner.

De viktigaste parametrarna i Visualizer FeatureImportances inkluderar:

  • uppskattare: Vilken som helst Scikit-learn estimator som stöder antingen feature_importances_ attribut eller coef_ attribut.
  • släkting: bool, standard True. Huruvida relativ betydelse ska ritas i procent. Om False, visas den råa numeriska poängen för egenskapens betydelse.
  • absolut: bool, standard False. Om man endast ska överväga storleken på koefficienterna genom att undvika negativa tecken.
  1. Huvudkomponentdiagram: PCA(), Användning — Visualiserar högdimensionell data i ett 2D- eller 3D-spridningsdiagram som kan användas för att identifiera viktiga mönster i högdimensionella data.
  2. Valideringskurva: ValidationCurve(), Användning — Ritar inverkan av en enda hyperparameter på tåget och valideringsuppsättning.
  3. Inlärningskurva: Inlärningskurva(), Användning — Upptäcker undermontering, överanpassning och precis rätt villkor för en modell, Identifierar slåg konvergens, oscillerande, oscillerande med divergens och korrekt konvergens scenarier när man hittar den optimala inlärningshastigheten för ett neuralt nätverk, Visar hur mycket vår modell drar nytta av att lägga till mer träningsdata.
  4. Armbågsdiagram: KEbowVisualizer(), Användning — Väljer det optimala antalet kluster i K-Means-kluster.
  5. Silhouette Plot: SilhouetteVisualizer(), Användning — Väljer det optimala antalet kluster i K-Means-kluster, Detekterar klusterobalans i K-Means-kluster.
  6. Klass obalans plot: ClassBalance(), Användning — Upptäcker obalansen mellan klasser i målkolumnen i klassificeringsdatauppsättningar.
  7. Rester Plot: ResidualsPlot(), Användning — Bestämmer om residualerna (observerade värden-förutsagda värden) är okorrelerade (oberoende) genom att analysera variansen av fel i en regressionsmodell.
  8. Prediktionsfelplot: PredictionError(), Användning — En grafisk metod som används för att utvärdera en regressionsmodell.
  9. Cook's Distance plot: CooksDistance(), Användning — Upptäcker extremvärden i datamängden baserat på Cooks avstånd till instanser.
  10. Funktionsviktigheter plot: FeatureImportances(), Användning — Väljer minsta nödvändiga viktiga funktioner baserat på den relativa betydelsen av varje funktion för att producera en ML-modell.

Detta är slutet på dagens inlägg.

Vänligen meddela mig om du har några frågor eller feedback.

Läs nästa (rekommenderas)

  • Yellowbrick för att visualisera funktioners betydelser med en enda kodrad
  • Valideringskurva förklaras — Rita inverkan av en enskild hyperparameter
  • Rita inlärningskurvan för att analysera träningsprestanda för ett neuralt nätverk
  • Hands-On K-Means Clustering

Stöd mig som författare

Jag hoppas att du tyckte om att läsa den här artikeln. Om du vill stödja mig som författare, vänligen överväg teckna ett medlemskap för att få obegränsad tillgång till Medium. Det kostar bara $5 per månad och jag kommer att få en del av din medlemsavgift.

Tack så mycket för ditt kontinuerliga stöd! Vi ses i nästa artikel. Lycka till med lärandet till alla!

Datauppsättning för bröstcancer

  • Citation: Dua, D. och Graff, C. (2019). UCI Machine Learning Repository [http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science.
  • Källa: https://archive.ics.uci.edu/ml/datasets/breast+cancer+wisconsin+(diagnostic)
  • Licens: Dr William H. Wolberg (Allmän kirurgisk avd.
    University of Wisconsin), W. Nick Street (Datavetenskapliga avd.
    University of Wisconsin) och Olvi L. Mangasarian (Computer Sciences Dept. University of Wisconsin) innehar upphovsrätten till denna datauppsättning. Nick Street donerade denna datauppsättning till allmänheten under Creative Commons Erkännande 4.0 Internationell licens (CC BY 4.0). Du kan lära dig mer om olika datauppsättningslicenstyper här..

Iris datauppsättning info

  • Citation: Dua, D. och Graff, C. (2019). UCI Machine Learning Repository [http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science.
  • Källa: https://archive.ics.uci.edu/ml/datasets/iris
  • Licens: RA Fisher innehar upphovsrätten till denna datauppsättning. Michael Marshall donerade denna datauppsättning till allmänheten under Creative Commons Public Domain Dedication License (CC0). Du kan lära dig mer om olika datauppsättningslicenstyper här..

Information om reklamdatauppsättning

Referensprojekt

10 fantastiska maskininlärningsvisualiseringar du bör känna till 2023 Återpublicerade från källan https://towardsdatascience.com/10-amazing-machine-learning-visualizations-you-should-know-in-2023-528282940582?source=rss—-7c60—5620f 9 via https://towardsdatascience.com/feed

<!–

->

Tidsstämpel:

Mer från Blockchain-konsulter