Machine learning-taken in ML.NET
Een machine learning-taak is het type voorspelling of deductie dat wordt gemaakt, op basis van het probleem of de vraag die wordt gesteld en de beschikbare gegevens. De classificatietaak wijst bijvoorbeeld gegevens toe aan categorieën en de clustertaakgroepgegevens op basis van overeenkomsten.
Machine learning-taken zijn afhankelijk van patronen in de gegevens in plaats van expliciet te worden geprogrammeerd.
In dit artikel worden de verschillende machine learning-taken beschreven waaruit u kunt kiezen in ML.NET en enkele veelvoorkomende gebruiksvoorbeelden.
Zodra u hebt besloten welke taak voor uw scenario werkt, moet u het beste algoritme kiezen om uw model te trainen. De beschikbare algoritmen worden vermeld in de sectie voor elke taak.
Binaire classificatie
Een machine learning-taak onder supervisie die wordt gebruikt om te voorspellen tot welke van twee klassen (categorieën) een exemplaar van gegevens behoort. De invoer van een classificatie-algoritme is een set gelabelde voorbeelden, waarbij elk label een geheel getal van 0 of 1 is. De uitvoer van een binair classificatie-algoritme is een classificatie die u kunt gebruiken om de klasse van nieuwe niet-gelabelde exemplaren te voorspellen. Voorbeelden van binaire classificatiescenario's zijn:
- Inzicht in het gevoel van Twitter-opmerkingen als 'positief' of 'negatief'.
- Diagnose of een patiënt een bepaalde ziekte heeft of niet.
- Het maken van een beslissing om een e-mailbericht te markeren als 'spam' of niet.
- Bepalen of een foto een bepaald item bevat of niet, zoals een hond of fruit.
Zie het artikel Binaire classificatie op Wikipedia voor meer informatie.
Binaire classificatietrainers
U kunt een binair classificatiemodel trainen met behulp van de volgende algoritmen:
- AveragedPerceptronTrainer
- SdcaLogisticRegressionBinaryTrainer
- SdcaNonCalibratedBinaryTrainer
- SymbolicSgdLogisticRegressionBinaryTrainer
- LbfgsLogisticRegressionBinaryTrainer
- LightGbmBinaryTrainer
- FastTreeBinaryTrainer
- FastForestBinaryTrainer
- GamBinaryTrainer
- FieldAwareFactorizationMachineTrainer
- PriorTrainer
- LinearSvmTrainer
Binaire classificatie-invoer en -uitvoer
Voor de beste resultaten met binaire classificatie moeten de trainingsgegevens worden verdeeld (dat wil gezegd, gelijke aantallen positieve en negatieve trainingsgegevens). Ontbrekende waarden moeten vóór de training worden verwerkt.
De kolomgegevens van het invoerlabel moeten zijn Boolean. De kolomgegevens van de invoerfuncties moeten een vector met vaste grootte zijn van Single.
Deze trainers voeren de volgende kolommen uit:
Naam van uitvoerkolom | Kolomsoort | Beschrijving |
---|---|---|
Score |
Single | De onbewerkte score die door het model is berekend |
PredictedLabel |
Boolean | Het voorspelde label, op basis van het teken van de score. Een negatieve score wordt toegewezen aan false en een positieve score wordt toegewezen aan true . |
Classificatie met meerdere klassen
Een machine learning-taak onder supervisie die wordt gebruikt om de klasse (categorie) van een exemplaar van gegevens te voorspellen. De invoer van een classificatie-algoritme is een set gelabelde voorbeelden. Elk label begint normaal gesproken als tekst. Het wordt vervolgens uitgevoerd via termtransform, dat het converteert naar het type Sleutel (numeriek). De uitvoer van een classificatie-algoritme is een classificatie die u kunt gebruiken om de klasse van nieuwe niet-gelabelde exemplaren te voorspellen. Voorbeelden van classificatiescenario's met meerdere klassen zijn:
- Vluchten categoriseren als 'vroeg', 'op tijd' of 'laat'.
- Informatie over filmrecensies als 'positief', 'neutraal' of 'negatief'.
- Hotelbeoordelingen categoriseren als 'locatie', 'prijs', 'netheid', enzovoort.
Zie het artikel over classificatie van meerdere klassen op Wikipedia voor meer informatie.
Notitie
Eén versus alle upgrades van elke binaire classificatie-cursist om te reageren op gegevenssets met meerdere klassen. Meer informatie over Wikipedia.
Classificatietrainers met meerdere klassen
U kunt een classificatiemodel met meerdere klassen trainen met behulp van de volgende trainingsalgoritmen:
- LightGbmMulticlassTrainer
- SdcaMaximumEntropyMulticlassTrainer
- SdcaNonCalibratedMulticlassTrainer
- LbfgsMaximumEntropyMulticlassTrainer
- NaiveBayesMulticlassTrainer
- OneVersusAllTrainer
- PairwiseCouplingTrainer
Classificatie-invoer en -uitvoer met meerdere klassen
De kolomgegevens van het invoerlabel moeten sleuteltype zijn. De functiekolom moet een vector met vaste grootte zijn van Single.
Deze trainer voert het volgende uit:
Uitvoernaam | Type | Description |
---|---|---|
Score |
Vector van Single | De scores van alle klassen. Hogere waarde betekent een hogere kans om in de bijbehorende klasse te vallen. Als het i-th-element de grootste waarde heeft, is de voorspelde labelindex i. Houd er rekening mee dat ik een index op basis van nul is. |
PredictedLabel |
sleuteltype | De index van het voorspelde label. Als de waarde i is, is het werkelijke label de i-th-categorie in het type invoerlabel met sleutelwaarden. |
Regressie
Een machine learning-taak onder supervisie die wordt gebruikt om de waarde van het label te voorspellen op basis van een set gerelateerde functies. Het label kan van elke echte waarde zijn en komt niet uit een eindige set waarden zoals in classificatietaken. Regressiealgoritmen modelleren de afhankelijkheid van het label op de gerelateerde functies om te bepalen hoe het label verandert naarmate de waarden van de functies variëren. De invoer van een regressie-algoritme is een set voorbeelden met labels van bekende waarden. De uitvoer van een regressie-algoritme is een functie die u kunt gebruiken om de labelwaarde te voorspellen voor elke nieuwe set invoerfuncties. Voorbeelden van regressiescenario's zijn:
- Woningprijzen voorspellen op basis van huiskenmerken zoals aantal slaapkamers, locatie of grootte.
- Toekomstige aandelenkoersen voorspellen op basis van historische gegevens en huidige markttrends.
- Verkoop van een product voorspellen op basis van advertentiebudgetten.
Regressietrainers
U kunt een regressiemodel trainen met behulp van de volgende algoritmen:
- LbfgsPoissonRegressionTrainer
- LightGbmRegressionTrainer
- SdcaRegressionTrainer
- OlsTrainer
- OnlineGradientDescentTrainer
- FastTreeRegressionTrainer
- FastTreeTweedieTrainer
- FastForestRegressionTrainer
- GamRegressionTrainer
Regressie-invoer en -uitvoer
De kolomgegevens van het invoerlabel moeten zijn Single.
De trainers voor deze taak voeren het volgende uit:
Uitvoernaam | Type | Description |
---|---|---|
Score |
Single | De onbewerkte score die door het model is voorspeld |
Clustering
Een machine learning-taak zonder supervisie die wordt gebruikt om exemplaren van gegevens te groeperen in clusters die vergelijkbare kenmerken bevatten. Clustering kan ook worden gebruikt om relaties in een gegevensset te identificeren die u mogelijk niet logisch kunt afleiden door te bladeren of eenvoudige observaties te maken. De invoer en uitvoer van een clustering-algoritme zijn afhankelijk van de gekozen methodologie. U kunt een distributie-, zwaartepunt-, connectiviteits- of dichtheidsbenadering gebruiken. ML.NET ondersteunt momenteel een op zwaartepunt gebaseerde benadering met behulp van K-Means-clustering. Voorbeelden van clusterscenario's zijn:
- Inzicht in segmenten van hotelgasten op basis van gewoonten en kenmerken van hotelkeuzen.
- Het identificeren van klantsegmenten en demografische gegevens om gerichte advertentiecampagnes te bouwen.
- Inventaris categoriseren op basis van metrische productiegegevens.
Clustering trainer
U kunt een clusteringmodel trainen met behulp van het volgende algoritme:
Invoer en uitvoer van clustering
De gegevens van de invoerfuncties moeten zijn Single. Er zijn geen labels nodig.
Deze trainer voert het volgende uit:
Uitvoernaam | Type | Description |
---|---|---|
Score |
vector van Single | De afstanden van de opgegeven gegevens wijzen naar de zwaartepunten van alle clusters |
PredictedLabel |
sleuteltype | De index van het dichtstbijzijnde cluster die door het model wordt voorspeld. |
Anomaliedetectie
Met deze taak maakt u een anomaliedetectiemodel met behulp van Principal Component Analysis (PCA). Op PCA gebaseerde anomaliedetectie helpt u bij het bouwen van een model in scenario's waarin u eenvoudig trainingsgegevens van één klasse kunt verkrijgen, zoals geldige transacties, maar moeilijk om voldoende steekproeven van de doelafwijkingen te verkrijgen.
Een gevestigde techniek in machine learning, PCA wordt vaak gebruikt in experimentele gegevensanalyse, omdat hiermee de interne structuur van de gegevens wordt weergegeven en wordt de variantie in de gegevens uitgelegd. PCA werkt door gegevens te analyseren die meerdere variabelen bevatten. Het zoekt naar correlaties tussen de variabelen en bepaalt de combinatie van waarden die het beste verschillen in resultaten vastlegt. Deze gecombineerde functiewaarden worden gebruikt om een compactere functieruimte te maken, de belangrijkste onderdelen genoemd.
Anomaliedetectie omvat veel belangrijke taken in machine learning:
- Transacties identificeren die mogelijk frauduleus zijn.
- Leerpatronen die aangeven dat er een netwerkinbraak is opgetreden.
- Abnormale clusters van patiënten vinden.
- Waarden controleren die in een systeem zijn ingevoerd.
Omdat afwijkingen per definitie zeldzame gebeurtenissen zijn, kan het lastig zijn om een representatieve steekproef van gegevens te verzamelen die moeten worden gebruikt voor modellering. De algoritmen die in deze categorie zijn opgenomen, zijn speciaal ontworpen om de belangrijkste uitdagingen van het bouwen en trainen van modellen aan te pakken met behulp van onevenwichtige gegevenssets.
Anomaliedetectie trainer
U kunt een anomaliedetectiemodel trainen met behulp van het volgende algoritme:
Anomaliedetectie-invoer en -uitvoer
De invoerfuncties moeten een vector van vaste grootte zijn van Single.
Deze trainer voert het volgende uit:
Uitvoernaam | Type | Description |
---|---|---|
Score |
Single | De niet-negatieve, niet-gebonden score die is berekend door het anomaliedetectiemodel |
PredictedLabel |
Boolean | Een waar/onwaar-waarde die aangeeft of de invoer een anomalie is (PredictedLabel=true) of niet (PredictedLabel=false) |
Rangorde
Een classificatietaak bouwt een rangschikker op basis van een set gelabelde voorbeelden. Deze voorbeeldset bestaat uit exemplaargroepen die kunnen worden gescoord met een bepaald criterium. De classificatielabels zijn { 0, 1, 2, 3, 4 } voor elk exemplaar. De ranker wordt getraind om nieuwe exemplaargroepen te rangschikken met onbekende scores voor elk exemplaar. ML.NET classificatieleerders zijn machine learning gebaseerd op classificatie .
Classificatietrainingsalgoritmen
U kunt een classificatiemodel trainen met de volgende algoritmen:
Classificatie-invoer en -uitvoer
Het gegevenstype invoerlabel moet sleuteltype of Single. De waarde van het label bepaalt relevantie, waarbij hogere waarden een hogere relevantie aangeven. Als het label een sleuteltype is, is de sleutelindex de relevantiewaarde, waarbij de kleinste index het minst relevant is. Als het label een Singleis, geven grotere waarden een hogere relevantie aan.
De functiegegevens moeten een vector met vaste grootte zijn van Single en de kolom voor de invoerrijgroep moet sleuteltype zijn.
Deze trainer voert het volgende uit:
Uitvoernaam | Type | Description |
---|---|---|
Score |
Single | De niet-afhankelijke score die door het model is berekend om de voorspelling te bepalen |
Aanbeveling
Met een aanbevelingstaak kunt u een lijst met aanbevolen producten of services maken. ML.NET maakt gebruik van matrixfactorisatie (MF), een algoritme voor gezamenlijke filtering voor aanbevelingen wanneer u historische productclassificatiegegevens in uw catalogus hebt. U hebt bijvoorbeeld historische filmclassificatiegegevens voor uw gebruikers en wilt andere films aanbevelen die ze waarschijnlijk volgende zullen bekijken.
Trainingsalgoritmen voor aanbevelingen
U kunt een aanbevelingsmodel trainen met het volgende algoritme:
Prognoses opstellen
De prognosetaak maakt gebruik van eerdere tijdreeksgegevens om voorspellingen te doen over toekomstig gedrag. Scenario's die van toepassing zijn op prognoses zijn onder andere weersvoorspellingen, seizoensgebonden verkoopvoorspellingen en voorspellend onderhoud.
Prognosetrainers
U kunt een prognosemodel trainen met het volgende algoritme:
Classificatie van afbeeldingen
Een machine learning-taak onder supervisie die wordt gebruikt om de klasse (categorie) van een afbeelding te voorspellen. De invoer is een set gelabelde voorbeelden. Elk label begint normaal gesproken als tekst. Het wordt vervolgens uitgevoerd via termtransform, dat het converteert naar het type Sleutel (numeriek). De uitvoer van het algoritme voor afbeeldingsclassificatie is een classificatie die u kunt gebruiken om de klasse van nieuwe afbeeldingen te voorspellen. De taak voor afbeeldingsclassificatie is een type classificatie met meerdere klassen. Voorbeelden van scenario's voor afbeeldingsclassificatie zijn:
- Bepalen van het ras van een hond als een "Siberische Husky", "Golden Retriever", "Poodle", enz.
- Bepalen of een productieproduct defect is of niet.
- Bepalen welke soorten bloemen "Rose", "Zonnebloem", enz.
Trainingstrainers voor afbeeldingsclassificatie
U kunt een afbeeldingsclassificatiemodel trainen met behulp van de volgende trainingsalgoritmen:
Invoer en uitvoer van afbeeldingsclassificatie
De kolomgegevens van het invoerlabel moeten sleuteltype zijn. De functiekolom moet een vector van variabele grootte zijn van Byte.
Deze trainer voert de volgende kolommen uit:
Uitvoernaam | Type | Description |
---|---|---|
Score |
Single | De scores van alle klassen. Hogere waarde betekent een hogere kans om in de bijbehorende klasse te vallen. Als het i-th-element de grootste waarde heeft, is de voorspelde labelindex i.Opmerking: ik is een op nul gebaseerde index. |
PredictedLabel |
Sleuteltype | De index van het voorspelde label. Als de waarde i is, is het werkelijke label de i-th-categorie in het type invoerlabel met sleutelwaarden. |
Objectdetectie
Een machine learning-taak onder supervisie die wordt gebruikt om de klasse (categorie) van een afbeelding te voorspellen, maar geeft ook een begrenzingsvak aan waar die categorie zich in de afbeelding bevindt. In plaats van één object in een afbeelding te classificeren, kan objectdetectie meerdere objecten in een afbeelding detecteren. Voorbeelden van objectdetectie zijn:
- Auto's, borden of mensen op beelden van een weg detecteren.
- Defecten detecteren op afbeeldingen van producten.
- Het detecteren van aandachtspunten op X-Ray-afbeeldingen.
Modeltraining voor objectdetectie is momenteel alleen beschikbaar in Model Builder met behulp van Azure Machine Learning.