Maskinindlæring i R for begyndere med eksempel

Denne blog om maskinindlæring med R hjælper dig med at lære kernekoncepter i maskinindlæring og implementere forskellige maskinindlæringsalgoritmer med R.

Maskinindlæring med R

Maskinindlæring er nutiden og fremtiden! Fra Netflix's anbefalingsmotor til Googles selvkørende bil er alt maskinindlæring. Denne blog om maskinindlæring med R hjælper dig med at forstå kernebegreberne maskinindlæring efterfulgt af forskellige maskinindlæringsalgoritmer og implementere disse maskinindlæringsalgoritmer med R.



Denne blog om 'Machine Learning with R' består af disse sektioner:



Maskinindlæring med R | Edureka

flet sortering i c ++

Forståelse af maskinindlæring

Fish1- Maskinindlæring med R - Edureka



Hvordan ved du, at alle disse er fisk?



Som barn er du muligvis stødt på et billede af en fisk, og du ville have fået at vide af dine børnehaveklærere eller forældre, at dette er en fisk, og den har nogle specifikke funktioner forbundet med den, som om den har finner, gæller, et par øjne, en hale og så videre. Når din hjerne nu støder på et billede med disse sæt funktioner, registrerer den det automatisk som en fisk, fordi din hjerne har det lærte at det er en fisk.

Sådan fungerer vores hjerne, men hvad med en maskine? Hvis det samme billede føres til en maskine, hvordan identificerer maskinen det som en fisk?

Det er her M achine læring kommer ind. Vi fortsætter med at fodre billeder af en fisk til en computer med tagget 'fisk', indtil den maskinen lærer alle de tilknyttede funktioner med en fisk.

Når maskinen har lært alle de funktioner, der er knyttet til en fisk, tilfører vi den nye data for at bestemme, hvor meget den har lært.

Med andre ord, Rådata / træningsdata gives til maskinen, så den lærer alle de funktioner, der er knyttet til Træningsdata. Når læringen er færdig, gives den Nye data / testdata for at bestemme, hvor godt maskinen har lært.

Lad os gå videre i denne maskinindlæring med R-blog og forstå hvilke typer maskinindlæring.

Typer af maskinindlæring

  • Overvåget læring:

Supervised Learning-algoritme lærer fra et kendt datasæt (Training Data), der har etiketter til at forudsige.

Regression og klassificering er nogle eksempler på Supervised Learning.

#Klassifikation:

Klassificering bestemmer, til hvilket sæt af kategorier en ny observation hører, dvs. en klassificeringsalgoritme lærer alle funktionerne og etiketterne i træningsdataene, og når der gives nye data til den, skal den tildele etiketter til de nye observationer afhængigt af hvad den har lært fra træningsdataene.

I dette eksempel klassificeres den med rette, hvis den første observation får mærket 'mand', men hvis den får mærket 'kvinde', er klassificeringen forkert. Tilsvarende for den anden observation, hvis etiketten er “Woman”, er den med rette klassificeret, ellers er klassificeringen forkert.

#Regression:

Regression er en overvåget læringsalgoritme, der hjælper med at bestemme, hvordan en variabel påvirker en anden variabel.

Herovre er 'levende område' den uafhængige variabel, og 'pris' er den afhængige variabel, dvs. vi bestemmer, hvordan 'pris' varierer med hensyn til 'levende område'.

  • Uovervåget læring:

Uovervåget læringsalgoritme trækker slutninger fra data, der ikke har etiketter.

Klyngedannelse er et eksempel på ikke-overvåget læring. “K-betyder”, “Hierarkisk”, “Fuzzy C-middel” er nogle eksempler på grupperingsalgoritmer.

I dette eksempel er observationssættet opdelt i to klynger. Klyngedannelse sker på baggrund af ligheden mellem observationer. Der er en høj lighed mellem klynger og en lighed mellem klynger, dvs. der er en meget høj lighed mellem alle busser, men lav lighed mellem busser og biler.

  • Læring af forstærkning:

Forstærkningslæring er en type maskinindlæringsalgoritme, hvor maskine / agent i en miljø lærer ideel adfærd for at maksimere dens præstationer. Simpel belønningsfeedback kræves for at agenten skal lære sin adfærd, dette kaldes forstærkningssignal .

Lad os tage Pacman for eksempel. Så længe Pacman fortsætter med at spise mad, tjener det point, men når det styrter mod et monster, mister det livet. Således lærer Pacman, at det er nødvendigt at spise mere mad og undgå monstrefor at forbedre dets ydeevne.

