Strojno učenje u R za početnike s primjerom



Ovaj blog o strojnom učenju s R-om pomaže vam da naučite osnovne koncepte strojnog učenja i implementirate različite algoritme strojnog učenja s R.

Strojno učenje s R

Strojno učenje je sadašnjost i budućnost! Od Netflixovog mehanizma preporuka do Googleovog samovozećeg automobila, sve je to strojno učenje. Ovaj blog o Strojnom učenju s R pomaže vam razumjeti osnovne koncepte strojnog učenja praćenog različitim algoritmima strojnog učenja i implementirati te algoritme strojnog učenja s R.

Ovaj blog na temu „Strojno učenje s R“ sastoji se od ovih odjeljaka:





Strojno učenje s R | Edureka

Razumijevanje strojnog učenja

Fish1- Strojno učenje s R - Edureka



Kako znati da su sve to ribe?



Kao dijete mogli ste naići na sliku ribe, a vaspitači u vrtiću ili roditelji rekli bi vam da je ovo riba i ona ima neke posebne značajke povezane s njom kao što ima peraje, škrge, par oči, rep i tako dalje. Sad, kad god vaš mozak naiđe na sliku s tim skupom značajki, automatski ga registrira kao ribu jer vaš mozak to ima naučeno da je riba.

Tako funkcionira naš mozak, ali što je sa strojem? Ako se ista slika daje stroju, kako će stroj prepoznati da je riba?

kako koristiti spyder python

Ovdje je M achine Learning ulazi. Nastavit ćemo hraniti slike ribe na računalu s oznakom 'riba' do stroj uči sve povezane značajke s riba.

Jednom kada stroj nauči sve značajke povezane s ribom, dat ćemo mu nove podatke kako bismo utvrdili koliko je naučio.

Drugim riječima, Sirovi podaci / podaci o treningu daje se stroju, tako da ga uči sve značajke povezane s Podaci o treningu. Jednom, učenje je završeno, ono je dato Novi podaci / podaci o ispitivanju kako bi se utvrdilo koliko je dobro stroj naučio.

Krenimo dalje u ovom blogu o Strojnom učenju s R i razumijejmo vrste strojnog učenja.

Vrste strojnog učenja

  • Nadzirano učenje:

Algoritam nadziranog učenja uči iz poznatog skupa podataka (Training Data) koji ima oznake za predviđanje.

Regresija i klasifikacija neki su od primjera nadziranog učenja.

#Klasifikacija:

Klasifikacija određuje kojem skupu kategorija pripada novo opažanje, tj. Algoritam klasifikacije uči sve značajke i oznake podataka treninga, a kada mu se daju novi podaci, on mora novim opažanjima dodijeliti oznake ovisno o onome što je naučio iz podataka o treningu.

U ovom primjeru, ako je prvo opažanje dobilo oznaku 'Muškarac', onda je s pravom klasificirano, ali ako je dobilo oznaku 'Žena', klasifikacija je pogrešna. Slično je i za drugo zapažanje, ako je navedena oznaka 'Žena', s pravom je klasificirana, inače je klasifikacija pogrešna.

#Regresija:

Regresija je nadzirani algoritam učenja koji pomaže u određivanju kako jedna varijabla utječe na drugu varijablu.

Ovdje je 'područje_života' neovisna varijabla, a 'cijena' je ovisna varijabla, tj. Mi određujemo kako se 'cijena' razlikuje u odnosu na 'područje_života'.

  • Učenje bez nadzora:

Algoritam učenja bez nadzora izvlači zaključke iz podataka koji nemaju oznake.

Skupljanje je primjer učenja bez nadzora. 'K-znači', 'Hijerarhijski', 'Nejasni C-znaci' neki su primjeri algoritama grupiranja.

U ovom je primjeru skup opažanja podijeljen u dvije skupine. Skupljanje se vrši na temelju sličnosti opažanja. Postoji velika sličnost unutar klastera i mala sličnost među klasterima, tj. Postoji vrlo velika sličnost između svih autobusa, ali mala sličnost između autobusa i automobila.

  • Učenje za pojačanje:

Pojačanje učenja vrsta je algoritma strojnog učenja kod koje stroj / agent u an okoliš uči idealno ponašanje kako bi maksimalizirao svoje performanse. Jednostavne povratne informacije o nagradi potrebne su agentu kako bi naučio njegovo ponašanje, to je poznato kao signal za pojačanje .

Idemo uzeti Pac Man na primjer. Sve dok pacman neprestano jede hranu, zarađuje bodove, ali kad se sruši na čudovište izgubi to je život. Tako pacman saznaje da treba jesti više hrane i izbjegavati čudovištakako bi se poboljšala izvedba.

