Mašīnmācība R iesācējiem ar piemēru



Šis emuārs par mašīnmācīšanos ar R palīdz apgūt mašīnmācīšanās pamatjēdzienus un ar R ieviest dažādus mašīnmācīšanās algoritmus.

Mašīnmācīšanās ar R

Mašīnmācība ir tagadne un nākotne! Sākot ar Netflix ieteikumu dzinēju un beidzot ar Google pašpiedziņas automašīnu, tas viss ir mašīnmācīšanās. Šis emuārs par mašīnmācīšanos ar R palīdz izprast mašīnmācīšanās pamatjēdzienus, kam seko dažādi mašīnmācīšanās algoritmi, un ieviest šos mašīnmācīšanās algoritmus ar R.

Šajā emuārā “Mašīnmācība ar R” ir šādas sadaļas:





Mašīnmācība ar R | Edureka

Izpratne par mašīnmācīšanos

Fish1- Mašīnmācība ar R - Edureka



Kā jūs zināt, ka visas šīs ir zivis?



Bērnībā jūs, iespējams, esat saskāries ar zivju attēlu, un jūsu bērnudārza skolotāji vai vecāki jums būtu teikuši, ka šī ir zivs, un tai ir dažas specifiskas iezīmes, piemēram, tai ir spuras, žaunas, pāris zivju. acis, asti un tā tālāk. Tagad, kad jūsu smadzenes saskaras ar attēlu ar šīm funkciju kopām, tās automātiski reģistrē to kā zivi, jo jūsu smadzenes ir iemācījies ka tā ir zivs.

Tā darbojas mūsu smadzenes, bet kā ar mašīnu? Ja tas pats attēls tiek padots mašīnai, kā mašīna identificēs to kā zivi?

Šeit M achine Mācīšanās ienākam. Mēs turpināsim barot zivju attēlus datorā ar atzīmi “zivis” līdz mašīna apgūst visas saistītās funkcijas ar zivis.

Kad mašīna apgūs visas ar zivi saistītās funkcijas, mēs tai piegādāsim jaunus datus, lai noteiktu, cik daudz tā ir iemācījusies.

Citiem vārdiem sakot, Neapstrādāti dati / apmācības dati tiek dota mašīnai, lai tā mācās visas funkcijas, kas saistītas ar Apmācības dati. Kad mācīšanās ir pabeigta, tā tiek dota Jauni dati / testa dati lai noteiktu, cik labi mašīna ir iemācījusies.

Ļaujiet mums virzīties uz priekšu šajā mašīnmācīšanās ar R emuārā un izprast par mašīnmācīšanās veidiem.

Mašīnmācīšanās veidi

  • Vadīta mācīšanās:

Uzraudzītais mācību algoritms mācās no zināmas datu kopas (Training Data), kurai ir etiķetes, lai veiktu prognozes.

Regresija un klasifikācija ir daži uzraudzītas mācīšanās piemēri.

#Klasifikācija:

Klasifikācija nosaka, kurai kategoriju kopai pieder jauns novērojums, ti, klasifikācijas algoritms apgūst visas apmācības datu iezīmes un etiķetes, un, kad tam tiek piešķirti jauni dati, viņam jāpiešķir etiķetes jaunajiem novērojumiem atkarībā no tā, ko viņš ir iemācījies no apmācības datiem.

kas ir serializējams java

Šajā piemērā, ja pirmajam novērojumam piešķir etiķeti “Vīrietis”, tas tiek pareizi klasificēts, bet, ja tam tiek piešķirts apzīmējums “Sieviete”, klasifikācija ir nepareiza. Tāpat kā otrajam novērojumam, ja dotā etiķete ir “Sieviete”, tā ir pareizi klasificēta, citādi klasifikācija ir nepareiza.

#Regresija:

Regresija ir uzraudzīts mācību algoritms, kas palīdz noteikt, kā viens mainīgais ietekmē citu mainīgo.

Šeit “living_area” ir neatkarīgais mainīgais, un “price” ir atkarīgs mainīgais, t.i., mēs nosakām, kā “cena” mainās attiecībā pret “living_area”.

  • Bez uzraudzības mācīšanās:

Bez uzraudzības mācību algoritms izdara secinājumus no datiem, kuriem nav etiķešu.

Kopu veidošana ir nepieskatītas mācīšanās piemērs. “K-nozīmē”, “Hierarhisks”, “Fuzzy C-līdzekļi” ir daži klasterizācijas algoritmu piemēri.

Šajā piemērā novērojumu kopa ir sadalīta divās grupās. Grupēšana tiek veikta, pamatojoties uz novērojumu līdzību. Pastāv liela klasteru iekšējā līdzība un zema līdzība starp klasteriem, t.i., visiem autobusiem ir ļoti liela līdzība, bet autobusiem un automašīnām ir zema līdzība.

  • Mācības pastiprināšanai:

Mācību pastiprināšana ir mašīnmācīšanās algoritmu veids, kurā mašīna / aģents an vide iemācās ideālu uzvedību, lai maksimāli palielinātu tās veiktspēju. Lai aģents uzzinātu tā uzvedību, ir nepieciešamas vienkāršas atsauksmes par atlīdzību, tas ir pazīstams kā pastiprināšanas signāls .

