Så här väljer du en ML.NET-algoritm

För varje ML.NET uppgift finns det flera träningsalgoritmer att välja mellan. Vilken som ska väljas beror på vilket problem du försöker lösa, egenskaperna för dina data och de beräknings- och lagringsresurser som du har tillgängliga. Observera att det är en iterativ process att träna en maskininlärningsmodell. Du kan behöva prova flera algoritmer för att hitta den som fungerar bäst.

Algoritmer fungerar på funktioner. Funktioner är numeriska värden som beräknas från dina indata. De är optimala indata för maskininlärningsalgoritmer. Du omvandlar dina rådata till funktioner med hjälp av en eller flera datatransformeringar. Textdata omvandlas till exempel till en uppsättning ordantal och antal ordkombinationer. När funktionerna har extraherats från en rådatatyp med hjälp av datatransformeringar kallas de för funktionaliserade. Till exempel funktionaliserad text eller funktionaliserade bilddata.

Tränare = algoritm + uppgift

En algoritm är matematiken som körs för att skapa en modell. Olika algoritmer producerar modeller med olika egenskaper.

Med ML.NET kan samma algoritm tillämpas på olika uppgifter. Till exempel kan stokastisk dubbel koordinatuppstigning användas för binär klassificering, multiklassklassificering och regression. Skillnaden är hur algoritmens utdata tolkas för att matcha uppgiften.

För varje kombination av algoritmer/uppgifter tillhandahåller ML.NET en komponent som kör träningsalgoritmen och gör tolkningen. Dessa komponenter kallas utbildare. Till exempel använder den StochasticDualCoordinatedAscent-algoritm som tillämpas på regressionsaktiviteten.SdcaRegressionTrainer

Linjära algoritmer

Linjära algoritmer skapar en modell som beräknar poäng från en linjär kombination av indata och en uppsättning vikter. Vikterna är parametrar för modellen som uppskattas under träningen.

Linjära algoritmer fungerar bra för funktioner som är linjärt avgränsade.

Innan du tränar med en linjär algoritm bör funktionerna normaliseras. Detta förhindrar att en funktion har större inflytande över resultatet än andra.

I allmänhet är linjära algoritmer skalbara, snabba, billiga att träna och billiga att förutsäga. De skalas efter antalet funktioner och ungefär efter storleken på träningsdatauppsättningen.

Linjära algoritmer gör flera pass över träningsdata. Om din datauppsättning passar in i minnet kommer träningen att köras snabbare om du lägger till en cachekontrollpunkt i din ML.NET pipeline innan du lägger till den.

Genomsnittlig perceptron

Bäst för textklassificering.

Tränare Uppgift ONNX-exporterbar
AveragedPerceptronTrainer Binär klassificering Ja

Stokastisk dubbel samordnad uppstigning

Justering behövs inte för bra standardprestanda.

Tränare Uppgift ONNX-exporterbar
SdcaLogisticRegressionBinaryTrainer Binär klassificering Ja
SdcaNonCalibratedBinaryTrainer Binär klassificering Ja
SdcaMaximumEntropyMulticlassTrainer Klassificering med flera klasser Ja
SdcaNonCalibratedMulticlassTrainer Klassificering med flera klasser Ja
SdcaRegressionTrainer Regression Ja

L-BFGS

Använd när antalet funktioner är stort. Producerar träningsstatistik för logistisk regression, men skalas inte lika bra som AveragedPerceptronTrainer.

Tränare Uppgift ONNX-exporterbar
LbfgsLogisticRegressionBinaryTrainer Binär klassificering Ja
LbfgsMaximumEntropyMulticlassTrainer Klassificering med flera klasser Ja
LbfgsPoissonRegressionTrainer Regression Ja

Symbolisk stokastisk gradient nedstigning

Snabbaste och mest exakta linjära binära klassificeringstränaren. Skalar bra med antalet processorer.

Tränare Uppgift ONNX-exporterbar
SymbolicSgdLogisticRegressionBinaryTrainer Binär klassificering Ja

Online gradient descent

Implementerar standardavvikelsen (icke-batch) stochastic gradient, med ett val av förlustfunktioner, och ett alternativ för att uppdatera viktvektorn med hjälp av medelvärdet av de vektorer som ses över tid.

Tränare Uppgift ONNX-exporterbar
OnlineGradientDescentTrainer Regression Ja

Beslutsträdsalgoritmer

Beslutsträdsalgoritmer skapar en modell som innehåller en serie beslut: i praktiken ett flödesdiagram genom datavärdena.

Funktioner behöver inte vara linjärt avgränsade för att använda den här typen av algoritm. Och funktioner behöver inte normaliseras eftersom de enskilda värdena i funktionsvektorn används oberoende av varandra i beslutsprocessen.

Beslutsträdsalgoritmer är i allmänhet mycket exakta.

Med undantag för generaliserade additiva modeller (GAM) kan trädmodeller sakna förklaring när antalet funktioner är stort.

Beslutsträdsalgoritmer tar fler resurser och skalas inte lika bra som linjära. De fungerar bra på datauppsättningar som får plats i minnet.

Förstärkta beslutsträd är en ensemble av små träd där varje träd poängsätter indata och skickar poängen till nästa träd för att producera en bättre poäng, och så vidare, där varje träd i ensemblen förbättras jämfört med föregående.