Implementering af maskinindlæring med R:

Lineær regression:

Vi arbejder med datasættet med diamanter for at implementere lineær regressionsalgoritme:

Beskrivelse af datasættet:

Før vi bygger en model på dataene, skal vi opdele dataene i 'tog' og 'test' sæt. Modellen bygges på 'tog' -sættet, og dets nøjagtighed kontrolleres på 'test' -sættet.

Vi er nødt til at indlæse 'caTools' -pakken for at opdele dataene i to sæt.

bibliotek (caTools)

'CaTools' -pakken giver en funktion 'sample.split ()', som hjælper med at opdele dataene.

sample.split (diamanter $ pris, SplitRatio = 0,65) -> split_index

65% af observationer fra priskolonne er tildelt 'sand' -etiketten, og resten 35% er tildelt 'falsk' -etiket.

delmængde (diamanter, split_index == T) -> tog delmængde (diamanter, split_index == F) -> test

Alle observationer, der har 'ægte' etiket, er blevet gemt i ' tog ”objekt og de observationer, der har 'falsk' etiket, er blevet tildelt 'test' -sættet.

Nu hvor opsplitningen er færdig, og vi har vores 'tog' og 'test' sæt, er det tid til at bygge den lineære regressionsmodel på træningssættet.

bedste ide til Java-udvikling

Vi bruger funktionen 'lm ()' til at bygge den lineære regressionsmodel på 'tog' -dataene. Vi bestemmer pris af diamanterne med hensyn til alle andre variabler i datasættet. Den indbyggede model er gemt i objektet “mod_regress”.

lm (pris ~., data = tog) -> mod_regress

Nu hvor vi har bygget modellen, er vi nødt til at forudsige på 'test' -sættet. “Forudsig ()” -funktion bruges til at få forudsigelser. Det kræver to argumenter: bygget model og testsæt. De forudsagte resultater er gemt i objektet “result_regress”.

forudsig (mod_tilgang, test) -> resultattilgang

Lad os binde de faktiske prisværdier fra 'test' datasættet og de forudsagte værdier til et enkelt datasæt ved hjælp af funktionen 'cbind ()'. Den nye dataramme er gemt i “Final_Data”

cbind (Faktisk = test $ pris, Forudsagt = resultat_gang) -> Endelig_Data 
as.data.frame (Final_Data) -> Final_Data

Et blik på 'Final_Data', som består af faktiske værdier og forudsagte værdier:

Lad os finde fejlen ved at trække de forudsagte værdier fra de faktiske værdier og tilføje denne fejl som en ny kolonne til 'Final_Data':

(Final_Data $ Faktisk- Final_Data $ forudsagt) -> fejl
cbind (Final_Data, fejl) -> Final_Data

Et blik på 'Final_Data', som også består af fejlen i forudsigelsen:

Nu går vi videre og beregner ' Root Mean Square-fejl ” hvilket giver en samlet fejl for alle forudsigelser

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

Lad os fortsætte med at opbygge en anden model, så vi kan sammenligne nøjagtigheden af ​​begge disse modeller og afgøre, hvilken der er bedre.

Vi bygger en ny lineær regressionsmodel på 'tog' -sættet, men denne gang vil vi slippe 'x' og 'y' kolonnerne fra de uafhængige variabler, dvs. 'prisen' på diamanterne bestemmes af alle kolonner undtagen 'x' og 'y'.

Den byggede model er gemt i “mod_regress2”:

lm (pris ~.-y-z, data = tog) -> mod_gang 2

De forudsagte resultater er gemt i “result_regress2”

forudsig (mod_gang2, test) -> resultat_gang2

Faktiske og forudsagte værdier kombineres og gemmes i “Final_Data2”:

cbind (Faktisk = test $ pris, Forudsagt = resultat_gang2) -> Endelig_Data2 
som.data.frame (Final_Data2) -> Final_Data2

Lad os også tilføje fejlen i forudsigelse til 'Final_Data2'

(Final_Data2 $ Faktisk- Final_Data2 $ forudsagt) -> error2
cbind (Final_Data2, error2) -> Final_Data2

Et blik på “Final_Data2”:

Find root-gennemsnitlig kvadratfejl for at få den samlede fejl:

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

Vi ser, at “rmse2” er marginalt mindre end “rmse1”, og derfor er den anden model marginalt bedre end den første model.

overføre filer til ec2 windows instans