Ņemsim pacmans piemēram. Kamēr pacmens turpina ēst pārtiku, tas nopelna punktus, bet, ietriecoties pret briesmoni, tas zaudē dzīvību. Tādējādi pacmans uzzina, ka viņam jāēd vairāk pārtikas un jāizvairās no monstriemlai uzlabotu tā veiktspēju.

Mašīnmācības ieviešana ar R:

Lineārā regresija:

Mēs strādāsim ar dimantu datu kopu, lai ieviestu lineārās regresijas algoritmu:

Datu kopas apraksts:

Pirms jebkura modeļa izveidošanas uz datiem mums vajadzētu sadalīt datus “vilcienu” un “testu” kopās. Modelis tiks veidots uz “vilciena” komplekta, un tā precizitāti pārbaudīs “testa” komplektā.

Mums ir jāielādē “caTools” pakete, lai datus sadalītu divās kopās.

bibliotēka (caTools)

Pakete “caTools” nodrošina funkciju “sample.split ()”, kas palīdz sadalīt datus.

sample.split (dimanti $ cena, SplitRatio = 0.65) -> split_index

65% no cenu slejas novērojumiem ir piešķirta etiķete “true”, bet pārējiem 35% - “false”.

apakškopa (dimanti, split_index == T) -> vilciens apakškopa (dimanti, split_index == F) -> tests

Visi novērojumi, kuriem ir “true” etiķete, ir saglabāti vilciens ”objekts un tiem novērojumiem ar “nepatiesu” marķējumu ir piešķirta “testa” kopa.

Tagad, kad sadalīšana ir pabeigta un mums ir savi “vilcienu” un “testa” komplekti, ir pienācis laiks uz lineāro regresijas modeli izveidot treniņu komplektu.

c ++ rekursīvie fibonacci

Lai izveidotu lineārās regresijas modeli uz “vilciena” datiem, mēs izmantosim funkciju “lm ()”. Mēs nosakām cena dimantu attiecība pret visiem pārējiem datu kopas mainīgajiem. Uzbūvētais modelis tiek saglabāts objektā “mod_regress”.

lm (cena ~., dati = vilciens) -> mod_regress

Tagad, kad mēs esam izveidojuši modeli, mums jāveic prognozes par “testa” kopu. Funkcija “pareģot ()” tiek izmantota, lai iegūtu prognozes. Tam nepieciešami divi argumenti: uzbūvēts modelis un testa komplekts. Paredzētie rezultāti tiek saglabāti objektā “result_regress”.

paredzēt (mod_regress, test) -> result_regress

Saistīsim faktiskās cenu vērtības no “testa” datu kopas un paredzamās vērtības vienā datu kopā, izmantojot funkciju “cbind ()”. Jaunais datu ietvars tiek saglabāts sadaļā “Final_Data”

cbind (Faktiskā = testa cena $, Paredzētā = rezultāta_regress) -> Galīgie_dati 
as.data.frame (Final_Data) -> Final_Data

Skatiens uz “Final_Data”, kas ietver faktiskās vērtības un paredzamās vērtības:

Atrodīsim kļūdu, atņemot paredzamās vērtības no faktiskajām vērtībām un pievienojot šo kļūdu kā jaunu kolonnu “Final_Data”:

(Final_Data $ Actual- Final_Data $ Predicted) -> kļūda
cbind (Final_Data, kļūda) -> Final_Data

Skatiens uz “Final_Data”, kas ietver arī kļūdu prognozē:

Tagad mēs turpināsim un aprēķināsim Vidējā saknes kvadrāta kļūda ” kas dod kļūdu visām prognozēm

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

Uz priekšu izveidosim vēl vienu modeli, lai mēs varētu salīdzināt abu šo modeļu precizitāti un noteikt, kurš ir labāks.

Mēs izveidosim jaunu lineārās regresijas modeli “vilciena” komplektā, bet šoreiz mēs nokritīsim “x” un “y” kolonnas no neatkarīgiem mainīgajiem, ti, dimantu “cenu” nosaka visi kolonnas, izņemot “x” un “y”.

Izveidotais modelis tiek glabāts mapē “mod_regress2”:

lm (cena ~.-y-z, dati = vilciens) -> mod_regress2

Paredzētie rezultāti tiek glabāti sadaļā “result_regress2”

paredzēt (mod_regress2, test) -> result_regress2

Faktiskās un paredzamās vērtības tiek apvienotas un saglabātas sadaļā “Final_Data2”:

cbind (Faktiskā = testa cena $, Paredzētā = rezultāta_regress2) -> Galīgie_dati2 
as.data.frame (Final_Data2) -> Final_Data2

Pievienosim arī kļūdu prognozē “Final_Data2”

(Final_Data2 $ Actual- Final_Data2 $ Predicted) -> kļūda2
cbind (Final_Data2, error2) -> Final_Data2

Īss ieskats “Final_Data2”:

Saknes vidējā kvadrāta kļūdas atrašana, lai iegūtu kopējo kļūdu:

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

Mēs redzam, ka “rmse2” ir nedaudz mazāks par “rmse1”, un tāpēc otrais modelis ir nedaudz labāks par pirmo modeli.

Klasifikācija:

Mēs strādāsim ar datu kopu “car_purchase”, lai to ieviestu rekursīvā sadalīšana kas ir klasifikācijas algoritms.

Sadalīsim datus “vilciena” un “testa” kopās, izmantojot “sample.split ()” funkciju no “caTools” pakotnes.

bibliotēka (caTools)

65% novērojumu no slejas “Iegādāti” tiks piešķirti “TRUE” apzīmējumi, bet pārējiem - “FALSE”.

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

Visi novērojumi, kuriem ir “TRUE” etiķete, tiks saglabāti “vilciena” datos, un tie novērojumi ar “FALSE” marķējumu tiks piešķirti “testa” datiem.

apakškopa (automašīnas_pirkums, dalītās vērtības == T) -> vilciena dati
apakškopa (car_purchase, split_values ​​== F) -> test_data

Rekursīvās sadalīšanas algoritma izveides laiks:

kāda ir ligzdu programmēšana

Sāksim, ielādējot paketi “rpart”:

bibliotēka (rpart)

Kolonna “Iegādāts” būs atkarīgs mainīgais, un visas pārējās kolonnas ir neatkarīgi mainīgie, t.i., mēs nosakām, vai persona ir iegādājusies automašīnu vai nē attiecībā uz visām pārējām kolonnām. Modelis ir veidots uz “train_data”, un rezultāts tiek saglabāts “mod1”.

rpart (Iegādāts ~., dati = vilciena_dati) -> mod1

Uzzīmēsim rezultātu:

diagramma (mod1, starpība = 0,1) teksts (mod1, diezgan = T, cex = 0,8)

Tagad turpināsim un paredzēsim rezultātus vietnē “test_data”. Kā pirmo argumentu mēs dodam izveidoto rpart modeli “mod1”, testa kopu “test_data” kā otro argumentu un prognozes tipu kā “klasi” trešajam argumentam. Rezultāts tiek saglabāts objektā ‘result1’.

prognozēt (mod1, test_data, type = 'class') -> rezultāts1

Novērtēsim modeļa precizitāti, izmantojot “confusionMatrix ()” funkciju no paketes paketes.

bibliotēka (caret) confusionMatrix (tabula (test_data $ iegādāts, rezultāts1))

Apjukuma matrica mums saka, ka no 90 novērojumiem, kad persona nepirka automašīnu, 79 novērojumi tika pamatoti klasificēti kā “Nē” un 11 - nepareizi - “JĀ”. Tāpat no 50 novērojumiem, kad persona faktiski nopirka automašīnu, 47 ir pamatoti klasificēti kā “JĀ”, bet 3 - nepareizi - “NĒ”.

Mēs varam atrast modeļa precizitāti, pareizās prognozes dalot ar kopējām prognozēm, t.i. (79 + 47) / (79 + 47 + 11 + 3).

K-grupēšana:

Mēs strādāsim ar “varavīksnenes” datu kopu, lai ieviestu k-līdzekļu kopu:

Noņemsim kolonnu “Sugas” un izveidosim jaunu datu kopu, kurā ir tikai pirmās četras kolonnas no “iris” datu kopas.

varavīksnene [1: 4] -> iris_k

Pieņemsim, ka kopu skaits ir 3. Funkcija “Kmeans ()” ņem ievaddatus un to kopu skaitu, kurās dati ir jāsavieno. Sintakse ir: kmeans (dati, k), kur k ir kopu centru skaits.

kmeans (iris_k, 3) -> k1

Klasteru analīze:

str (k1)

Funkcija str () dod kmeans struktūru, kas ietver dažādus parametrus, piemēram, withinss, betweenss utt., Analizējot, kuru varat uzzināt kmeans veiktspēju.

Betweenss: Starp kvadrātu summu, t.i., Intracluster līdzība

withinss: Kvadrāta summas ietvaros, t.i., starpklustu līdzība

totwithinss: visu klasteru visu savainojumu summa, t.i., kopējā klastera iekšējā līdzība

Labam kopu veidam būs zemāka “tot.withinss” vērtība un augstāka “betweenss” vērtība, kas ir atkarīga no sākotnēji izvēlēto kopu “k” skaita.

Ir pienācis laiks kļūt par mašīnmācīšanās ekspertu, lai izmantotu jaunās iespējas, kas jums rodas. Tas mūs noved pie šīs “ Mašīnmācīšanās ar R ”Emuārs. Es ceru, ka šis emuārs bija informatīvs un auglīgs.

Edurekai ir īpaši kurators kas palīdz iegūt zināšanas mašīnmācīšanās algoritmos, piemēram, K-Means Clustering, Decision Trees, Random Forest, Naive Bayes. Jūs uzzināsiet arī jēdzienus Statistika, Laika rindas, Teksta ieguve un ievadu dziļai mācībai. Drīz sākas jaunas sērijas šim kursam !!