Maskinlæring i R for nybegynnere med eksempel



Denne bloggen om maskinlæring med R hjelper deg med å lære kjernebegrepene Machine Learning og implementere forskjellige maskinlæringsalgoritmer med R.

Maskinlæring med R

Maskinlæring er nåtiden og fremtiden! Fra Netflixs anbefalingsmotor til Googles selvkjørende bil, alt er maskinlæring. Denne bloggen om maskinlæring med R hjelper deg med å forstå kjernebegrepene maskinlæring etterfulgt av forskjellige maskinlæringsalgoritmer og implementere disse maskinlæringsalgoritmene med R.

Denne bloggen på “Machine Learning with R” består av disse seksjonene:





Maskinlæring med R | Edureka

Forstå maskinlæring

Fish1- Machine Learning with R - Edureka



Hvordan vet du at alle disse er fisk?



Som barn hadde du kanskje kommet over et bilde av en fisk, og du ville ha blitt fortalt av barnehagelærerne eller foreldrene dine at dette er en fisk, og den har noen spesifikke funksjoner knyttet til den som om den har finner, gjeller, et par øyne, en hale og så videre. Når hjernen din kommer over et bilde med disse funksjonene, registrerer den det automatisk som en fisk fordi hjernen din har det lært at det er en fisk.

Slik fungerer hjernen vår, men hva med en maskin? Hvis det samme bildet mates til en maskin, hvordan vil maskinen identifisere at det er en fisk?

Det er her M achine læring kommer inn. Vi fortsetter å mate bilder av en fisk til en datamaskin med merkelappen 'fisk' til maskinen lærer alle funksjonene som er tilknyttet med en fisk.

Når maskinen har lært seg alle funksjonene knyttet til en fisk, vil vi mate den med nye data for å avgjøre hvor mye den har lært.

Med andre ord, Rådata / treningsdata blir gitt til maskinen, slik at den lærer alle funksjonene knyttet til Treningsdata. Når læringen er ferdig, blir den gitt Nye data / testdata for å bestemme hvor godt maskinen har lært.

La oss gå videre i denne maskinlæringen med R-bloggen og forstå hvilke typer maskinlæring.

Typer maskinlæring

  • Veiledet læring:

Overvåket læringsalgoritme lærer fra et kjent datasett (Training Data) som har etiketter for å komme med spådommer.

Regresjon og klassifisering er noen eksempler på veiledet læring.

#Klassifisering:

Klassifisering bestemmer hvilket kategorisett en ny observasjon tilhører, dvs. en klassifiseringsalgoritme lærer alle funksjonene og merkene til treningsdataene, og når nye data blir gitt til den, må den tilordne etiketter til de nye observasjonene, avhengig av hva den har lært fra treningsdataene.

For dette eksemplet, hvis den første observasjonen får merkelappen “Mann”, blir den riktig klassifisert, men hvis den får merket “Kvinne”, er klassifiseringen feil. Tilsvarende for den andre observasjonen, hvis merket er 'Kvinne', er den riktig klassifisert, ellers er klassifiseringen feil.

#Regresjon:

Regresjon er en overvåket læringsalgoritme som hjelper til med å bestemme hvordan en variabel påvirker en annen variabel.

Her borte er 'levende område' den uavhengige variabelen og 'pris' er den avhengige variabelen, dvs. vi bestemmer hvordan 'pris' varierer med hensyn til 'levende område'.

  • Uovervåket læring:

Uovervåket læringsalgoritme trekker slutninger fra data som ikke har etiketter.

Gruppering er et eksempel på læring uten tilsyn. “K-betyr”, “Hierarkisk”, “Fuzzy C-middel” er noen eksempler på grupperingsalgoritmer.

I dette eksemplet er observasjonssettet delt inn i to klynger. Klynging gjøres på grunnlag av likhet mellom observasjonene. Det er høy likhet mellom klynger og lav likhet mellom klynger, dvs. det er en veldig høy likhet mellom alle bussene, men lav likhet mellom bussene og bilene.

  • Forsterkningslæring:

Reinforcement Learning er en type maskinlæringsalgoritme der maskin / agent i en miljø lærer seg ideell atferd for å maksimere ytelsen. Enkel tilbakemelding om belønning kreves for at agenten skal lære seg atferd, dette er kjent som forsterkningssignal .

