Machine learning-taken in ML.NET
Een machine learning-taak is een type voorspelling of deductie dat is gebaseerd op beide:
- Het probleem of de vraag
- 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 die beschikbaar zijn in ML.NET en enkele veelvoorkomende gebruiksvoorbeelden.
Nadat 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.
Classificatietaken
Binaire classificatie
Binaire classificatie is een bewaakte machine learning- taak die wordt gebruikt om te voorspellen welke van precies twee klassen (categorieën) waartoe 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:
- Het begrijpen van de sentimenten van Twitter-opmerkingen als positief of negatief.
- Diagnose of een patiënt een bepaalde ziekte heeft.
- Een beslissing nemen om een e-mailbericht als spam te markeren.
- Bepalen of een foto een bepaald item bevat, 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 Booleanzijn. De gegevens van de invoerfunctiekolom moeten een vector van vaste grootte Singlezijn.
Deze trainers voeren de volgende kolommen uit:
Naam van uitvoerkolom | Kolomtype | Beschrijving |
---|---|---|
Score |
Single | De onbewerkte score die door het model wordt berekend. |
PredictedLabel |
Boolean | Het label dat voorspeld wordt, 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
Classificatie met meerdere klassen is een machine learning- taak die wordt gebruikt om een instantie van gegevens te classificeren in een van drie of meer klassen (categorieën). De invoer van een classificatie-algoritme is een set gelabelde voorbeelden. Elk label begint normaal gesproken als tekst. Het wordt vervolgens verwerkt door de TermTransform, waarmee het wordt geconverteerd naar het type Key (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'.
- Begrijpen van filmrecensies als 'positief', 'neutraal' of 'negatief'.
- Hotelbeoordelingen categoriseren als 'locatie', 'prijs' of 'netheid', bijvoorbeeld.
Zie het artikel over Multiclass classification op Wikipedia voor meer informatie.
Notitie
Eén-tegen-de-rest upgradet elke binaire classificatieleerder naar het werken met gegevensverzamelingen met meerdere klassen.
Classificatietrainers met meerdere klassen
U kunt een classificatiemodel met meerdere klassen trainen met behulp van de volgende trainingsalgoritmen:
- TextClassificationTrainer
- LightGbmMulticlassTrainer
- SdcaMaximumEntropyMulticlassTrainer
- SdcaNonCalibratedMulticlassTrainer
- LbfgsMaximumEntropyMulticlassTrainer
- NaiveBayesMulticlassTrainer
- OneVersusAllTrainer
- PairwiseCouplingTrainer
Multiklasseclassificatie-invoer en -uitvoer
De kolomgegevens van het invoerlabel moeten sleutel type zijn. De functiekolom moet een vector met een vaste grootte van Singlezijn.
Deze trainer voert het volgende uit:
Uitvoernaam | Type | Beschrijving |
---|---|---|
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, wordt de voorspelde labelindex i . Houd er rekening mee dat i een op nul gebaseerde index is. |
PredictedLabel |
sleutel | De index van het voorspelde label. Als de waarde i is, is het werkelijke label de i -th-categorie in het invoerlabeltype met sleutelwaarden. |
Tekstclassificatie
Tekstclassificatie is een subcategorie van classificatie met meerdere klassen die specifiek betrekking heeft op onbewerkte tekst. Tekst vormt interessante uitdagingen omdat u rekening moet houden met de context en semantiek waarin de tekst voorkomt. Daarom kan het lastig zijn om betekenis en context te coderen.
Deep Learning modellen zijn ontstaan als een veelbelovende techniek om problemen in natuurlijke taal op te lossen. Meer specifiek is een type neuraal netwerk dat bekend staat als een transformator de overheersende manier is geworden om problemen met natuurlijke taal op te lossen, zoals tekstclassificatie, vertaling, samenvatting en antwoord op vragen. Enkele populaire transformerarchitecturen voor taken in natuurlijke taal zijn onder andere:
- Bidirectionele encoderweergaven van transformatoren (BERT)
- Robuust geoptimaliseerde BERT-pretrainingsbenadering (RoBERTa)
- Generatieve voorgetrainde transformator (GPT)
De ML.NET API voor tekstclassificatie wordt mogelijk gemaakt door TorchSharp-. TorchSharp is een .NET-bibliotheek die toegang biedt tot de bibliotheek die PyTorch mogelijk maakt. TorchSharp bevat de bouwstenen voor het trainen van neurale netwerken helemaal opnieuw in .NET. ML.NET abstraheert een deel van de complexiteit van TorchSharp naar het scenarioniveau. Het maakt gebruik van een vooraf getrainde versie van het NAS-BERT model en past deze goed aan met uw gegevens.
Zie Aan de slag met de API voor tekstclassificatievoor een voorbeeld van tekstclassificatie.
Afbeeldingsclassificatie
Afbeeldingsclassificatie is 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, waarmee het wordt geconverteerd 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, zoals "Roos", "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 sleutel type zijn. De functiekolom moet een vector met een variabele grootte van Bytezijn.
Deze trainer voert de volgende kolommen uit:
Uitvoernaam | Type | Beschrijving |
---|---|---|
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, wordt de voorspelde labelindex i . (i is een index op basis van nul.) |
PredictedLabel |
sleuteltype | De index van het voorspelde label. Als de waarde i is, is het werkelijke label de i e categorie in het invoerlabeltype met sleutelwaarden. |
Regressie
Regressie is een onder supervisie staande machine learning- taak 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.
- Verwante artikelen zoeken in een publicatie (overeenkomsten tussen zinnen).
Regressietrainers
U kunt een regressiemodel trainen met behulp van de volgende algoritmen:
- SentenceSimilarityTrainer
- LbfgsPoissonRegressionTrainer
- LightGbmRegressionTrainer
- SdcaRegressionTrainer
- OlsTrainer
- OnlineGradientDescentTrainer
- FastTreeRegressionTrainer
- FastTreeTweedieTrainer
- FastForestRegressionTrainer
- GamRegressionTrainer
Regressie-invoer en -uitvoer
De kolomgegevens van het invoerlabel moeten Singlezijn.
De trainers voor deze taak voeren het volgende uit:
Uitvoernaam | Soort | Beschrijving |
---|---|---|
Score |
Single | De onbewerkte score die door het model is voorspeld |
Groeperen
Clustering is een machine learning- taak 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.
Trainer voor clustering
U kunt een clusteringmodel trainen met behulp van het volgende algoritme:
Clustering van invoer en uitvoer
De gegevens van de invoerkenmerken moeten Singlezijn. Er zijn geen labels nodig.
Deze trainer voert het volgende uit:
Uitvoernaam | Type | Beschrijving |
---|---|---|
Score |
Vector van Single | De afstanden van het gegeven gegevenspunt tot de zwaartepunten van alle clusters. |
PredictedLabel |
sleuteltype | De index van het dichtstbijzijnde cluster die door het model wordt voorspeld. |
Anomaliedetectie
Met de anomaliedetectietaak maakt u een anomaliedetectiemodel met behulp van PCA (Principal Component Analysis). 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.
Anomaliedetectietrainer
U kunt een anomaliedetectiemodel trainen met behulp van het volgende algoritme:
Anomaliedetectie-invoer en -uitvoer
De invoerfuncties moeten een vector van vaste grootte van Singlezijn.
Deze trainer voert het volgende uit:
Uitvoernaam | Type | Beschrijving |
---|---|---|
Score |
Single | De niet-negatieve, niet-gebonden score die is berekend door het anomaliedetectiemodel. |
PredictedLabel |
Boolean |
true als de invoer een anomalie is of false als dat niet het is. |
Ranglijst
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 rangschikker wordt getraind om nieuwe exemplaargroepen te rangschikken met onbekende scores voor elk exemplaar. ML.NET classificatieleerders zijn op basis van machine learning.
Rangschikkingstrainingsalgoritmen
U kunt een classificatiemodel trainen met de volgende algoritmen:
Classificatie-invoer en -uitvoer
Het gegevenstype invoerlabel moet sleutel type of Singlezijn. De waarde van het label bepaalt relevantie, waarbij hogere waarden een hogere relevantie aangeven. Als het label een sleutel type 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 van Single zijn en de kolom voor de invoerrijgroep moet sleutel type zijn.
Deze trainer voert het volgende uit:
Uitvoernaam | Soort | Beschrijving |
---|---|---|
Score |
Single | De niet-gebonden 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 MF-(Matrix Factorization), 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:
Vooruitzichten
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:
Objectdetectie
Objectdetectie is 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.