Strojno učenje v R za začetnike s primerom



Ta blog o strojnem učenju z R vam pomaga pri učenju osnovnih konceptov strojnega učenja in izvajanju različnih algoritmov strojnega učenja z R.

Strojno učenje z R

Strojno učenje je sedanjost in prihodnost! Vse od mehanizma priporočil Netflixa do Googlovega samovozečega avtomobila je vse v strojnem učenju. Ta spletni dnevnik o strojnem učenju z R vam pomaga razumeti temeljne koncepte strojnega učenja, ki mu sledijo različni algoritmi strojnega učenja, in izvajanje teh algoritmov strojnega učenja z R.

Ta spletni dnevnik o »Strojnem učenju z R« obsega te razdelke:





Strojno učenje z R | Edureka

Razumevanje strojnega učenja

Fish1- Strojno učenje z R - Edureka



Kako veš, da so vse to ribe?



Kot otrok ste morda naleteli na sliko ribe in bi vam učitelji vrtca ali starši rekli, da je to riba in ima z njo povezane nekatere posebne značilnosti, kot da ima plavuti, škrge, par oči, rep in tako naprej. Zdaj, ko možgani naletijo na sliko s temi sklopi funkcij, jo samodejno registrirajo kot ribo, ker jo imajo vaši možgani naučil da je riba.

Tako delujejo naši možgani, kaj pa stroj? Če se enaka slika pošlje v stroj, kako jo bo stroj identificiral kot ribo?

Tu je M achine učenje prihaja noter. Slike ribe bomo še naprej hranili v računalnik z oznako 'riba' do stroj se nauči vseh povezanih funkcij z ribe.

Ko se naprava nauči vseh lastnosti, povezanih z ribo, ji bomo dodali nove podatke, da bomo ugotovili, koliko se je naučila.

Z drugimi besedami, Surovi podatki / podatki o usposabljanju je dana stroju, tako da ga se uči vse funkcije, povezane z Podatki o usposabljanju. Ko je učenje končano, je dano Novi podatki / testni podatki ugotoviti, kako dobro se je stroj naučil.

razlika med preobremenitvijo metode in razveljavitvijo v javi

Pojdimo naprej v tem blogu Strojno učenje z R in se seznanimo z vrstami strojnega učenja.

Vrste strojnega učenja

  • Nadzorovano učenje:

Algoritem nadzorovanega učenja se uči iz znanega nabora podatkov (Training Data), ki ima oznake za napovedovanje.

Regresija in klasifikacija sta nekaj primerov nadzorovanega učenja.

# Klasifikacija:

Klasifikacija določa, kateremu naboru kategorij pripada novo opazovanje, tj. Algoritem za klasifikacijo se nauči vseh lastnosti in oznak podatkov o vadbi in ko mu dajo nove podatke, mora novim opazovanjem dodeliti oznake glede na to, kaj se je naučil iz podatkov o usposabljanju.

V tem primeru je, če je prva ugotovitev označena z moškim, potem pravilno uvrščena, če pa je označena z žensko, je klasifikacija napačna. Podobno je tudi pri drugem opazovanju, če je navedena oznaka „Ženska“, pravilno uvrščena, sicer je razvrstitev napačna.

#Regresija:

Regresija je nadzorovan učni algoritem, ki pomaga določiti, kako ena spremenljivka vpliva na drugo spremenljivko.

Tukaj je 'življenjska_področje' neodvisna spremenljivka, 'cena' pa odvisna spremenljivka, tj. Mi določamo, kako se 'cena' spreminja glede na 'živijoče območje'.

  • Nenadzorovano učenje:

Algoritem nenadzorovanega učenja črpa sklepe iz podatkov, ki nimajo oznak.

Grozdanje je primer nenadzorovanega učenja. 'K-pomeni', 'Hierarhično', 'Mehka C-sredstva' je nekaj primerov algoritmov združevanja v skupine.

V tem primeru je nabor opazovanj razdeljen na dve skupini. Grupiranje poteka na podlagi podobnosti med opazovanji. Obstaja velika podobnost znotraj grozdov in nizka podobnost med grozdi, torej zelo velika podobnost med vsemi avtobusi, majhna pa med avtobusi in avtomobili.

  • Okrepitveno učenje:

Okrepitveno učenje je vrsta algoritma strojnega učenja, pri katerem stroj / agent v okolje nauči se idealnega vedenja, da bi čim bolj povečala svojo uspešnost. Preprosta povratna informacija o nagradi je potrebna, da se agent nauči njegovega vedenja, to je znano kot ojačitveni signal .