La oss ta Pac Man for eksempel. Så lenge Pacman fortsetter å spise mat, tjener det poeng, men når det krasjer mot et monster, mister det livet. Dermed lærer Pacman at den trenger å spise mer mat og unngå monstrefor å forbedre ytelsen.

Implementering av maskinlæring med R:

Lineær regresjon:

Vi jobber med datasettene for å implementere lineær regresjonsalgoritme:

Beskrivelse av datasettet:

Før vi bygger en hvilken som helst modell på dataene, skal vi dele dataene i 'tog' og 'test' sett. Modellen vil bli bygget på 'tog' -settet og nøyaktigheten vil bli sjekket på 'test' -settet.

Vi må laste inn “caTools” -pakken for å dele dataene i to sett.

bibliotek (caTools)

“CaTools” -pakken gir en funksjon “sample.split ()” som hjelper til med å dele dataene.

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

65% av observasjonene fra priskolonnen har fått tildelt den 'sanne' etiketten, og resten 35% har fått den 'falske' etiketten.

delmengde (diamanter, split_index == T) -> tog delmengde (diamanter, split_index == F) -> test

Alle observasjonene som har 'sann' etikett er lagret i ' tog ”objekt og observasjonene som har 'falsk' etikett er tilordnet 'test' settet.

c ++ sorteringsliste

Nå som splitting er ferdig og vi har 'tog' og 'test' sett, er det på tide å bygge den lineære regresjonsmodellen på treningssettet.

Vi bruker “lm ()” -funksjonen til å bygge den lineære regresjonsmodellen på “tog” -dataene. Vi bestemmer pris av diamantene med hensyn til alle andre variabler i datasettet. Den innebygde modellen lagres i objektet “mod_regress”.

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

Nå som vi har bygget modellen, må vi komme med spådommer på 'test' settet. “Predict ()” -funksjonen brukes til å få spådommer. Det krever to argumenter: bygget modell og testsett. De forutsagte resultatene lagres i “result_regress” -objektet.

forutsi (mod_regress, test) -> result_regress

La oss binde de faktiske prisverdiene fra 'test' -datasettet og de forutsagte verdiene til et enkelt datasett ved hjelp av 'cbind ()' -funksjonen. Den nye datarammen er lagret i “Final_Data”

cbind (Faktisk = test $ pris, Forutsagt = resultat_inngang) -> Final_Data 
as.data.frame (Final_Data) -> Final_Data

Et blikk på 'Final_Data' som består av faktiske verdier og forutsagte verdier:

La oss finne feilen ved å trekke de forutsagte verdiene fra de faktiske verdiene og legge til denne feilen som en ny kolonne i 'Final_Data':

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

Et blikk på 'Final_Data' som også består av feilen i spådommen:

Nå skal vi fortsette og beregne ' Root Mean Square Error ” som gir en samlet feil for alle spådommene

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

La oss videre bygge en annen modell, slik at vi kan sammenligne nøyaktigheten til begge disse modellene og bestemme hvilken som er bedre.

Vi vil bygge en ny lineær regresjonsmodell på 'tog' settet, men denne gangen vil vi slippe 'x' og 'y' kolonnene fra de uavhengige variablene, dvs. 'prisen' på diamantene bestemmes av alle kolonner unntatt 'x' og 'y'.

Den innebygde modellen er lagret i “mod_regress2”:

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

De forventede resultatene lagres i “result_regress2”

forutsi (mod_regress2, test) -> result_regress2

Faktiske og predikerte verdier kombineres og lagres i “Final_Data2”:

cbind (Faktisk = test $ pris, Forutsagt = resultat_inngang2) -> Final_Data2 
as.data.frame (Final_Data2) -> Final_Data2

La oss også legge til feilmeldingen i 'Final_Data2'

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

Et blikk på “Final_Data2”:

Finne rotmessig kvadratfeil for å få den samlede feilen:

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

løft noe til en makt i java

Vi ser at “rmse2” er marginalt mindre enn “rmse1”, og dermed er den andre modellen marginalt bedre enn den første modellen.

Klassifisering:

Vi skal jobbe med datasettet «bil_kjøp» for å implementere rekursiv partisjonering som er en klassifiseringsalgoritme.