Ljus toningsboostad dator

Snabbaste och mest exakta av de binära klassificeringsträdens utbildare. Mycket tunable.

Tränare Uppgift ONNX-exporterbar
LightGbmBinaryTrainer Binär klassificering Ja
LightGbmMulticlassTrainer Klassificering med flera klasser Ja
LightGbmRegressionTrainer Regression Ja
LightGbmRankingTrainer Rangordning Nej

Snabbt träd

Används för funktionaliserade bilddata. Motståndskraftig mot obalanserade data. Mycket tunable.

Tränare Uppgift ONNX-exporterbar
FastTreeBinaryTrainer Binär klassificering Ja
FastTreeRegressionTrainer Regression Ja
FastTreeTweedieTrainer Regression Ja
FastTreeRankingTrainer Rangordning Nej

Snabb skog

Fungerar bra med brusdata.

Tränare Uppgift ONNX-exporterbar
FastForestBinaryTrainer Binär klassificering Ja
FastForestRegressionTrainer Regression Ja

Generaliserad additiv modell (GAM)

Bäst för problem som fungerar bra med trädalgoritmer, men där förklaring är en prioritet.

Tränare Uppgift ONNX-exporterbar
GamBinaryTrainer Binär klassificering Nej
GamRegressionTrainer Regression Nej

Matrisfaktorisering

Matrisfaktorisering

Används för samarbetsfiltrering i rekommendationen.

Tränare Uppgift ONNX-exporterbar
MatrixFactorizationTrainer Rekommendation Nej

Fältmedveten factoriseringsdator

Bäst för glesa kategoriska data, med stora datamängder.

Tränare Uppgift ONNX-exporterbar
FieldAwareFactorizationMachineTrainer Binär klassificering Nej

Metaalgoritmer

Dessa tränare skapar en multiklass tränare från en binär tränare. Använd med AveragedPerceptronTrainer, LbfgsLogisticRegressionBinaryTrainer, SymbolicSgdLogisticRegressionBinaryTrainer, LightGbmBinaryTrainer, FastTreeBinaryTrainer, , FastForestBinaryTrainer. GamBinaryTrainer

En mot alla

Den här klassificeraren med flera klasser tränar en binär klassificerare för varje klass, vilket skiljer den klassen från alla andra klasser. Begränsas i skala av antalet klasser som ska kategoriseras.

Tränare Uppgift ONNX-exporterbar
OneVersusAllTrainer Klassificering med flera klasser Ja

Parvis koppling

Den här klassificeraren för flera klasser tränar en binär klassificeringsalgoritm på varje klasspar. Begränsas i skala av antalet klasser, eftersom varje kombination av två klasser måste tränas.

Tränare Uppgift ONNX-exporterbar
PairwiseCouplingTrainer Klassificering med flera klasser Nej

K-medel

Används för klustring.

Tränare Uppgift ONNX-exporterbar
KMeansTrainer Klustring Ja

Analys av huvudkomponent

Används för avvikelseidentifiering.

Tränare Uppgift ONNX-exporterbar
RandomizedPcaTrainer Avvikelseidentifiering Nej

Naive Bayes

Använd den här klassificeringsalgoritmen för flera klasser när funktionerna är oberoende och träningsdatauppsättningen är liten.

Tränare Uppgift ONNX-exporterbar
NaiveBayesMulticlassTrainer Klassificering med flera klasser Ja

Tidigare tränare

Använd den här binära klassificeringsalgoritmen för att baslinjeleda prestanda för andra utbildare. För att vara effektiv bör måtten för de andra tränarna vara bättre än den tidigare tränaren.

Tränare Uppgift ONNX-exporterbar
PriorTrainer Binär klassificering Ja

Stödvektordatorer

Stödvektormaskiner (SVM) är en mycket populär och väl undersökt klass av övervakade inlärningsmodeller, som kan användas i linjära och icke-linjära klassificeringsuppgifter.

Ny forskning har fokuserat på sätt att optimera dessa modeller för att effektivt skala till större träningsuppsättningar.

Linjär SVM

Förutsäger ett mål med hjälp av en linjär binär klassificeringsmodell som tränats över booleska etiketterade data. Växlar mellan stochastic gradient descent steps (Stochastic Gradient Descent)-steg och projektionssteg.

Tränare Uppgift ONNX-exporterbar
LinearSvmTrainer Binär klassificering Ja

Lokal djup SVM

Förutsäger ett mål med en icke-linjär binär klassificeringsmodell. Minskar kostnaden för förutsägelsetid. Förutsägelsekostnaden växer logaritmiskt med storleken på träningsuppsättningen, snarare än linjärt, med en acceptabel förlust i klassificeringsnoggrannheten.

Tränare Uppgift ONNX-exporterbar
LdSvmTrainer Binär klassificering Ja

Vanliga minsta kvadrater

Vanliga minsta kvadrater (OLS) är en av de vanligaste teknikerna inom linjär regression.

Vanliga minsta kvadrater refererar till förlustfunktionen, som beräknar felet som summan av avståndets kvadrat från det faktiska värdet till den förutsagda linjen, och passar modellen genom att minimera kvadratfelet. Den här metoden förutsätter en stark linjär relation mellan indata och den beroende variabeln.

Tränare Uppgift ONNX-exporterbar
OlsTrainer Regression Ja