Vzemimo pacman na primer. Dokler pacman nenehno uživa hrano, si prisluži točke, a ko strmoglavi proti pošasti, izgubi, je to življenje. Tako pacman izve, da mora jesti več hrane in se izogibati pošastida bi izboljšali svojo zmogljivost.

Izvajanje strojnega učenja z R:

Linearna regresija:

Z naborom podatkov o diamantih bomo delali za izvajanje algoritma linearne regresije:

Opis nabora podatkov:

Pred gradnjo katerega koli modela na podatkih naj bi podatke razdelili na sklope 'vlak' in 'test'. Model bo zgrajen na kompletu 'vlak', natančnost pa bo preverjen na kompletu 'test'.

Naložiti moramo paket 'caTools', da razdelimo podatke na dva niza.

knjižnica (caTools)

Paket “caTools” ponuja funkcijo “sample.split ()”, ki pomaga pri razdelitvi podatkov.

sample.split (diamanti $ cena, SplitRatio = 0,65) -> split_index

65% opazovanj iz stolpca s cenami je dobilo oznako 'res', preostalih 35% pa oznako 'napačno'.

podnabor (diamanti, split_index == T) -> vlak podnabor (diamanti, split_index == F) -> test

Vsa opažanja, ki imajo oznako 'true', so bila shranjena v vlak 'predmet in tista opažanja, ki imajo oznako 'napačno', so bila dodeljena nizu 'test'.

Zdaj, ko je razdelitev končana in imamo nabora 'vlak' in 'test', je čas, da na vadbenem kompletu sestavimo model linearne regresije.

Funkcijo 'lm ()' bomo uporabili za gradnjo linearnega regresijskega modela na podatkih 'vlak'. Določamo cena diamantov glede na vse druge spremenljivke nabora podatkov. Vgrajeni model je shranjen v objektu “mod_regress”.

lm (cena ~., podatki = vlak) -> mod_regress

Zdaj, ko smo zgradili model, moramo napovedovati na 'testnem' nizu. Funkcija “predict ()” se uporablja za pridobivanje napovedi. Potrebna sta dva argumenta: vgrajen model in testni komplet. Predvideni rezultati so shranjeni v objektu “result_regress”.

napovedi (mod_regress, test) -> result_regress

Povežimo dejanske vrednosti cen iz nabora podatkov 'test' in predvidene vrednosti v en nabor podatkov s pomočjo funkcije 'cbind ()'. Novi podatkovni okvir je shranjen v 'Final_Data'

cbind (dejanska = preizkusna cena $, predvidena = rezultat_regresa) -> končni_podatki 
as.data.frame (Final_Data) -> Final_Data

Pogled na 'Final_Data', ki vsebuje dejanske vrednosti in predvidene vrednosti:

Poiščimo napako tako, da od dejanskih vrednosti odštejemo predvidene vrednosti in dodamo to napako kot nov stolpec v 'Final_Data':

(Final_Data $ Actual- Final_Data $ Predicted) -> napaka
cbind (Final_Data, napaka) -> Final_Data

Pogled na 'Final_Data', ki vključuje tudi napako v napovedi:

Zdaj bomo nadaljevali in izračunali ' Root Mean kvadratna napaka ' kar daje skupno napako za vse napovedi

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

V nadaljevanju zgradimo drug model, da bomo lahko primerjali natančnost obeh modelov in ugotovili, kateri je boljši.

Na nizu 'vlak' bomo zgradili nov model linearne regresije, tokrat pa bomo stolpce 'x' in 'y' spustili iz neodvisnih spremenljivk, tj. 'Ceno' diamantov določajo vsi stolpca, razen 'x' in 'y'.

Vgrajeni model je shranjen v mod_regress2:

lm (cena ~.-y-z, podatki = vlak) -> mod_regress2

Predvideni rezultati se shranijo v “result_regress2”

napovedi (mod_regress2, test) -> result_regress2

Dejanske in predvidene vrednosti se kombinirajo in shranijo v “Final_Data2”:

končno in dokončaj v javi
cbind (dejanska = preizkusna $ cena, predvidena = rezultat_regress2) -> Final_Data2 
as.data.frame (Final_Data2) -> Final_Data2

Dodajmo tudi napako pri napovedovanju v »Final_Data2«

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

Pogled na “Final_Data2”:

Iskanje korenske povprečne kvadratne napake za pridobitev skupne napake:

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

Vidimo, da je 'rmse2' nekoliko manjši od 'rmse1', zato je drugi model nekoliko boljši od prvega.