Klassifikation:

Vi arbejder med datasættet 'bil_køb', der skal implementeres rekursiv partitionering som er en klassificeringsalgoritme.

Lad os opdele dataene i 'tog' og 'test' sæt ved hjælp af 'sample.split ()' funktion fra 'caTools' pakke.

bibliotek (caTools)

65% af observationerne fra kolonnen 'Købt' får tildelt 'SANDE' etiketter, og resten tildeles 'FALSE' -etiketter.

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

Alle de observationer, der har 'TRUE' -mærket, gemmes i 'tog'-data, og de observationer, der har 'FALSE' -mærket, tildeles til 'test' -data.

delmængde (bilkøb, splitværdier == T) -> togdata
delmængde (bilkøb, splitværdier == F) -> testdata

Tid til at opbygge den rekursive partitioneringsalgoritme:

Vi starter med at indlæse 'rpart'-pakken:

bibliotek (rpart)

'Købt' kolonne er den afhængige variabel, og alle andre kolonner er de uafhængige variabler, dvs. vi bestemmer, om personen har købt bilen eller ej i forhold til alle andre kolonner. Modellen er bygget på 'train_data' og resultatet gemmes i 'mod1'.

rpart (købt ~., data = togdata) -> mod1

Lad os plotte resultatet:

plot (mod1, margin = 0,1) tekst (mod1, smuk = T, cex = 0,8)

Lad os nu gå videre og forudsige resultaterne på 'test_data'. Vi giver den indbyggede rpart-model 'mod1' som det første argument, testsættet 'test_data' som det andet argument og forudsigelsestypen som 'klasse' for det tredje argument. Resultatet er gemt i 'resultat1' objekt.

forudsig (mod1, test_data, type = 'klasse') -> resultat1

Lad os evaluere nøjagtigheden af ​​modellen ved hjælp af 'confusionMatrix ()' -funktionen fra caret-pakken.

bibliotek (vagt) confusionMatrix (tabel (test_data $ købt, resultat1))

Forvirringsmatricen fortæller os, at ud af de 90 observationer, hvor personen ikke købte bilen, er 79 observationer med rette blevet klassificeret som “Nej” og 11 er forkert klassificeret som “JA”. Tilsvarende er ud af de 50 observationer, hvor personen faktisk købte bilen, 47 med rette blevet klassificeret som “JA” og 3 er forkert klassificeret som “NEJ”.

Vi kan finde nøjagtigheden af ​​modellen ved at dividere de korrekte forudsigelser med samlede forudsigelser, dvs. (79 + 47) / (79 + 47 + 11 + 3).

K-Means Clustering:

Vi arbejder med datasættet 'iris' for at implementere k-betyder klynger:

Lad os fjerne kolonnen 'Arter' og oprette et nyt datasæt, der kun omfatter de første fire kolonner fra 'iris' -datasættet.

iris [1: 4] -> iris_k

Lad os tage antallet af klynger til at være 3. “Kmeans ()” -funktionen tager inputdataene og antallet af klynger, hvor dataene skal grupperes. Syntaksen er: kmeans (data, k) hvor k er antallet af klyngecentre.

kmeans (iris_k, 3) -> k1

Analyse af klyngen:

str (k1)

Str () -funktionen giver strukturen på kmeans, som inkluderer forskellige parametre som withinss, betweenss osv., Analyserer som du kan finde ud af kmeans performance.

betweenss: Mellem summen af ​​firkanter dvs. Intracluster lighed

withinss: Inden for summen af ​​kvadratet, dvs. intercluster-lighed

totwithinss: Summen af ​​alle withinss af alle klynger, dvs. total lighed inden for klyngen

En god gruppering vil have en lavere værdi på 'tot.withinss' og højere værdi på 'betweenss', hvilket afhænger af antallet af klynger 'k', der blev valgt oprindeligt.

Tiden er moden til at blive ekspert i maskinlæring for at udnytte de nye muligheder, der kommer din vej. Dette bringer os til slutningen af ​​dette ” Maskinindlæring med R ' blog. Jeg håber, at denne blog var informativ, frugtbar.

Edureka har en specielt kurateret som hjælper dig med at få ekspertise inden for maskinlæringsalgoritmer som K-Means Clustering, Decision Trees, Random Forest, Naive Bayes. Du lærer også begreberne Statistik, Tidsserier, Tekstminedrift og en introduktion til dyb læring. Nye partier til dette kursus starter snart !!