Mašinų mokymasis R pradedantiesiems su pavyzdžiu



Šis tinklaraštis apie mašininį mokymąsi naudojant „R“ padeda išmokti pagrindines mašininio mokymosi sąvokas ir kartu su R įgyvendinti įvairius mašininio mokymosi algoritmus.

Mašininis mokymasis su R

Mašininis mokymasis yra dabartis ir ateitis! Nuo „Netflix“ rekomendacijų variklio iki „Google“ savarankiškai vairuojančio automobilio - visa tai mokomasi mašinomis. Šis tinklaraštis apie mašininį mokymąsi su R padeda suprasti pagrindines mašininio mokymosi koncepcijas, kurias seka skirtingi mašininio mokymosi algoritmai, ir įgyvendinti tuos mašininio mokymosi algoritmus su R.

Šį tinklaraštį „Mašininis mokymasis su R“ sudaro šie skyriai:





Mašininis mokymasis su R Edureka

Suprasti mašininį mokymąsi

Fish1- mašininis mokymasis su R - Edureka



Kaip žinoti, kad visa tai yra žuvis?



Būdamas vaikas, galėjote susidurti su žuvies paveikslėliu ir jūsų darželio auklėtojai ar tėvai jums būtų pasakę, kad tai žuvis ir ji turi keletą specifinių savybių, pavyzdžiui, turi pelekus, žiaunas, porą žuvų akys, uodega ir pan. Dabar, kai jūsų smegenys susiduria su atvaizdu, kuriame yra tų funkcijų rinkinys, jos automatiškai užregistruoja jį kaip žuvį, nes jūsų smegenys tai turi išmoko kad tai žuvis.

Štai kaip veikia mūsų smegenys, bet kaip su mašina? Jei tas pats vaizdas perduodamas mašinai, kaip mašina atpažins jį kaip žuvį?

Čia M achine Mokymasis ateisime. Mes toliau maitinsime žuvies vaizdus prie kompiuterio su žyma „žuvis“, kol mašina išmoksta visų susijusių funkcijų su žuvis.

kaip įdiegti php "Windows 7"

Kai mašina sužinos visas su žuvimi susijusias funkcijas, mes pateiksime jai naujų duomenų, kad nustatytume, kiek jis išmoko.

Kitaip tariant, Neapdoroti duomenys / mokymo duomenys suteikiama mašinai, kad ji mokosi visos funkcijos, susijusios su Treniruočių duomenys. Kartą mokymasis yra duotas Nauji duomenys / bandymo duomenys nustatyti, kaip gerai mašina išmoko.

Pažvelkime į priekį šiame „Machine Learning with R“ tinklaraštyje ir supraskime apie mašininio mokymosi tipus.

Mašininio mokymosi tipai

  • Vadovaujamas mokymasis:

Prižiūrimo mokymosi algoritmas mokosi iš žinomo duomenų rinkinio („Training Data“), kuris turi etiketes, leidžiančias numatyti.

Regresija ir klasifikacija yra keli prižiūrimo mokymosi pavyzdžiai.

#Klasifikacija:

Klasifikavimas nustato, kuriam kategorijų rinkiniui priklauso naujas stebėjimas, ty klasifikavimo algoritmas išmoksta visas mokymo duomenų ypatybes ir etiketes, o kai jam pateikiami nauji duomenys, jis turi priskirti etiketes naujiems stebėjimams, atsižvelgdamas į tai, ko išmoko iš mokymo duomenų.

Šiame pavyzdyje, jei pirmajam stebėjimui priskiriama etiketė „Vyras“, jis teisingai klasifikuojamas, tačiau jei jam priskiriama etiketė „Moteris“, klasifikacija neteisinga. Panašiai ir antrojo pastebėjimo atveju, jei etiketė yra „Moteris“, ji teisingai klasifikuojama, kitaip klasifikacija neteisinga.

#Regresija:

Regresija yra prižiūrimas mokymosi algoritmas, kuris padeda nustatyti, kaip vienas kintamasis veikia kitą kintamąjį.

Čia „living_area“ yra nepriklausomas kintamasis, o „price“ yra priklausomas kintamasis, ty mes nustatome, kaip „price“ skiriasi nuo „living_area“.

  • Neprižiūrimas mokymasis:

Neprižiūrimas mokymosi algoritmas daro išvadas iš duomenų, neturinčių etikečių.

Grupavimas yra neprižiūrimo mokymosi pavyzdys. „K reiškia“, „Hierarchinė“, „Apytikslės C priemonės“ yra keletas grupavimo algoritmų pavyzdžių.

Šiame pavyzdyje stebėjimų rinkinys yra padalintas į dvi grupes. Grupavimas atliekamas remiantis stebėjimų panašumu. Tarp grupių yra labai panašus ir mažai panašus į grupes, t. Y. Yra labai didelis visų autobusų panašumas, bet mažas autobusų ir automobilių panašumas.

  • Mokymasis sustiprinti:

„Sustiprinimas“ yra mašininio mokymosi algoritmo tipas, kai mašina / agentas į aplinka išmoksta idealaus elgesio, kad maksimaliai padidintų jo našumą. Kad agentas išmoktų savo elgesį, reikalingi paprasti atsiliepimai apie atlygį. Tai vadinama sutvirtinimo signalas .

Paimkime pacmanas pavyzdžiui. Kol pacmanas vis valgo maistą, jis uždirba taškus, tačiau atsitrenkęs į pabaisą praranda savo gyvybę. Taigi Pacmanas sužino, kad reikia valgyti daugiau maisto ir vengti monstrųsiekiant pagerinti jo veikimą.

Mašininio mokymosi įgyvendinimas naudojant R:

Tiesinė regresija:

Dirbsime su deimantų duomenų rinkiniu, kad įgyvendintume linijinės regresijos algoritmą:

Duomenų rinkinio aprašymas:

Prieš kurdami bet kokį duomenų modelį, mes turėtume suskirstyti duomenis į „traukinio“ ir „bandymo“ rinkinius. Modelis bus pastatytas ant „traukinio“ rinkinio, o jo tikslumas bus patikrintas „bandymo“ rinkinyje.

Turime įkelti „caTools“ paketą, kad duomenys būtų padalyti į du rinkinius.

biblioteka („caTools“)

Pakete „caTools“ pateikiama funkcija „sample.split ()“, kuri padeda suskaidyti duomenis.

sample.split (deimantų $ kaina, SplitRatio = 0,65) -> split_index

65% stebėjimų iš kainų stulpelio buvo priskirta „true“ etiketė, o likusiems 35% - „false“ etiketė.

pogrupis (deimantai, split_index == T) -> traukinys pogrupis (deimantai, split_index == F) -> testas

Visi stebėjimai, pažymėti etikete „true“, buvo saugomi traukinys “objektas ir tie stebėjimai, turintys „klaidingą“ etiketę, priskirti „testo“ rinkiniui.

Dabar, kai padalijimas yra atliktas ir mes turime „traukinio“ ir „bandymo“ rinkinius, atėjo laikas sukurti tiesinį regresijos modelį ant treniruočių rinkinio.

Naudosime funkciją „lm ()“, kad sukurtume tiesinės regresijos modelį pagal „traukinio“ duomenis. Mes nustatome kaina deimantų, atsižvelgiant į visus kitus duomenų rinkinio kintamuosius. Sukurtas modelis saugomas objekte „mod_regress“.

lm (kaina ~., duomenys = traukinys) -> mod_regress

Dabar, sukūrę modelį, turime numatyti „testo“ rinkinį. „Prognozuoti ()“ funkcija naudojama prognozėms gauti. Tam reikia dviejų argumentų: pastatytas modelis ir testų rinkinys. Nuspėjami rezultatai saugomi objekte „result_regress“.