La oss dele dataene i 'tog' og 'test' sett ved hjelp av 'sample.split ()' -funksjonen fra 'caTools' -pakken.

bibliotek (caTools)

65% av observasjonene fra 'Innkjøpt' kolonne vil bli tildelt 'SANNE' etiketter, og resten vil bli tildelt 'FALSE' -etiketter.

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

Alle observasjonene som har 'SANT' -merket vil bli lagret i 'tog' -data, og de observasjonene som har 'FALSE' -merke vil bli tilordnet til 'test' -data.

delmengde (bilkjøp, splitverdier == T) -> togdata
delmengde (bilkjøp, splitverdier == F) -> testdata

På tide å bygge den rekursive partisjoneringsalgoritmen:

Vi begynner med å laste inn 'rpart' -pakken:

bibliotek (rpart)

'Kjøpt' -kolonnen vil være den avhengige variabelen, og alle andre kolonner er de uavhengige variablene, dvs. vi bestemmer om personen har kjøpt bilen eller ikke med hensyn til alle andre kolonner. Modellen er bygget på 'train_data' og resultatet lagres i 'mod1'.

rpart (Kjøpt ~., data = togdata) -> mod1

La oss plotte resultatet:

tomt (mod1, margin = 0,1) tekst (mod1, pen = T, cex = 0,8)

La oss nå forutse resultatene på 'test_data'. Vi gir den innebygde rpart-modellen 'mod1' som det første argumentet, testsettet 'test_data' som det andre argumentet og prediksjonstypen som 'klasse' for det tredje argumentet. Resultatet lagres i ‘resultat1’-objekt.

forutsi (mod1, test_data, type = 'class') -> result1

La oss evaluere nøyaktigheten av modellen ved hjelp av 'confusionMatrix ()' -funksjonen fra vaktpakken.

bibliotek (vakt) confusionMatrix (tabell (test_data $ kjøpt, resultat1))

Forvirringsmatrisen forteller oss at av de 90 observasjonene der personen ikke kjøpte bilen, har 79 observasjoner med rette blitt klassifisert som “Nei” og 11 er feilaktig klassifisert som “JA”. På samme måte har 47 av de 50 observasjonene der personen faktisk kjøpte bilen riktig blitt klassifisert som “JA” og 3 feilaktig blitt klassifisert som “NEI”.

Vi kan finne nøyaktigheten til modellen ved å dele de riktige spådommene med totale spådommer dvs. (79 + 47) / (79 + 47 + 11 + 3).

K-Means Clustering:

Vi vil jobbe med 'iris' datasett for å implementere k-betyr klynging:

La oss fjerne 'Arter' -kolonnen og lage et nytt datasett som bare inneholder de første fire kolonnene fra 'iris' -datasettet.

iris [1: 4] -> iris_k

La oss ta antall klynger til å være 3. “Kmeans ()” -funksjonen tar inngangsdataene og antall klynger der dataene skal grupperes. Syntaksen er: kmeans (data, k) hvor k er antall klyngesentre.

kmeans (iris_k, 3) -> k1

Analyserer klyngingen:

str (k1)

Str () -funksjonen gir strukturen til kmeans som inkluderer forskjellige parametere som withinss, betweenss, etc, og analyserer hvilke du kan finne ut ytelsen til kmeans.

betweenss: Mellom sum av kvadrater, dvs. intraklusterlikhet

withinss: Innen sum av kvadrat, dvs. intercluster-likhet

totwithinss: Summen av alle withinss av alle klyngene, dvs. total likhet innen klyngen

En god klynging vil ha en lavere verdi på “tot.withinss” og høyere verdi på “betweenss” som avhenger av antall klynger ‘k’ som ble valgt først.

Tiden er moden for å bli ekspert på maskinlæring for å utnytte nye muligheter som kommer din vei. Dette bringer oss til slutten av dette “ Maskinlæring med R ”Blogg. Jeg håper denne bloggen var informativ fruktbar.

Edureka har en spesiell kurat som hjelper deg med å få kompetanse innen maskinlæringsalgoritmer som K-Means Clustering, Decision Trees, Random Forest, Naive Bayes. Du lærer også konseptene Statistikk, Tidsserie, Tekstgruvedrift og en introduksjon til dyp læring. Nye batcher for dette kurset starter snart !!