Razvrstitev:

Za izvajanje bomo delali z naborom podatkov 'car_purchase' rekurzivna particija kar je klasifikacijski algoritem.

Razdelimo podatke na sklope 'vlak' in 'test' s pomočjo funkcije 'sample.split ()' iz paketa 'caTools'.

knjižnica (caTools)

65% opazovanj iz stolpca »Nakup« bo dobilo oznake »TRUE«, preostalim pa oznake »FALSE«.

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

Vsa opažanja, ki imajo oznako 'TRUE', bodo shranjena v podatke o 'vlaku', opazovanja z oznako 'FALSE' pa bodo dodeljena podatkom 'test'.

podnabor (nakup_ avtomobila, deljene_vrednosti == T) -> podatki o vlaku
podnabor (nakup_ avtomobila, deljene_vrednosti == F) -> testni_podatki

Čas za izdelavo algoritma rekurzivne particije:

Začeli bomo z nalaganjem paketa 'rpart':

knjižnica (rpart)

Stolpec »Nakup« bo odvisna spremenljivka, vsi drugi stolpci pa so neodvisne spremenljivke, tj. Glede na vse druge stolpce ugotavljamo, ali je oseba kupila avto ali ne. Model je narejen na podlagi 'train_data', rezultat pa je shranjen v 'mod1'.

rpart (kupljeno ~., podatki = podatki o vlaku) -> mod1

Naštejmo rezultat:

ploskev (mod1, marža = 0,1) besedilo (mod1, lepo = T, cex = 0,8)

Zdaj pa pojdimo naprej in napovejmo rezultate na 'test_data'. Kot prvi argument podajamo vgrajeni model rpart “mod1”, testni nabor “test_data” kot drugi argument in tip predvidevanja kot “razred” za tretji argument. Rezultat je shranjen v objektu ‘result1’.

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

Ocenimo natančnost modela z uporabo funkcije “confusionMatrix ()” iz paketa caret.

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

Matrica zmede nam pove, da je bilo od 90 opazovanj, pri katerih oseba ni kupila avtomobila, 79 opazovanj upravičeno razvrščenih med 'ne' in 11 napačno kot 'DA'. Podobno je bilo od 50 opazovanj, ko je oseba dejansko kupila avtomobil, 47 upravičeno razvrščenih med 'DA' in 3 napačno kot 'NE'.

Natančnost modela lahko najdemo tako, da pravilne napovedi delimo s skupnimi napovedmi, tj. (79 + 47) / (79 + 47 + 11 + 3).

K-pomeni gručiranje:

Za izvajanje gruče k-pomeni bomo delali z naborom podatkov 'iris':

Odstranimo stolpec 'Vrste' in ustvarimo nov nabor podatkov, ki obsega samo prve štiri stolpce iz nabora podatkov 'iris'.

iris [1: 4] -> iris_k

Število gruč vzamemo za 3. Funkcija “Kmeans ()” zajema vhodne podatke in število grozdov, v katerih naj bi bili podatki zbrani. Sintaksa je: k pomeni (podatki, k), kjer je k število središč gruč.

k pomeni (iris_k, 3) -> k1

Analiza grozdenja:

str (k1)

Funkcija str () daje strukturo kmeans, ki vključuje različne parametre, kot so znotrajss, medss itd itd., Pri analiziranju katerih lahko ugotovite delovanje kmeans.

betweenss: med vsoto kvadratov, tj. podobnost znotraj jate

znotraj vsote: znotraj vsote kvadratov, tj. podobnost med združbami

c ++ stl vprašanja za intervju

totwithinss: Vsota vseh notranjosti vseh grozdov, tj.Skupaj podobnost znotraj grozdov

Dobro gručiranje bo imelo nižjo vrednost 'tot.withinss' in višjo vrednost 'betweenss', kar je odvisno od števila grozdov 'k', ki so bili izbrani na začetku.

Zrel je čas, da postanete strokovnjak za strojno učenje, da izkoristite nove priložnosti, ki se vam odprejo. To nas pripelje do konca te Strojno učenje z R ”Blog. Upam, da je bil ta blog informativno ploden.

Edureka ima posebej kurirano ki vam pomaga pridobiti strokovno znanje o algoritmih strojnega učenja, kot so grozdenje K-Means, drevesa odločanja, naključni gozd, naivni Bayes. Spoznali boste koncepte statistike, časovnih vrst, rudarjenja besedil in uvod v globoko učenje. Kmalu se začenjajo nove serije za ta tečaj !!