Machine learning in R voor beginners met voorbeeld



Deze blog over machine learning met R helpt je de kernconcepten van Machine Learning te leren en verschillende machine learning-algoritmen te implementeren met R.

Machine learning met R

Machine learning is het heden en de toekomst! Van de aanbevelingsengine van Netflix tot de zelfrijdende auto van Google, het is allemaal machine learning. Deze blog over Machine Learning met R helpt je de kernconcepten van machine learning te begrijpen, gevolgd door verschillende machine learning-algoritmen en het implementeren van die machine learning-algoritmen met R.

Deze blog over 'Machine Learning with R' bestaat uit deze secties:





Machine learning met R | Edureka

Inzicht in machine learning

Fish1- Machine Learning met R - Edureka



Hoe weet je dat het allemaal vissen zijn?



Als kind ben je misschien een foto van een vis tegengekomen en zou je door je kleuterleidsters of ouders zijn verteld dat dit een vis is en dat er enkele specifieke kenmerken aan verbonden zijn, zoals vinnen, kieuwen, een paar ogen, een staart enzovoort. Telkens wanneer uw brein een afbeelding tegenkomt met die reeks kenmerken, registreert het deze automatisch als een vis, omdat uw brein dat heeft geleerd dat het een vis is.

Dat is hoe ons brein werkt, maar hoe zit het met een machine? Als hetzelfde beeld naar een machine wordt gevoerd, hoe zal de machine dan identificeren dat het een vis is?

Dit is waar M achine leren komt binnen. We blijven afbeeldingen van een vis naar een computer sturen met de tag 'vis' tot de machine leert alle bijbehorende functies met een vis.

Zodra de machine alle kenmerken van een vis heeft geleerd, zullen we hem nieuwe gegevens geven om te bepalen hoeveel hij heeft geleerd.

Met andere woorden, Ruwe gegevens / trainingsgegevens wordt aan de machine gegeven, zodat deze leert alle functies die zijn gekoppeld aan de Trainingsdata. Als het leren eenmaal is voltooid, wordt het gegeven Nieuwe gegevens / testgegevens om te bepalen hoe goed de machine heeft geleerd.

Laten we verder gaan in deze Machine Learning with R-blog en inzicht krijgen in soorten Machine Learning.

Soorten machine learning

  • Leren onder toezicht:

Het Supervised Learning-algoritme leert van een bekende dataset (Training Data) met labels om voorspellingen te doen.

Regressie en classificatie zijn enkele voorbeelden van begeleid leren.

#Classificatie:

Classificatie bepaalt tot welke set categorieën een nieuwe waarneming behoort, dwz een classificatie-algoritme leert alle kenmerken en labels van de trainingsgegevens en wanneer er nieuwe gegevens aan worden gegeven, moet het labels aan de nieuwe waarnemingen toekennen, afhankelijk van wat het heeft geleerd van de trainingsgegevens.

Als in dit voorbeeld de eerste waarneming het label 'Man' krijgt, is deze terecht geclassificeerd, maar als deze het label 'Vrouw' krijgt, is de classificatie onjuist. Evenzo voor de tweede waarneming: als het gegeven label 'Vrouw' is, is het correct geclassificeerd, anders is de classificatie verkeerd.

#Regressie:

Regressie is een leeralgoritme onder supervisie dat helpt bij het bepalen hoe een variabele een andere variabele beïnvloedt.

Hier is 'living_area' de onafhankelijke variabele en 'price' de afhankelijke variabele, d.w.z. we bepalen hoe 'prijs' varieert met betrekking tot 'living_area'.

  • Ongecontroleerd leren:

Ongecontroleerd leeralgoritme trekt conclusies uit gegevens die geen labels hebben.

sorteermatrices c ++

Clustering is een voorbeeld van leren zonder toezicht. 'K-betekent', 'Hiërarchisch', 'Fuzzy C-Means' zijn enkele voorbeelden van clusteralgoritmen.

In dit voorbeeld is de set waarnemingen verdeeld in twee clusters. Clustering gebeurt op basis van gelijkenis tussen de waarnemingen. Er is een grote overeenkomst binnen de clusters en een lage overeenkomst tussen de clusters, d.w.z. er is een zeer hoge overeenkomst tussen alle bussen, maar een lage overeenkomst tussen de bussen en auto's.

  • Versterking leren:

Reinforcement Learning is een type algoritme voor machine learning waarbij de machine / agent in een milieu leert ideaal gedrag om zijn prestaties te maximaliseren. Eenvoudige feedback over de beloning is vereist voor de agent om zijn gedrag te leren, dit wordt de versterkingssignaal .

Laten we nemen pacman bijvoorbeeld. Zolang pacman voedsel blijft eten, verdient hij punten, maar als hij tegen een monster botst, verliest hij zijn leven. Zo leert pacman dat hij meer voedsel moet eten en monsters moet vermijdenom de prestaties te verbeteren.