numatyti (mod_regress, test) -> rezultatas_regress

Susiekime faktines kainų vertes iš „testo“ duomenų rinkinio ir numatomas vertes į vieną duomenų rinkinį, naudodami funkciją „cbind ()“. Naujas duomenų rėmas saugomas „Final_Data“

cbind (faktinė = bandymo $ kaina, numatoma = rezultato_regresas) -> Galutiniai_duomenys 
as.data.frame („Final_Data“) -> „Final_Data“

Žvilgsnis į „Final_Data“, kurį sudaro faktinės vertės ir numatomos vertės:

Suraskime klaidą atimdami numatytas vertes iš faktinių verčių ir pridėdami šią klaidą kaip naują stulpelį prie „Final_Data“:

(Final_Data $ Actual- Final_Data $ Predicted) -> klaida
„cbind“ („Final_Data“, klaida) -> „Final_Data“

Žvilgsnis į „Final_Data“, kuris taip pat apima numatymo klaidą:

Dabar mes eisime į priekį ir apskaičiuosime Vidutinės šaknies kvadrato klaida “ kuri pateikia bendrą prognozių paklaidą

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

Sukurkime kitą modelį, kad galėtume palyginti abiejų šių modelių tikslumą ir nustatyti, kuris yra geresnis.

Sukursime naują linijinės regresijos modelį ant „traukinio“ rinkinio, tačiau šį kartą mes atsisakysime „x“ ir „y“ stulpelių iš nepriklausomų kintamųjų, ty deimantų „kainą“ nustato visi stulpelių, išskyrus „x“ ir „y“.

Sukurtas modelis saugomas „mod_regress2“:

lm (kaina ~.-y-z, duomenys = traukinys) -> mod_regress2

Numatomi rezultatai saugomi „result_regress2“

numatyti (mod_regress2, test) -> result_regress2

Faktinės ir numatomos vertės sujungiamos ir saugomos „Final_Data2“:

cbind (faktinė = bandymo $ kaina, numatoma = rezultatas_regresas2) -> Galutiniai_duomenys2 
as.data.frame (Final_Data2) -> Final_Data2

Taip pat pridėkime numatymo klaidą prie „Final_Data2“

(Final_Data2 $ Actual- Final_Data2 $ Predicted) -> klaida2
„cbind“ („Final_Data2“, „error2“) -> „Final_Data2“

Žvilgsnis į „Final_Data2“:

Rasti šaknies vidurkio klaidą, kad gautumėte bendrą klaidą:

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

Matome, kad „rmse2“ yra šiek tiek mažesnis nei „rmse1“, taigi antrasis modelis yra šiek tiek geresnis nei pirmasis.

Klasifikacija:

Dirbsime su duomenų rinkiniu „automobilis_pirkimas“, kurį įgyvendinsime rekursinis skaidymas kuris yra klasifikavimo algoritmas.

Padalinkime duomenis į „traukinio“ ir „testo“ rinkinius naudodami „sample.split ()“ funkciją iš „caTools“ paketo.

biblioteka („caTools“)

65% stebėjimų iš stulpelio „Pirkta“ bus priskirtos „TRUE“ etiketės, o likusiems - „FALSE“ etiketės.

sample.split (automobilio_pirkimas $ pirktas, SplitRatio = 0.65) -> split_values

Visi stebėjimai, turintys „TRUE“ etiketę, bus saugomi „traukinio“ duomenyse, o „FALSE“ etiketę turintys stebėjimai bus priskirti „testo“ duomenims.

pogrupis (automobilio_pirkimas, padalijimo_vertes == T) -> traukinio_duomenys
pogrupis (automobilio_pirkimas, padalijimo_vertes == F) -> test_data

Laikas sukurti rekursinį skaidymo algoritmą:

Pradėsime įkėlę „rpart“ paketą:

biblioteka (rpart)

