Een ML.NET-algoritme kiezen
Voor elke ML.NET taak zijn er meerdere trainingsalgoritmen waaruit u kunt kiezen. Welke u moet kiezen, is afhankelijk van het probleem dat u probeert op te lossen, de kenmerken van uw gegevens en de reken- en opslagresources die u beschikbaar hebt. Het is belangrijk te weten dat het trainen van een machine learning-model een iteratief proces is. Mogelijk moet u meerdere algoritmen proberen om de algoritmen te vinden die het beste werkt.
Algoritmen werken op functies. Functies zijn numerieke waarden die worden berekend op basis van uw invoergegevens. Ze zijn optimale invoer voor machine learning-algoritmen. U transformeert uw onbewerkte invoergegevens in functies met behulp van een of meer gegevenstransformaties. Tekstgegevens worden bijvoorbeeld omgezet in een set woordenaantallen en woordencombinaties. Zodra de functies zijn geëxtraheerd uit een onbewerkt gegevenstype met behulp van gegevenstransformaties, worden ze aangeduid als featurized. Bijvoorbeeld gemetriseerde tekst of gemetriseerde afbeeldingsgegevens.
Trainer = Algoritme + Taak
Een algoritme is de wiskunde die wordt uitgevoerd om een model te produceren. Verschillende algoritmen produceren modellen met verschillende kenmerken.
Met ML.NET kan hetzelfde algoritme worden toegepast op verschillende taken. Stochastic Dual Coördinaat Ascent kan bijvoorbeeld worden gebruikt voor binaire classificatie, classificatie van meerdere klassen en regressie. Het verschil is in hoe de uitvoer van het algoritme wordt geïnterpreteerd om overeen te komen met de taak.
Voor elke combinatie van algoritmen/taken biedt ML.NET een onderdeel waarmee het trainingsalgoritmen worden uitgevoerd en de interpretatie wordt uitgevoerd. Deze onderdelen worden trainers genoemd. Hierbij wordt bijvoorbeeld SdcaRegressionTrainer het stochasticDualCoördinaatAscent-algoritme gebruikt dat is toegepast op de regressietaak.
Lineaire algoritmen
Lineaire algoritmen produceren een model waarmee scores worden berekend op basis van een lineaire combinatie van de invoergegevens en een set gewichten. De gewichten zijn parameters van het model dat tijdens de training wordt geschat.
Lineaire algoritmen werken goed voor functies die lineair kunnen worden gescheiden.
Voordat u met een lineair algoritme traint, moeten de functies worden genormaliseerd. Hierdoor voorkomt u dat één functie meer invloed heeft op het resultaat dan andere.
In het algemeen zijn lineaire algoritmen schaalbaar, snel, goedkoop om te trainen en goedkoop om te voorspellen. Ze worden geschaald op basis van het aantal functies en ongeveer op basis van de grootte van de trainingsgegevensset.
Lineaire algoritmen maken meerdere doorvoeren over de trainingsgegevens. Als uw gegevensset in het geheugen past, voegt u een cachecontrolepunt toe aan uw ML.NET pijplijn voordat u de trainer toevoegt, zodat de training sneller kan worden uitgevoerd.
Gemiddeld perceptron
Het meest geschikt voor tekstclassificatie.
Trainer | Opdracht | ONNX exporteerbaar |
---|---|---|
AveragedPerceptronTrainer | Binaire classificatie | Ja |
Stochastic dual coordinated ascent
Afstemming is niet nodig voor goede standaardprestaties.
Trainer | Opdracht | ONNX exporteerbaar |
---|---|---|
SdcaLogisticRegressionBinaryTrainer | Binaire classificatie | Ja |
SdcaNonCalibratedBinaryTrainer | Binaire classificatie | Ja |
SdcaMaximumEntropyMulticlassTrainer | Classificatie met meerdere klassen | Ja |
SdcaNonCalibratedMulticlassTrainer | Classificatie met meerdere klassen | Ja |
SdcaRegressionTrainer | Regressie | Ja |
L-BFGS
Gebruik deze functie wanneer het aantal functies groot is. Produceert logistieke regressietrainingsstatistieken, maar schaalt niet evenals de AveragedPerceptronTrainer.
Trainer | Opdracht | ONNX exporteerbaar |
---|---|---|
LbfgsLogisticRegressionBinaryTrainer | Binaire classificatie | Ja |
LbfgsMaximumEntropyMulticlassTrainer | Classificatie met meerdere klassen | Ja |
LbfgsPoissonRegressionTrainer | Regressie | Ja |
Symbolische stochastische gradiëntafname
Snelste en meest nauwkeurige lineaire binaire classificatie trainer. Schaalt goed met het aantal processors.
Trainer | Opdracht | ONNX exporteerbaar |
---|---|---|
SymbolicSgdLogisticRegressionBinaryTrainer | Binaire classificatie | Ja |
Online gradiëntafname
Implementeert de standaard (niet-batch) stochastische gradiëntafname, met een keuze aan verliesfuncties en een optie om de gewichtsvector bij te werken met behulp van het gemiddelde van de vectoren die in de loop van de tijd worden gezien.
Trainer | Opdracht | ONNX exporteerbaar |
---|---|---|
OnlineGradientDescentTrainer | Regressie | Ja |
Beslissingsstructuuralgoritmen
Beslissingsstructuuralgoritmen maken een model dat een reeks beslissingen bevat: effectief een stroomdiagram door de gegevenswaarden.
Functies hoeven niet lineair gescheiden te zijn om dit type algoritme te kunnen gebruiken. En functies hoeven niet te worden genormaliseerd, omdat de afzonderlijke waarden in de functievector onafhankelijk worden gebruikt in het beslissingsproces.
Beslissingsstructuuralgoritmen zijn over het algemeen zeer nauwkeurig.
Met uitzondering van gegeneraliseerde additieve modellen (GAM's) kunnen structuurmodellen geen uitleg hebben wanneer het aantal functies groot is.
Beslissingsstructuuralgoritmen nemen meer resources in beslag en worden niet zo goed geschaald als lineaire algoritmen. Ze presteren goed voor gegevenssets die in het geheugen passen.
Versterkte beslissingsstructuren zijn een ensemble van kleine bomen waarbij elke boom de invoergegevens beoordeelt en de score doorgeeft aan de volgende boom om een betere score te produceren, enzovoort, waar elke boom in het ensemble de vorige verbetert.
Lichte kleurovergang boosted machine
Snelste en meest nauwkeurige van de binaire classificatiestructuurtrainers. Zeer niet in staat.
Trainer | Opdracht | ONNX exporteerbaar |
---|---|---|
LightGbmBinaryTrainer | Binaire classificatie | Ja |
LightGbmMulticlassTrainer | Classificatie met meerdere klassen | Ja |
LightGbmRegressionTrainer | Regressie | Ja |
LightGbmRankingTrainer | Rangorde | Nee |
Snelle boomstructuur
Gebruiken voor gemetriseerde afbeeldingsgegevens. Tolerant voor niet-gebalanceerde gegevens. Zeer niet in staat.
Trainer | Opdracht | ONNX exporteerbaar |
---|---|---|
FastTreeBinaryTrainer | Binaire classificatie | Ja |
FastTreeRegressionTrainer | Regressie | Ja |
FastTreeTweedieTrainer | Regressie | Ja |
FastTreeRankingTrainer | Rangorde | Nee |
Snel forest
Werkt goed met ruisgegevens.
Trainer | Opdracht | ONNX exporteerbaar |
---|---|---|
FastForestBinaryTrainer | Binaire classificatie | Ja |
FastForestRegressionTrainer | Regressie | Ja |
Gegeneraliseerde additief model (GAM)
Het meest geschikt voor problemen die goed presteren met structuuralgoritmen, maar waarbij uitleg een prioriteit is.
Trainer | Opdracht | ONNX exporteerbaar |
---|---|---|
GamBinaryTrainer | Binaire classificatie | Nee |
GamRegressionTrainer | Regressie | Nee |
Matrixfactorisatie
Matrixfactorisatie
Wordt gebruikt voor gezamenlijke filtering in aanbeveling.
Trainer | Opdracht | ONNX exporteerbaar |
---|---|---|
MatrixFactorizationTrainer | Aanbeveling | Nee |
Veldbewuste factorisatiemachine
Het meest geschikt voor het parseren van categorische gegevens, met grote gegevenssets.
Trainer | Opdracht | ONNX exporteerbaar |
---|---|---|
FieldAwareFactorizationMachineTrainer | Binaire classificatie | Nee |
Metaalgoritmen
Deze trainers maken een multiclass trainer van een binaire trainer. Gebruiken met AveragedPerceptronTrainer, LbfgsLogisticRegressionBinaryTrainer, SymbolicSgdLogisticRegressionBinaryTrainer, , LightGbmBinaryTrainer, FastTreeBinaryTrainer, , , FastForestBinaryTrainer. GamBinaryTrainer
Eén versus alle
Deze classificatie met meerdere klassen traint één binaire classificatie voor elke klasse, die die klasse onderscheidt van alle andere klassen. Is beperkt in schaal door het aantal klassen dat moet worden gecategoraliseerd.
Trainer | Opdracht | ONNX exporteerbaar |
---|---|---|
OneVersusAllTrainer | Classificatie met meerdere klassen | Ja |
Paargewijze koppeling
Deze classificatie met meerdere klassen traint een algoritme voor binaire classificatie op elk paar klassen. Is beperkt in schaal met het aantal klassen, omdat elke combinatie van twee klassen moet worden getraind.
Trainer | Opdracht | ONNX exporteerbaar |
---|---|---|
PairwiseCouplingTrainer | Classificatie met meerdere klassen | Nee |
K-Means
Wordt gebruikt voor clustering.
Trainer | Opdracht | ONNX exporteerbaar |
---|---|---|
KMeansTrainer | Clustering | Ja |
Analyse van principal-onderdelen
Wordt gebruikt voor anomaliedetectie.
Trainer | Opdracht | ONNX exporteerbaar |
---|---|---|
RandomizedPcaTrainer | Anomaliedetectie | Nee |
Naive Bayes
Gebruik dit classificatie-algoritme met meerdere klassen wanneer de functies onafhankelijk zijn en de trainingsgegevensset klein is.
Trainer | Opdracht | ONNX exporteerbaar |
---|---|---|
NaiveBayesMulticlassTrainer | Classificatie met meerdere klassen | Ja |
Vorige trainer
Gebruik dit algoritme voor binaire classificatie om de prestaties van andere trainers te basislijnen. Om effectief te zijn, moeten de metrische gegevens van de andere trainers beter zijn dan de vorige trainer.
Trainer | Opdracht | ONNX exporteerbaar |
---|---|---|
PriorTrainer | Binaire classificatie | Ja |
Ondersteuningsvectormachines
Ondersteuningsvectormachines (SVM's) zijn een zeer populaire en goed onderzochte klasse van leermodellen onder supervisie, die kan worden gebruikt in lineaire en niet-lineaire classificatietaken.
Recent onderzoek heeft zich gericht op manieren om deze modellen te optimaliseren om efficiënt te schalen naar grotere trainingssets.
Lineaire SVM
Voorspelt een doel met behulp van een lineair binair classificatiemodel dat is getraind over booleaanse gelabelde gegevens. Schakelen tussen stochastische gradiëntafnamestappen en projectiestappen.
Trainer | Opdracht | ONNX exporteerbaar |
---|---|---|
LinearSvmTrainer | Binaire classificatie | Ja |
Lokale deep SVM
Voorspelt een doel met behulp van een niet-lineair binair classificatiemodel. Vermindert de kosten van de voorspellingstijd; de voorspellingskosten groeien logaritmisch met de grootte van de trainingsset, in plaats van lineair, met een acceptabel verlies in classificatienauwkeurigheid.
Trainer | Opdracht | ONNX exporteerbaar |
---|---|---|
LdSvmTrainer | Binaire classificatie | Ja |
Gewone kleinste vierkantjes
Gewone kleinste kwadraten (OLS) is een van de meest gebruikte technieken in lineaire regressie.
Gewone kleinste kwadraten verwijzen naar de verliesfunctie, die een fout berekent als de som van het kwadraat van de werkelijke waarde naar de voorspelde lijn en past bij het model door de kwadratische fout te minimaliseren. Bij deze methode wordt uitgegaan van een sterke lineaire relatie tussen de invoer en de afhankelijke variabele.
Trainer | Opdracht | ONNX exporteerbaar |
---|---|---|
OlsTrainer | Regressie | Ja |