Machine Learning implementeren met R:

Lineaire regressie:

We werken met de diamonds-dataset om een ​​lineair regressie-algoritme te implementeren:

Beschrijving van de dataset:

Voordat we een model bouwen op basis van de gegevens, moeten we de gegevens opsplitsen in 'trein' en 'test' sets. Het model wordt gebouwd op de 'trein' -set en de nauwkeurigheid wordt gecontroleerd op de 'test' -set.

We moeten het 'caTools' -pakket laden om de gegevens in twee sets te splitsen.

bibliotheek (caTools)

Het pakket 'caTools' biedt een functie 'sample.split ()' die helpt bij het splitsen van de gegevens.

sample.split (diamanten $ prijs, SplitRatio = 0,65) -> split_index

65% van de waarnemingen uit de prijskolom hebben het label 'waar' gekregen en de rest 35% heeft het label 'vals' gekregen.

subset (diamonds, split_index == T) -> train subset (diamonds, split_index == F) -> test

Alle waarnemingen met het label 'waar' zijn opgeslagen in de map ' trein ”object en die waarnemingen met 'false' label zijn toegewezen aan de 'test' set.

Nu de splitsing is voltooid en we onze 'trein'- en' test'-sets hebben, is het tijd om het lineaire regressiemodel op de trainingsset te bouwen.

We zullen de functie 'lm ()' gebruiken om het lineaire regressiemodel op de 'trein' -gegevens te bouwen. We bepalen de prijs van de diamanten met betrekking tot alle andere variabelen van de dataset. Het gebouwde model wordt opgeslagen in het object “mod_regress”.

lm (prijs ~., data = trein) -> mod_regress

Nu we het model hebben gebouwd, moeten we voorspellingen doen over de 'test' -set. De functie 'predict ()' wordt gebruikt om voorspellingen te krijgen. Er zijn twee argumenten nodig: de gebouwd model en de testset. De voorspelde resultaten worden opgeslagen in het 'result_regress' -object.

voorspellen (mod_regress, test) -> result_regress

Laten we de werkelijke prijswaarden van de 'test'-dataset en de voorspelde waarden in één dataset binden met de functie' cbind () '. Het nieuwe dataframe wordt opgeslagen in 'Final_Data'

cbind (Actual = test $ price, Predicted = result_regress) -> Final_Data 
as.data.frame (Final_Data) -> Final_Data

Een blik op de 'Final_Data' die bestaat uit werkelijke waarden en voorspelde waarden:

Laten we de fout zoeken door de voorspelde waarden af ​​te trekken van de werkelijke waarden en deze fout als een nieuwe kolom toe te voegen aan de 'Final_Data':

(Final_Data $ Actual- Final_Data $ Predicted) -> fout
cbind (Final_Data, error) -> Final_Data

Een blik op de 'Final_Data' die ook de fout in de voorspelling omvat:

Nu gaan we door en berekenen ' Root Mean Square Error ' wat een totale fout geeft voor alle voorspellingen

rmse1<-sqrt(mean(Final_Data$error^2)) 
rmse1

Laten we nu een ander model bouwen, zodat we de nauwkeurigheid van beide modellen kunnen vergelijken en kunnen bepalen welk model beter is.

We bouwen een nieuw lineair regressiemodel op de 'trein'-set, maar deze keer laten we de' x'- en 'y'-kolommen van de onafhankelijke variabelen vallen, dwz de' prijs 'van de diamanten wordt bepaald door alle kolommen behalve 'x' en 'y'.

Het gebouwde model wordt opgeslagen in 'mod_regress2':

lm (prijs ~.-y-z, data = trein) -> mod_regress2

De voorspelde resultaten worden opgeslagen in 'result_regress2'

voorspellen (mod_regress2, test) -> result_regress2

Werkelijke en voorspelde waarden worden gecombineerd en opgeslagen in 'Final_Data2':

selenium webdriver met komkommer voorbeeld in eclips
cbind (Actual = test $ price, Predicted = result_regress2) -> Final_Data2 
as.data.frame (Final_Data2) -> Final_Data2

Laten we ook de fout in de voorspelling toevoegen aan 'Final_Data2'

(Final_Data2 $ Actual- Final_Data2 $ Predicted) -> error2
cbind (Final_Data2, error2) -> Final_Data2

Een blik op 'Final_Data2':

Root Mean Square Error vinden om de totale fout te krijgen:

rmse2<-sqrt(mean(Final_Data2$error^2))

We zien dat 'rmse2' iets kleiner is dan 'rmse1' en daarom is het tweede model iets beter dan het eerste model.

Classificatie:

We werken met de gegevensset 'car_purchase' om te implementeren recursieve partitionering dat is een classificatie-algoritme.

Laten we de gegevens opsplitsen in 'train' en 'test' sets met behulp van de 'sample.split ()' functie van 'caTools' pakket.

bibliotheek (caTools)

65% van de waarnemingen uit de kolom ‘Aangeschaft’ krijgen een 'TRUE' -label toegewezen en de rest krijgt een 'FALSE' -label.

sample.split (car_purchase $ Aangeschaft, SplitRatio = 0.65) -> split_values

Al die waarnemingen met het label 'WAAR' worden opgeslagen in 'trein'-gegevens en die waarnemingen met het label 'FALSE' worden toegewezen aan' test'-gegevens.

subset (car_purchase, split_values ​​== T) -> train_data
subset (car_purchase, split_values ​​== F) -> test_data

Tijd om het recursieve partitioneringsalgoritme te bouwen:

We beginnen met het laden van het ‘rpart’ -pakket:

bibliotheek (rpart)

De kolom 'Aangeschaft' is de afhankelijke variabele en alle andere kolommen zijn de onafhankelijke variabelen, d.w.z. we bepalen of de persoon de auto heeft gekocht of niet met betrekking tot alle andere kolommen. Het model is gebouwd op de “train_data” en het resultaat wordt opgeslagen in “mod1”.

rpart (Aangeschaft ~., data = train_data) -> mod1

Laten we het resultaat plotten:

plot (mod1, marge = 0,1) tekst (mod1, mooi = T, cex = 0,8)

Laten we nu doorgaan en de resultaten voorspellen op 'test_data'. We geven het ingebouwde rpart-model “mod1” als het eerste argument, de testset “test_data” als het tweede argument en het voorspellingstype als “class” voor het derde argument. Het resultaat wordt opgeslagen in het ‘result1’ -object.

voorspellen (mod1, test_data, type = 'class') -> resultaat1

Laten we de nauwkeurigheid van het model evalueren met de functie 'confusionMatrix ()' van het caret-pakket.

bibliotheek (caret) confusionMatrix (table (test_data $ Aankoop, resultaat1))

De verwarringmatrix vertelt ons dat van de 90 waarnemingen waarbij de persoon de auto niet heeft gekocht, 79 waarnemingen terecht zijn geclassificeerd als 'Nee' en 11 ten onrechte zijn geclassificeerd als 'JA'. Evenzo zijn van de 50 waarnemingen waarbij de persoon de auto heeft gekocht, er 47 terecht geclassificeerd als 'JA' en 3 zijn ten onrechte geclassificeerd als 'NEE'.

We kunnen de nauwkeurigheid van het model vinden door de juiste voorspellingen te delen door totale voorspellingen, d.w.z. (79 + 47) / (79 + 47 + 11 + 3).

K-Means Clustering:

We werken met 'iris'-dataset om k-means clustering te implementeren:

Laten we de kolom 'Soorten' verwijderen en een nieuwe dataset maken die alleen de eerste vier kolommen van de ‘iris’ dataset bevat.

woordenboek datastructuur in java
iris [1: 4] -> iris_k

Laten we het aantal clusters op 3 nemen. De functie 'Kmeans ()' neemt de invoergegevens en het aantal clusters waarin de gegevens moeten worden geclusterd. De syntaxis is: kmeans (data, k) waarbij k het aantal clustercentra is.

kmeans (iris_k, 3) -> k1

Analyse van de clustering:

str (k1)

De functie str () geeft de structuur van de kmeans die verschillende parameters bevat zoals insidess, betweenss, etc, en analyseert waarmee je de prestaties van kmeans kunt achterhalen.

betweenss: tussen som van kwadraten, d.w.z. intracluster-overeenkomst

insidess: binnen som van kwadraat, d.w.z. overeenkomst tussen clusters

totwithinss: Som van alle binnenste van alle clusters, d.w.z. totale intra-cluster overeenkomst

Een goede clustering heeft een lagere waarde van ‘tot.withinss’ en een hogere waarde van ‘betweenss’, wat afhangt van het aantal clusters ‘k’ dat aanvankelijk is gekozen.

De tijd is rijp om een ​​expert in Machine Learning te worden en te profiteren van nieuwe kansen die op je pad komen. Dit brengt ons bij het einde van deze ' Machine learning met R ”Blog. Ik hoop dat deze blog informatief vruchtbaar was.

Edureka heeft een speciaal samengesteld waarmee u expertise opdoet in Machine Learning-algoritmen zoals K-Means Clustering, Decision Trees, Random Forest, Naive Bayes. Je leert ook de begrippen Statistieken, Tijdreeksen, Text Mining en een inleiding tot Deep Learning. Nieuwe batches voor deze cursus beginnen binnenkort !!