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 |