Stulpelis „Įsigytas“ bus priklausomas kintamasis, o visi kiti stulpeliai yra nepriklausomi kintamieji, t. Y. Mes nustatome, ar asmuo nusipirko automobilį, ar ne visų kitų stulpelių atžvilgiu. Modelis sukurtas ant „train_data“, o rezultatas saugomas „mod1“.

rpart (pirkta ~., duomenys = traukinio_duomenys) -> mod1

Suplanuokime rezultatą:

diagrama (mod1, paraštė = 0,1) tekstas (mod1, pretty = T, cex = 0.8)

Dabar eikime į priekį ir prognozuokime „test_data“ rezultatus. Mes pateikiame pastatytą rpart modelį „mod1“ kaip pirmąjį argumentą, testo rinkinį „test_data“ kaip antrąjį argumentą, o prognozavimo tipą - kaip „class“ trečiajam argumentui. Rezultatas saugomas objekte „result1“.

numatyti (mod1, test_data, type = 'class') -> rezultatas1

Įvertinkime modelio tikslumą naudodami funkciją „confusionMatrix ()“ iš „caret“ paketo.

biblioteka (caret) confusionMatrix (lentelė (test_data $ pirkta, rezultatas1))

Painiavos matrica mums sako, kad iš 90 stebėjimų, kai asmuo nepirko automobilio, 79 stebėjimai buvo teisingai priskirti „Ne“, o 11 - neteisingai priskirti „TAIP“. Panašiai iš 50 stebėjimų, kai asmuo faktiškai pirko automobilį, 47 buvo teisingai priskirti „TAIP“, o 3 neteisingai priskirti „NE“.

pl sql pradedantiesiems su pavyzdžiais

Modelio tikslumą galime rasti padaliję teisingas prognozes iš visų prognozių, t. Y. (79 + 47) / (79 + 47 + 11 + 3).

„K“ reiškia grupavimą:

Dirbsime su „rainelės“ duomenų rinkiniu, kad įdiegtume k reikšmių grupes:

Pašalinkime stulpelį „Rūšys“ ir sukurkime naują duomenų rinkinį, kurį sudaro tik pirmieji keturi „rainelės“ duomenų rinkinio stulpeliai.

rainelė [1: 4] -> iris_k

Paimkime, kad klasterių skaičius bus 3. Funkcija „Kmeans ()“ ima įvesties duomenis ir grupių, kuriose duomenys turi būti kaupiami, skaičių. Sintaksė yra tokia: kmeans (duomenys, k), kur k yra klasterių centrų skaičius.

kmeans (iris_k, 3) -> k1

Grupių analizė:

str (k1)

Funkcija str () suteikia kmeans struktūrą, apimančią įvairius parametrus, tokius kaip withinss, betweenss ir kt., Analizuodami, kuriuos galite sužinoti kmeans veikimą.

Betweenss: Tarp kvadratų sumos, t. y. vidinio klasterio panašumas

withinss: Kvadrato sumoje, t. y. tarp klasterių panašumas

totwithinss: visų klasterių visų ininsų suma, t. y. bendras klasterio vidaus panašumas

Geras klasteris turės mažesnę „tot.withinss“ vertę ir didesnę „betweenss“ vertę, kuri priklauso nuo iš pradžių pasirinktų klasterių skaičiaus „k“.

Atėjo laikas tapti mašininio mokymosi ekspertu ir pasinaudoti naujomis galimybėmis. Tai priveda mus prie šios pabaigos “ Mašininis mokymasis su R “Tinklaraštis. Tikiuosi, kad šis tinklaraštis buvo informatyvus ir vaisingas.

„Edureka“ turi specialiai kuruotą Tai padeda įgyti mašininio mokymosi algoritmų, tokių kaip „K-Means Clustering“, „Sprendimų medžiai“, „Random Forest“, „Naive Bayes“, patirtį. Sužinosite ir statistikos, laiko eilučių, teksto gavybos ir įvado į giluminį mokymąsi sąvokas. Netrukus prasidės naujos šio kurso partijos !!