machine-learning
Leren onder toezicht
Zoeken…
Classificatie
Stel je voor dat een systeem appels en sinaasappels in een fruitmand wil detecteren. Systeem kan een vrucht plukken, er een eigenschap aan onttrekken (bijv. Het gewicht van die vrucht).
Stel dat het systeem een leraar heeft! dat leert het systeem welke objecten appels zijn en welke sinaasappels . Dit is een voorbeeld van een classificatieprobleem onder toezicht . Er wordt toezicht gehouden omdat we voorbeelden hebben gelabeld. Het is classificatie omdat de output een voorspelling is van welke klasse ons object ook behoort.
In dit voorbeeld beschouwen we 3 kenmerken (eigenschappen / verklarende variabelen):
- is het gewicht van de geselecteerde vrucht groter dan 0,5 gram
- is groter dan 10 cm
- is de kleur rood
(0 betekent Nee, en 1 betekent Ja)
Dus om een appel / sinaasappel te vertegenwoordigen, hebben we een reeks (vector genoemd) van 3 eigenschappen (vaak een kenmerkvector genoemd)
(bijv. [0,0,1] betekent dat dit vruchtgewicht niet groter is dan 0,5 gram, en de grootte ervan is niet groter dan 10 cm en de kleur ervan is rood)
Dus we plukken 10 fruit willekeurig en meten hun eigenschappen. De leraar (mens) labelt vervolgens elk fruit handmatig als appel => [1] of oranje => [2] .
bijv.) Leraar selecteert een vrucht die appel is. De weergave van deze appel voor het systeem kan er ongeveer zo uitzien : [1, 1, 1] => [1] , dit betekent dat deze vrucht 1. zwaarder is dan 0,5 gram , 2. groter dan 10 cm en 3. de kleur van deze vrucht is rood en uiteindelijk is het een appel (=> [1])
Dus voor alle 10 vruchten labelt de leraar elk fruit als appel [=> 1] of sinaasappel [=> 2] en het systeem heeft hun eigenschappen gevonden. zoals je vermoedt, hebben we een reeks vectoren (die het matrix noemde) die hele 10 vruchten vertegenwoordigen.
Fruitclassificatie
In dit voorbeeld leert een model fruit te classificeren met bepaalde functies, met behulp van de labels voor training.
Gewicht | Kleur | Etiket |
---|---|---|
0.5 | groen | appel |
0.6 | Purper | Pruim |
3 | groen | watermeloen |
0.1 | rood | kers |
0.5 | rood | appel |
Hier zal het model Gewicht en Kleur gebruiken als functies om het label te voorspellen. Bijvoorbeeld [0,15, 'rood'] moet resulteren in een 'kersen'-voorspelling.
Inleiding tot begeleid leren
Er zijn nogal wat situaties waarin men enorme hoeveelheden gegevens heeft en waarmee hij een object moet classificeren in een van verschillende bekende klassen. Overweeg de volgende situaties:
Bankieren: wanneer een bank een verzoek van een klant voor een bankkaart ontvangt, moet de bank beslissen om de bankkaart al dan niet uit te geven, op basis van de kenmerken van haar klanten die al genieten van de kaarten waarvan de kredietgeschiedenis bekend is.
Medisch: iemand kan geïnteresseerd zijn in de ontwikkeling van een medisch systeem dat een diagnose stelt bij een patiënt, ongeacht of hij een bepaalde ziekte heeft of niet, op basis van de waargenomen symptomen en medische tests die bij die patiënt zijn uitgevoerd.
Financiën: een financieel adviesbureau wil de trend van de koers van een aandeel voorspellen die kan worden geclassificeerd in opwaartse, neerwaartse of geen trend op basis van verschillende technische kenmerken die de koersbeweging bepalen.
Genexpressie: een wetenschapper die de genexpressiegegevens analyseert, wil de meest relevante genen en risicofactoren voor borstkanker identificeren om gezonde patiënten van borstkankerpatiënten te scheiden.
In alle bovenstaande voorbeelden is een object geclassificeerd in een van de verschillende bekende klassen, op basis van de metingen die zijn uitgevoerd op een aantal kenmerken, waarvan hij denkt dat ze de objecten van verschillende klassen discrimineren. Deze variabele worden voorspellende variabelen genoemd en het klassenlabel wordt de afhankelijke variabele genoemd. Merk op dat in alle bovenstaande voorbeelden de afhankelijke variabele categorisch is .
Om een model voor het classificatieprobleem te ontwikkelen, hebben we voor elk object gegevens nodig over een set voorgeschreven kenmerken samen met de klassenlabels waartoe de objecten behoren. De gegevensset is verdeeld in twee sets in een voorgeschreven verhouding. De grootste van deze datasets wordt de trainingsdataset genoemd en de andere testdataset . De trainingsdataset wordt gebruikt bij de ontwikkeling van het model. Omdat het model is ontwikkeld met behulp van observaties waarvan de klassenlabels bekend zijn, staan deze modellen bekend als begeleide leermodellen .
Na het ontwikkelen van het model moet het model worden geëvalueerd op zijn prestaties met behulp van de testgegevensset. Het doel van een classificatiemodel is een minimale waarschijnlijkheid van verkeerde classificatie op de ongeziene waarnemingen. Waarnemingen die niet zijn gebruikt bij de modelontwikkeling staan bekend als ongeziene waarnemingen.
Beslisboominductie is een van de technieken voor het bouwen van classificatiemodellen. Het beslissingsboommodel dat is gebouwd voor de categorische afhankelijke variabele wordt een classificatieboom genoemd . De afhankelijke variabele kan numeriek zijn in bepaalde problemen. Het beslissingsboommodel dat is ontwikkeld voor numerieke afhankelijke variabelen, wordt Regression Tree genoemd .
Lineaire regressie
Omdat Supervised Learning bestaat uit een doel- of uitkomstvariabele (of afhankelijke variabele) die moet worden voorspeld uit een bepaalde set voorspellers (onafhankelijke variabelen). Met behulp van deze set variabelen genereren we een functie die ingangen toewijst aan gewenste uitgangen. Het trainingsproces gaat door totdat het model een gewenst nauwkeurigheidsniveau op de trainingsgegevens bereikt.
Daarom zijn er veel voorbeelden van Supervised Learning-algoritmen, dus in dit geval zou ik me willen concentreren op lineaire regressie
Lineaire regressie Het wordt gebruikt om reële waarden (kosten van huizen, aantal oproepen, totale verkoop enz.) Te schatten op basis van continue variabele (n). Hier leggen we de relatie tussen onafhankelijke en afhankelijke variabelen door een beste lijn te zoeken. Deze best passende lijn staat bekend als regressielijn en wordt voorgesteld door een lineaire vergelijking Y = a * X + b.
De beste manier om lineaire regressie te begrijpen, is om deze ervaring uit de kindertijd opnieuw te beleven. Laten we zeggen dat u een kind in de vijfde klas vraagt om mensen in zijn klas te rangschikken door de volgorde van het gewicht te verhogen, zonder hen hun gewichten te vragen! Wat denk je dat het kind zal doen? Hij / zij zou waarschijnlijk (visueel analyseren) kijken naar de lengte en bouw van mensen en ze rangschikken met behulp van een combinatie van deze zichtbare parameters.
Dit is lineaire regressie in het echte leven! Het kind is er zelfs achter gekomen dat lengte en lichaamsbouw zouden worden gecorreleerd aan het gewicht door een relatie, die eruit ziet als de bovenstaande vergelijking.
In deze vergelijking:
Y – Dependent Variable
a – Slope
X – Independent variable
b – Intercept
Deze coëfficiënten a en b worden afgeleid op basis van het minimaliseren van de som van het kwadraatverschil van afstand tussen gegevenspunten en regressielijn.
Bekijk het onderstaande voorbeeld. Hier hebben we de best passende lijn geïdentificeerd met lineaire vergelijking y = 0.2811x + 13.9 . Nu met behulp van deze vergelijking, kunnen we het gewicht vinden, wetende de lengte van een persoon.
Lineaire regressie bestaat hoofdzakelijk uit twee soorten: eenvoudige lineaire regressie en meervoudige lineaire regressie. Eenvoudige lineaire regressie wordt gekenmerkt door één onafhankelijke variabele. En meervoudige lineaire regressie (zoals de naam al doet vermoeden) wordt gekenmerkt door meerdere (meer dan 1) onafhankelijke variabelen. Terwijl u de best passende lijn vindt, kunt u een polynomiale of kromlijnige regressie passen. En deze staan bekend als polynomiale of kromlijnige regressie.
Gewoon een hint over het implementeren van lineaire regressie in Python
#Import Library
#Import other necessary libraries like pandas, numpy...
from sklearn import linear_model
#Load Train and Test datasets
#Identify feature and response variable(s) and values must be numeric and numpy arrays
x_train=input_variables_values_training_datasets
y_train=target_variables_values_training_datasets
x_test=input_variables_values_test_datasets
# Create linear regression object
linear = linear_model.LinearRegression()
# Train the model using the training sets and check score
linear.fit(x_train, y_train)
linear.score(x_train, y_train)
#Equation coefficient and Intercept
print('Coefficient: \n', linear.coef_)
print('Intercept: \n', linear.intercept_)
#Predict Output
predicted= linear.predict(x_test)
Ik heb een glimp gegeven van het begrijpen van Supervised Learning door te graven naar het Lineaire Regressie-algoritme, samen met een fragment van Python-code.