Maskininlärning är vetenskapen (och konsten) att programmera datorer så att de kan lära sig av data.
Ett studieområde som ger datorer förmågan att lära sig utan att vara uttryckligen programmerade. – Arthur Samuel, 1959
En bättre definition:
Ett datorprogram sägs lära sig av erfarenhet E med avseende på en viss uppgift T och ett visst prestandamått P, om dess prestanda på T, mätt med P, förbättras med erfarenhet E. – Tom Mitchell, 1997
Till exempel är ditt skräppostfilter ett maskininlärningsprogram som kan lära sig att flagga skräppost efter att ha fått exempel på skräppost som flaggats av användare och exempel på vanlig skräppost som inte är skräppost (även kallad ”skinka”). De exempel som systemet använder för att lära sig kallas för träningsuppsättning. I det här fallet är uppgiften (T) att flagga skräppost för nya e-postmeddelanden, erfarenheten (E) är träningsdata och prestationsmåttet (P) måste definieras. Du kan till exempel använda förhållandet mellan korrekt klassificerade e-postmeddelanden som P. Detta särskilda prestationsmått kallas noggrannhet och används ofta i klassificeringsuppgifter eftersom det är en metod för övervakad inlärning.
Dyk djupareEn introduktion till maskininlärning för nybörjare
Övervakad inlärning
I övervakad inlärning lär sig algoritmerna från märkta data. Efter att ha förstått uppgifterna bestämmer algoritmen vilken etikett som ska ges till nya uppgifter genom att associera mönster till de omärkta nya uppgifterna.
Supervised learning kan delas in i två kategorier: klassificering och regression.
Klassificering förutsäger vilken kategori uppgifterna tillhör.
Några exempel på klassificering är upptäckt av skräppost, förutsägelse av churn, sentimentanalys, upptäckt av hundras och så vidare.
Regression förutsäger ett numeriskt värde baserat på tidigare observerade data.
Enskilda exempel på regression är förutsägelse av huspris, aktiekurs, höjd-vikt och så vidare.
Dyk djupareEn rundvandring bland de tio bästa algoritmerna för nybörjare inom maskininlärning
Klassificering
Klassificering är en teknik för att bestämma vilken klass som det beroende tillhör baserat på en eller flera oberoende variabler.
Klassificering används för att förutsäga diskreta svar.
Logistisk regression
Logistisk regression är ungefär som linjär regression, men används när den beroende variabeln inte är ett tal utan något annat (t.ex, ett ”ja/nej”-svar). Den kallas regression men utför klassificering baserat på regressionen och den klassificerar den beroende variabeln i någon av klasserna.
Logistisk regression används för prediktion av utdata som är binära, enligt vad som anges ovan. Om till exempel ett kreditkortsföretag bygger en modell för att avgöra om det ska utfärda ett kreditkort till en kund eller inte, kommer det att modellera för om kunden kommer att ”försumma” eller ”inte försumma” sitt kort.
För det första utförs linjär regression på förhållandet mellan variablerna för att få fram en modell. Tröskelvärdet för klassificeringslinjen antas ligga på 0,5.
K-Nearest Neighbors (K-NN)
K-NN-algoritmen är en av de enklaste klassificeringsalgoritmerna och används för att identifiera datapunkterna som är uppdelade i flera klasser för att förutsäga klassificeringen av en ny provpunkt. K-NN är en icke-parametrisk, lat inlärningsalgoritm. Den klassificerar nya fall baserat på ett likhetsmått (dvs, distansfunktioner).
K-NNN fungerar bra med ett litet antal ingångsvariabler (p), men har svårt att hävda sig när antalet ingångar är mycket stort.
Support Vector Machine (SVM)
Support Vector används för både regression och klassificering. Den bygger på begreppet beslutsplan som definierar beslutsgränser. Ett beslutsplan (hyperplan) är ett plan som skiljer mellan en uppsättning objekt som har olika klasstillhörighet.
Den utför klassificering genom att hitta det hyperplan som maximerar marginalen mellan de två klasserna med hjälp av stödvektorer.
Inlärningen av hyperplanet i SVM görs genom att omvandla problemet med hjälp av viss linjär algebra (dvs, exemplet ovan är en linjär kärna som har en linjär separerbarhet mellan varje variabel).
För högdimensionella data används andra kärnor som punkter och kan inte klassificeras enkelt. De specificeras i nästa avsnitt.
Kernel SVM
Kernel SVM tar in en kärnfunktion i SVM-algoritmen och omvandlar den till den erforderliga formen som kartlägger data på en högre dimension som är separerbar.
Typer av kärnfunktion är:
- Linjär SVM är den som vi diskuterade tidigare.
- I polynomkärnan ska graden av polynomet anges. Den möjliggör krökta linjer i inmatningsutrymmet.
- I den radiella basfunktionskärnan (RBF) används den för icke-linjärt separerbara variabler. För avstånd används metriskt kvadrerat euklidiskt avstånd. Användning av ett typiskt värde för parametern kan leda till överanpassning av våra data. Den används som standard i sklearn.
- Sigmoid kernel, som liknar logistisk regression, används för binär klassificering.
Kernel trick använder kernelfunktionen för att omvandla data till ett högre dimensionellt egenskapsutrymme och gör det möjligt att utföra linjär separation för klassificering.
Radial Basis Function (RBF) Kernel
RBF-kärnans SVM-beslutsregion är faktiskt också en linjär beslutsregion. Vad RBF kernel SVM faktiskt gör är att skapa icke-linjära kombinationer av egenskaper för att lyfta upp proverna till ett högre dimensionellt egenskapsområde där en linjär beslutsgräns kan användas för att skilja klasser åt.
Tumregeln är alltså: använd linjära SVM för linjära problem och icke-linjära kärnor som RBF-kärnan för icke-linjära problem.
Naive Bayes
Den naiva Bayes-klassificatorn bygger på Bayes’ teorem med antaganden om oberoende mellan prediktorerna (dvs, den antar att närvaron av en egenskap i en klass inte är relaterad till någon annan egenskap). Även om dessa egenskaper beror på varandra, eller på förekomsten av de andra egenskaperna, är alla dessa egenskaper oberoende av varandra. Därför namnet naive Bayes.
Baserat på naive Bayes används Gaussian naive Bayes för klassificering baserad på binomial (normal) fördelning av data.
- P(class|data) är den efterföljande sannolikheten för klass(mål) givet prediktor(attribut). Sannolikheten för att en datapunkt har endera klassen, givet datapunkten. Detta är det värde som vi vill beräkna.
- P(class) är den tidigare sannolikheten för klass.
- P(data|class) är sannolikheten, som är sannolikheten för prediktor givet klass.
- P(data) är den tidigare sannolikheten för prediktor eller marginell sannolikhet.
Steg
1. Beräkna prioriterad sannolikhet
P(klass) = Antal datapunkter i klassen/Total antal observationer
P(gul) = 10/17
P(grön) = 7/17
2. Beräkna marginell sannolikhet
P(data) = Antal datapunkter som liknar observationen/Total antal observationer
P(?) = 4/17
Värdet finns i att kontrollera båda sannolikheterna.
3. Beräkna sannolikhet
P(data/klass) = Antal observationer som liknar klassen/Totalt antal punkter i klassen.
P(?/gult) = 1/7
P(?/grön) = 3/10
4. Posterior sannolikhet för varje klass
5. Klassificering
Desto högre sannolikhet, desto mer hör klassen till den kategorin som från över 75 % sannolikhet hör punkten till klassen grön.
Multinomial, Bernoulli naive Bayes är andra modeller som används för att beräkna sannolikheter. En naiv Bayes-modell är alltså lätt att bygga, utan komplicerad iterativ parameteruppskattning, vilket gör den särskilt användbar för mycket stora datamängder.
Klassificering i form av beslutsträd
Det är lätt att bygga upp klassificerings- eller regressionsmodeller i form av en trädstruktur. Det bryter ner en datamängd i allt mindre delmängder samtidigt som ett tillhörande beslutsträd utvecklas stegvis. Slutresultatet är ett träd med beslutsnoder och bladnoder. Den följer Iterative Dichotomiser 3(ID3) algoritmstruktur för att bestämma uppdelningen.
Entropi och informationsvinst används för att konstruera ett beslutsträd.
Entropi
Entropi är graden eller mängden av osäkerhet i slumpmässigheten hos element. Med andra ord är det ett mått på orenhet.
Intuitivt talar den om förutsägbarheten hos en viss händelse. Entropin beräknar homogeniteten hos ett prov. Om provet är helt homogent är entropin noll, och om provet är jämnt fördelat har det en entropi på ett.
Informationsvinst
Informationsvinsten mäter den relativa förändringen i entropin med avseende på det oberoende attributet. Den försöker uppskatta den information som varje attribut innehåller. Att konstruera ett beslutsträd handlar om att hitta det attribut som ger den högsta informationsvinsten (dvs, de mest homogena grenarna).
Varvid Gain(T, X) är informationsvinsten genom att tillämpa funktionen X. Entropy(T) är entropin för hela uppsättningen, medan den andra termen beräknar entropin efter att funktionen X har tillämpats.
Informationsvinsten rangordnar attribut för filtrering vid en given nod i trädet. Rangordningen baseras på den högsta entropin för informationsvinst i varje delning.
Nackdelen med en beslutsträdsmodell är överanpassning, eftersom den försöker anpassa modellen genom att gå djupare in i träningsuppsättningen och därmed minska testnoggrannheten.
Overfitting i beslutsträd kan minimeras genom att beskära noder.
Ensemblemetoder för klassificering
En ensemble-modell är ett team av modeller. Tekniskt sett består ensemblemodeller av flera övervakade inlärningsmodeller som tränas individuellt och resultaten slås samman på olika sätt för att uppnå den slutliga förutsägelsen. Detta resultat har högre prediktionskraft än resultaten av någon av de ingående inlärningsalgoritmerna oberoende av varandra.
Random Forest Classification
Random forest classifier är en ensemblealgoritm som bygger på bagging dvs. bootstrap aggregation. Ensemblemetoder kombinerar mer än en algoritm av samma eller olika slag för att klassificera objekt (dvs, en ensemble av till exempel SVM, naive Bayes eller beslutsträd.)
Den allmänna idén är att en kombination av inlärningsmodeller ökar det totala resultatet som väljs ut.
Djupa beslutsträd kan drabbas av överanpassning, men slumpmässiga skogar förhindrar överanpassning genom att skapa träd på slumpmässiga delmängder. Huvudskälet är att den tar genomsnittet av alla förutsägelser, vilket upphäver biaserna.
Random forest lägger till ytterligare slumpmässighet till modellen medan träden växer. Istället för att söka efter den viktigaste funktionen när en nod delas upp, söker den efter den bästa funktionen bland en slumpmässig delmängd av funktioner. Detta resulterar i en stor mångfald som i allmänhet ger en bättre modell.
Gradient Boosting Classification
Gradient boosting classifier är en boosting ensemble-metod. Boosting är ett sätt att kombinera (ensemble) svaga inlärare, främst för att minska prediktionsbias. Istället för att skapa en pool av prediktorer, som i bagging, producerar boosting en kaskad av dem, där varje utdata är indata för den följande läraren. I en bagging-algoritm odlas träd vanligtvis parallellt för att få fram den genomsnittliga förutsägelsen för alla träd, där varje träd byggs på ett urval av originaldata. Gradient boosting å andra sidan använder ett sekventiellt tillvägagångssätt för att få fram förutsägelser i stället för att parallellisera trädbyggandet. I gradient boosting förutsäger varje beslutsträd felet i det föregående beslutsträdet – och ökar (förbättrar) därmed felet (gradienten).
Working of Gradient Boosting
- Initialisera förutsägelser med ett enkelt beslutsträd.
- Beräkna restvärdet (faktiskt-prediktion).
- Bygg ett annat grunt beslutsträd som förutsäger restvärdet baserat på alla oberoende värden.
- Uppdatera den ursprungliga förutsägelsen med den nya förutsägelsen multiplicerad med inlärningshastigheten.
- Upprepa steg två till fyra för ett visst antal iterationer (antalet iterationer är antalet träd).
Kolla in det här inlägget: Gradient Boosting From Scratch
Klassificeringsmodellens prestanda
Konfusionsmatris
En konfusionsmatris är en tabell som ofta används för att beskriva en klassificeringsmodells prestanda på en uppsättning testdata för vilka de sanna värdena är kända. Det är en tabell med fyra olika kombinationer av förutspådda och verkliga värden i fallet för en binär klassificerare.
Förvirringsmatrisen för ett klassificeringsproblem med flera klasser kan hjälpa dig att bestämma felmönster.
För en binär klassificerare:
Ett sant positivt resultat är ett resultat där modellen korrekt förutsäger den positiva klassen. På samma sätt är en sann negativ ett resultat där modellen korrekt förutsäger den negativa klassen.
Falskt positivt &Falskt negativt
Uttrycken falskt positivt och falskt negativt används för att avgöra hur väl modellen förutsäger med avseende på klassificering. Ett falskt positivt resultat är ett resultat där modellen felaktigt förutsäger den positiva klassen. Och en falsk negativ är ett resultat där modellen felaktigt förutsäger den negativa klassen. Ju fler värden i huvuddiagonalen, desto bättre modell, medan den andra diagonalen ger det sämsta resultatet för klassificering.
Falskt positivt
Ett exempel där modellen felaktigt förutspådde den positiva klassen. Modellen har till exempel dragit slutsatsen att ett visst e-postmeddelande var skräppost (den positiva klassen), men det e-postmeddelandet var i själva verket inte skräppost. Det är som en varningssignal om att misstaget bör rättas till eftersom det inte är något större problem jämfört med falskt negativ.
Falskt positiv (typ I-fel) – när man förkastar en sann nollhypotes
Falskt negativ
Ett exempel där modellen felaktigt förutspådde den negativa klassen. Modellen har t.ex. dragit slutsatsen att ett visst e-postmeddelande inte var skräppost (den negativa klassen), men det e-postmeddelandet var faktiskt skräppost. Det är som en farosignal som innebär att misstaget bör rättas till tidigt eftersom det är allvarligare än ett falskt positivt resultat.
Falskt negativt (typ II-fel) – när man accepterar en falsk nollhypotes.
Den här bilden illustrerar helt enkelt ovanstående mätvärden. Mannens testresultat är falskt positivt eftersom en man inte kan vara gravid. Kvinnans testresultat är falskt negativa eftersom hon uppenbarligen är gravid.
Från förvirringsmatrisen kan vi härleda noggrannhet, precision, återkallelse och F-1-poäng.
Näringsnoggrannhet
Näringsnoggrannhet är den andel av förutsägelserna som vår modell fick rätt.
Accuracy kan också skrivas som
Accuracy alone doesn’t tell the full story when working with a class-imbalanced data set, where there is a significant disparity between the number of positive and negative labels. Precision och återkallelse är bättre mått för att utvärdera klassmässigt obalanserade problem.
Precision
Om alla klasser är precisionen hur mycket vi förutspådde korrekt.
Precisionen bör vara så hög som möjligt.
återkallelse
Om alla positiva klasser är återkallelsen hur mycket vi förutspådde korrekt. Det kallas också känslighet eller true positive rate (TPR).
Recall bör vara så hög som möjligt.
F-1 Score
Det är ofta bekvämt att kombinera precision och recall till ett enda mått som kallas F-1 score, särskilt om du behöver ett enkelt sätt att jämföra två klassificerare. F-1-poängen är det harmoniska medelvärdet av precision och recall.
Det vanliga medelvärdet behandlar alla värden lika, medan det harmoniska medelvärdet ger mycket mer vikt åt låga värden och därmed straffar de extrema värdena mer. Detta leder till att klassificeraren endast får en hög F-1-poäng om både recall och precision är höga.
Receiver Operator Curve (ROC) & Area Under the Curve (AUC)
ROC-kurvan är ett viktigt utvärderingsmått för klassificering. Den talar om för oss hur väl modellen har förutsagt korrekt. ROC-kurvan visar klassificerarens känslighet genom att plotta andelen sant positiva resultat mot andelen falskt positiva resultat. Om klassificeraren är enastående kommer andelen sant positiva att öka och arean under kurvan kommer att ligga nära ett. Om klassificeraren liknar en slumpmässig gissning kommer andelen sant positiva att öka linjärt med andelen falskt positiva. Ju bättre AUC-måttet är, desto bättre modell.
Cumulative Accuracy Profile Curve
CAP för en modell representerar det kumulativa antalet positiva utfall längs y-axeln jämfört med motsvarande kumulativa antal av en klassificerande parametrar längs x-axeln. CAP skiljer sig från Receiver Operating Characteristik (ROC), som visar den sant positiva frekvensen mot den falskt positiva frekvensen. CAP-kurvan används sällan jämfört med ROC-kurvan.
Tänk på en modell som förutspår om en kund kommer att köpa en produkt. Om en kund väljs ut slumpmässigt finns det en 50-procentig chans att den kommer att köpa produkten. Det kumulativa antalet element för vilka kunden köper skulle stiga linjärt mot ett maximalt värde som motsvarar det totala antalet kunder. Denna fördelning kallas den ”slumpmässiga” CAP. Det är den blå linjen i diagrammet ovan. En perfekt förutsägelse, å andra sidan, bestämmer exakt vilken kund som kommer att köpa produkten, så att det maximala antalet kunder som köper egenskapen kommer att uppnås med ett minimalt antal kundval bland elementen. Detta ger en brant linje på CAP-kurvan som förblir platt när det maximala värdet väl är uppnått, vilket är den ”perfekta” CAP-kurvan. Den kallas också för den ”ideala” linjen och är den grå linjen i figuren ovan.
I slutändan bör en modell förutsäga där den maximerar de korrekta förutsägelserna och närmar sig en perfekt modelllinje.