Implementacija strojnog učenja s R:

Linearna regresija:

Radit ćemo sa skupom podataka o dijamantima kako bismo implementirali algoritam linearne regresije:

Opis skupa podataka:

Prije izgradnje bilo kojeg modela na podacima, trebali bismo podijeliti podatke u skupove 'vlak' i 'test'. Model će se graditi na skupu 'vlak', a točnost će se provjeravati na skupu 'test'.

Moramo učitati paket 'caTools' da bismo podatke podijelili u dva skupa.

knjižnica (caTools)

Paket 'caTools' pruža funkciju 'sample.split ()' koja pomaže u dijeljenju podataka.

sample.split (dijamanti $ cijena, SplitRatio = 0,65) -> split_index

65% opažanja iz stupca s cijenama dodijeljeno je oznaci 'true', a ostalih 35% oznaci 'false'.

podskup (dijamanti, split_index == T) -> vlak podskup (dijamanti, split_index == F) -> test

Sva zapažanja koja imaju oznaku 'true' pohranjena su u ' vlak ”objekt a ona opažanja koja imaju oznaku 'lažno' dodijeljena su skupu 'test'.

Sad kad je razdvajanje završeno i imamo svoje setove 'vlak' i 'test', vrijeme je da na modelu treninga izgradimo model linearne regresije.

Upotrijebit ćemo funkciju 'lm ()' za izgradnju modela linearne regresije na podacima 'vlaka'. Utvrđujemo cijena dijamanata s obzirom na sve ostale varijable skupa podataka. Izgrađeni model pohranjen je u objekt “mod_regress”.

lm (cijena ~., podaci = vlak) -> mod_regress

Sada, kada smo izgradili model, moramo prognozirati na 'testnom' skupu. Funkcija „predict ()“ koristi se za dobivanje predviđanja. Potrebna su dva argumenta: izgrađeni model i ispitni set. Predviđeni rezultati pohranjuju se u objekt “result_regress”.

predvidjeti (mod_regress, test) -> result_regress

Povežimo stvarne vrijednosti cijena iz skupa podataka 'test' i predviđene vrijednosti u jedan skup podataka pomoću funkcije 'cbind ()'. Novi okvir podataka pohranjen je u 'Final_Data'

cbind (Stvarna = testna cijena $, Predviđena = rezultat_greha) -> Final_Data 
as.data.frame (Final_Data) -> Final_Data

Pogled na „Final_Data“ koji sadrži stvarne vrijednosti i predviđene vrijednosti:

Pronađimo pogrešku oduzimanjem predviđenih vrijednosti od stvarnih vrijednosti i dodajte ovu pogrešku kao novi stupac u 'Final_Data':

(Final_Data $ Actual- Final_Data $ Predicted) -> pogreška
cbind (Final_Data, pogreška) -> Final_Data

Pogled na 'Final_Data' koji također sadrži pogrešku u predviđanju:

Sada ćemo izračunati ' Korijenska srednja kvadratna pogreška ' što daje skupnu pogrešku za sva predviđanja

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

Naprijed, napravimo još jedan model kako bismo mogli usporediti točnost oba ova modela i utvrditi koji je bolji.

Izgradit ćemo novi model linearne regresije na skupu 'vlak', ali ovaj put ispustit ćemo stupce 'x' i 'y' iz neovisnih varijabli, tj. 'Cijenu' dijamanata određuju svi stupci osim 'x' i 'y'.

Izgrađeni model pohranjen je u mod_regress2:

lm (cijena ~.-y-z, podaci = vlak) -> mod_regress2

Predviđeni rezultati pohranjeni su u “result_regress2”

predvidjeti (mod_regress2, test) -> result_regress2

Stvarne i predviđene vrijednosti kombiniraju se i pohranjuju u 'Final_Data2':

cbind (Stvarna = testna cijena $, Predviđena = rezultat_greha2) -> Konačni_datni podaci2 
as.data.frame (Final_Data2) -> Final_Data2

Dodajmo i pogrešku u predviđanju na 'Final_Data2'

(Final_Data2 $ Actual- Final_Data2 $ Predviđeno) -> error2
cbind (Final_Data2, error2) -> Final_Data2

Pogled na 'Final_Data2':

Pronalaženje korijenske srednje kvadratne pogreške za dobivanje skupne pogreške:

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

Vidimo da je 'rmse2' neznatno manji od 'rmse1' i stoga je drugi model neznatno bolji od prvog modela.

Klasifikacija:

Radit ćemo na skupu podataka 'car_purchase' na implementaciji rekurzivno particioniranje što je klasifikacijski algoritam.

Podijelimo podatke na skupove 'vlak' i 'test' pomoću funkcije 'sample.split ()' iz paketa 'caTools'.

knjižnica (caTools)

65% zapažanja iz stupca 'Kupljeno' dodijelit će se oznakama 'TRUE', a ostatku će biti dodijeljene oznake 'FALSE'.

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

Sva opažanja koja imaju oznaku 'TRUE' pohranit će se u podatke 'vlaka', a ona koja imaju oznaku 'FALSE' dodijelit će se podacima 'test'.

podskup (kupnja automobila, podijeljene vrijednosti == T) -> podaci o_vozu
podskup (kupnja automobila, dijeljene_ vrijednosti == F) -> podaci_pokusa

Vrijeme je za izgradnju algoritma rekurzivne particije:

Počet ćemo s učitavanjem paketa ‘rpart’:

knjižnica (rpart)

Stupac 'Kupljeno' bit će ovisna varijabla, a svi ostali stupci su neovisne varijable, tj. Utvrđujemo je li osoba kupila automobil ili ne s obzirom na sve ostale stupce. Model je izgrađen na „data_zvuka“, a rezultat je pohranjen u „mod1“.

rpart (Kupljeno ~., podaci = podaci_pogona) -> mod1

Zacrtajmo rezultat:

parcela (mod1, marža = 0,1) tekst (mod1, lijepo = T, cex = 0,8)

Ajmo sada i predvidimo rezultate na 'test_data'. Kao prvi argument dajemo ugrađeni rpart model 'mod1', test test 'data_data' kao drugi argument i tip predviđanja kao 'klasu' za treći argument. Rezultat se pohranjuje u objekt ‘result1’.

predvidjeti (mod1, test_data, type = 'class') -> rezultat1

Procijenimo točnost modela pomoću funkcije “confusionMatrix ()” iz paketa caret.

knjižnica (caret) confusionMatrix (tablica (test_data $ Purchased, result1))

Matrica zabune govori nam da je od 90 promatranja gdje osoba nije kupila automobil, 79 opažanja s pravom klasificirano kao „Ne“, a 11 pogrešno klasificirano kao „DA“. Slično tome, od 50 opažanja gdje je osoba stvarno kupila automobil, 47 je s pravom klasificirano kao 'DA', a 3 pogrešno s 'NE'.

Točnost modela možemo pronaći dijeljenjem točnih predviđanja s ukupnim predviđanjima, tj. (79 + 47) / (79 + 47 + 11 + 3).

K-Sredstva Klasteriranje:

Radit ćemo s nizom podataka „iris“ kako bismo implementirali k-znači klasteriranje:

Uklonimo stupac 'Vrste' i stvorimo novi skup podataka koji sadrži samo prva četiri stupca iz skupa podataka 'iris'.

iris [1: 4] -> iris_k

Uzmimo broj klastera kao 3. Funkcija “Kmeans ()” uzima ulazne podatke i broj klastera u kojima podaci trebaju biti klasterirani. Sintaksa je: k znači (podaci, k) gdje je k broj centara klastera.

kmeans (iris_k, 3) -> k1

Analizirajući klasteriranje:

str (k1)

Funkcija str () daje strukturu kmeans-a koja uključuje razne parametre poput Withinss, Betweenss itd., Analizirajući koje možete saznati izvedbu kmeans-a.

betweenss: Između zbroja kvadrata, tj. sličnosti unutarklastera

unutar kruga: unutar zbroja kvadrata, tj. sličnost interklastera

totwithinss: Zbir svih unutrašnjosti svih klastera, tj. Ukupna sličnost unutar klastera

Dobro klasteriranje imat će nižu vrijednost 'tot.withinss' i veću vrijednost 'betweenss', što ovisi o broju klastera 'k' koji je odabran u početku.

Zrelo je vrijeme da postanete stručnjak za Strojno učenje kako biste iskoristili nove mogućnosti koje vam se nađu na putu. Ovo nas dovodi do kraja ovog “ Strojno učenje s R ' blog. Nadam se da je ovaj blog bio informativno plodonosan.

Edureka ima posebno kuriranog koji vam pomaže u stjecanju stručnosti u algoritmima strojnog učenja poput K-Means klastera, stabala odlučivanja, slučajnih šuma, naivnih Bayesa. Naučit ćete pojmove statistike, vremenskih serija, rudarenja teksta i uvoda u dubinsko učenje. Uskoro počinju nove serije za ovaj tečaj !!