Strojové učenie v R pre začiatočníkov s príkladom



Tento blog o strojovom učení s R vám pomôže naučiť sa základné koncepty strojového učenia a implementovať rôzne algoritmy strojového učenia s R.

Strojové učenie s R.

Strojové učenie je prítomnosť a budúcnosť! Od stroja odporúčaní Netflixu až po samoriadiace auto spoločnosti Google - to všetko je strojové učenie. Tento blog o Machine Learning with R vám pomôže pochopiť základné koncepty strojového učenia, po ktorých nasledujú rôzne algoritmy strojového učenia, a implementáciu týchto algoritmov strojového učenia pomocou R.

Tento blog na tému „Machine Learning with R“ sa skladá z týchto častí:





Strojové učenie s Edureka

Pochopenie strojového učenia

Fish1 - strojové učenie s R - Edureka



Ako viete, že sú to všetky ryby?



Ako dieťa ste sa mohli stretnúť s obrázkom ryby a učiteľom alebo rodičom v materskej škole by vám povedali, že ide o rybu, ktorá má s ňou spojené niektoré špecifické vlastnosti, ako napríklad plutvy, žiabre, pár oči, chvost a tak ďalej. Teraz, kedykoľvek váš mozog narazí na obraz s touto sadou funkcií, automaticky ho zaregistruje ako rybu, pretože váš mozog má Učil sa že je to ryba.

Takto funguje náš mozog, ale čo so strojom? Ak sa do stroja podá rovnaký obrázok, ako ho stroj identifikuje ako rybu?

Tu M achine učenie vchádza dovnútra. Obrázky rýb budeme naďalej kŕmiť počítačom so značkou „fish“, kým stroj sa naučí všetky súvisiace funkcie s ryby.

Keď sa stroj naučí všetky funkcie spojené s rybou, vložíme jej nové údaje, aby sme určili, koľko sa toho naučila.

čo je awt v jave

Inými slovami, Nespracované údaje / údaje o tréningu sa dáva stroju tak, aby bolo učí sa všetky funkcie spojené s Údaje o tréningu. Akonáhle je učenie hotové, je dané Nové údaje / údaje o skúškach určiť, ako dobre sa stroj naučil.

Poďme ďalej v tomto blogu o strojovom učení s R a pochopme typy strojového učenia.

Typy strojového učenia

  • Učenie pod dohľadom:

Algoritmus supervidovaného učenia sa učí zo známej množiny údajov (údaje o tréningu), ktorá má štítky na vytváranie predpovedí.

Regresia a klasifikácia sú niektoré príklady učenia sa pod dohľadom.

# Klasifikácia:

Klasifikácia určuje, do ktorej skupiny kategórií nové pozorovanie patrí, tj. Klasifikačný algoritmus sa naučí všetky vlastnosti a označenia tréningových údajov, a keď mu budú dané nové údaje, musí novému pozorovaniu priradiť štítky podľa toho, čo sa naučil. z tréningových údajov.

Ak je pre tento príklad prvému pozorovaniu pridelený štítok „Muž“, je klasifikovaný správne, ale ak je označený štítkom „Žena“, klasifikácia je nesprávna. Podobne pre druhé pozorovanie, ak je uvedená značka „Žena“, je klasifikovaná správne, inak je klasifikácia nesprávna.

# Regresia:

Regresia je algoritmus učeného pod dohľadom, ktorý pomáha pri určovaní toho, ako jedna premenná ovplyvňuje inú premennú.

Tu je „živá_oblasť“ nezávislá premenná a „cena“ je závislá premenná, to znamená, že určujeme, ako sa „cena“ líši od „živej_oblasti“.

  • Učenie bez dozoru:

Algoritmus učenia bez dozoru čerpá závery z údajov, ktoré nemajú štítky.

Zhlukovanie je príkladom učenia bez dozoru. „K-prostriedky“, „hierarchické“, „fuzzy C-prostriedky“ sú niektoré príklady klastrových algoritmov.

V tomto príklade je množina pozorovaní rozdelená do dvoch zhlukov. Klastrovanie sa vykonáva na základe podobnosti medzi pozorovaniami. Existuje vysoká podobnosť medzi klastrami a nízka podobnosť medzi klastrami, t. J. Existuje veľmi vysoká podobnosť medzi všetkými autobusmi, ale nízka podobnosť medzi autobusmi a automobilmi.

  • Výučba posilňovania:

Výstužné učenie je typ algoritmu strojového učenia, kde stroj / agent v prostredie sa učí ideálne správanie s cieľom maximalizovať svoj výkon. Na to, aby sa agent naučil svoje správanie, je potrebná jednoduchá spätná väzba, ktorá sa označuje ako výstužný signál .

Vezmime pacman napríklad. Pokiaľ pacman bude stále jesť jedlo, získava body, ale keď sa zrazí s monštrom, stratí život. Pacman sa tak dozvie, že musí jesť viac jedla a vyhýbať sa príšerámaby sa zlepšil jeho výkon.

Implementácia strojového učenia s R:

Lineárna regresia:

Budeme pracovať s dátovou sadou diamantov na implementácii algoritmu lineárnej regresie:

Popis súboru údajov:

Pred vytvorením ľubovoľného modelu na údajoch by sme mali rozdeliť údaje na „vlakové“ a „testovacie“ súbory. Model bude postavený na súprave „vlak“ a jeho presnosť sa bude kontrolovať na súprave „vlak“.

Potrebujeme načítať balík „caTools“, aby sme dáta rozdelili na dve sady.

knižnica (caTools)

Balík „caTools“ poskytuje funkciu „sample.split ()“, ktorá pomáha pri rozdelení údajov.

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

65% pozorovaní zo stĺpca s cenami malo pridelený štítok „true“ a zvyšných 35% bolo priradených štítok „false“.

podmnožina (diamanty, split_index == T) -> vlak podmnožina (kosoštvorce, split_index == F) -> test

Všetky pozorovania, ktoré majú štítok „true“, boli uložené v „ vlak “objekt a tie pozorovania, ktoré majú štítok „nepravda“, boli priradené k skupine „test“.

Teraz, keď je rozdelenie hotové a máme svoje „vlakové“ a „testovacie“ množiny, je čas zostaviť model lineárnej regresie na cvičnej množine.

Pomocou funkcie „lm ()“ zostavíme model lineárnej regresie na údajoch „vlaku“. Určujeme cena vzhľadom na všetky ostatné premenné súboru údajov. Vytvorený model je uložený v objekte „mod_regress“.

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

Teraz, keď sme model postavili, musíme robiť predpovede na „testovacej“ množine. Na získanie predpovedí sa používa funkcia „predvídať ()“. Vyžaduje si dva argumenty: postavený model a testovacia súprava. Predpovedané výsledky sú uložené v objekte „result_regress“.

predvídať (mod_regress, test) -> result_regress

Spojme skutočné hodnoty cien zo súboru údajov „test“ a predpovedané hodnoty do jedného súboru údajov pomocou funkcie „cbind ()“. Nový dátový rámec je uložený v priečinku „Final_Data“

cbind (Skutočná = testovacia cena $, Predikovaná = výsledok_regres) -> Konečná_údaj 
as.data.frame (Final_Data) -> Final_Data

Pohľad na „Final_Data“, ktorý obsahuje skutočné hodnoty a predpokladané hodnoty:

Poďme nájsť chybu tak, že odčítame predpokladané hodnoty od skutočných hodnôt a pridajme túto chybu ako nový stĺpec do stĺpca „Final_Data“:

(Final_Data $ Actual- Final_Data $ Predikované) -> chyba
cbind (Final_Data, chyba) -> Final_Data

Pohľad na „Final_Data“, ktorý obsahuje aj chybu v predikcii:

Teraz pokračujeme a vypočítame „ Root Mean Square Error ” čo dáva súhrnnú chybu pre všetky predpovede

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

Poďme si zostaviť ďalší model, aby sme mohli porovnať presnosť oboch týchto modelov a určiť, ktorý je lepší.

Postavíme nový lineárny regresný model na množine „vlakov“, ale tentokrát vynecháme stĺpce „x“ a „y“ z nezávislých premenných, tj. „Cena“ diamantov je určená všetkými stĺpce okrem „x“ a „y“.

Vytvorený model je uložený v priečinku „mod_regress2“:

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

Predpovedané výsledky sú uložené v priečinku „result_regress2“

predvídať (mod_regress2, test) -> result_regress2

Skutočné a predpokladané hodnoty sa skombinujú a uložia do priečinka „Final_Data2“:

cbind (Skutočná = testovacia cena $, Predikovaná = výsledok_regres2) -> Konečná_údaj2 
as.data.frame (Final_Data2) -> Final_Data2

Pridajme tiež chybu v predpovedi k parametru „Final_Data2“

(Final_Data2 $ Skutočná - Final_Data2 $ Predikovaná) -> chyba2
cbind (Final_Data2, chyba2) -> Final_Data2

Pohľad na „Final_Data2“:

Nájdenie koreňovej strednej štvorcovej chyby na získanie súhrnnej chyby:

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

SQL Server integrácia služieb SSI krok za krokom tutorial

Vidíme, že „rmse2“ je o niečo menej ako „rmse1“, a preto je druhý model o niečo lepší ako prvý model.

Klasifikácia:

Na implementácii budeme pracovať s množinou údajov „car_purchase“ rekurzívne rozdelenie čo je klasifikačný algoritmus.

Poďme rozdeliť údaje na „vlakové“ a „testovacie“ sady pomocou funkcie „sample.split ()“ z balíka „caTools“.

knižnica (caTools)

65% pozorovaní zo stĺpca „Zakúpené“ bude mať štítky „TRUE“ a zvyšku budú priradené štítky „FALSE“.

sample.split (car_purchase $ zakúpené, SplitRatio = 0,65) -> split_values

Všetky tie pozorovania, ktoré majú štítok „TRUE“, sa uložia do údajov „vlaku“ a tie pozorovania, ktoré majú štítok „FALSE“, sa priradia k „testovacím“ údajom.

podmnožina (car_purchase, split_values ​​== T) -> údaje o vlaku
podmnožina (car_purchase, split_values ​​== F) -> test_data

Čas na zostavenie algoritmu rekurzívneho rozdelenia:

Začneme načítaním balíka „rpart“:

knižnica (rpart)

Stĺpec „Zakúpené“ bude závislou premennou a všetky ostatné stĺpce sú nezávislé premenné, t. J. Určujeme, či daná osoba kúpila automobil, alebo nie, pokiaľ ide o všetky ostatné stĺpce. Model je postavený na „train_data“ a výsledok je uložený v „mod1“.

rpart (Zakúpené ~., data = train_data) -> mod1

Pozrime sa na výsledok:

graf (mod1, okraj = 0,1) text (mod1, pekný = T, cex = 0,8)

Poďme teraz a predpovedajme výsledky na „test_data“. Ako prvý argument uvádzame zabudovaný model rpart „mod1“, testovací súbor „test_data“ ako druhý argument a typ predikcie „triedu“ pre tretí argument. Výsledok sa uloží do objektu „result1“.

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

Vyhodnoťme presnosť modelu pomocou funkcie „confusionMatrix ()“ z vreckového balíka.

knižnica confusionMatrix (tabuľka (test_data $ zakúpené, výsledok 1))

Matica zámeny nám hovorí, že z 90 pozorovaní, pri ktorých si osoba auto nekúpila, bolo 79 pozorovaní správne klasifikovaných ako „Nie“ a 11 nesprávne ako „ÁNO“. Podobne z 50 pozorovaní, kde si osoba skutočne kúpila auto, bolo 47 správne klasifikovaných ako „ÁNO“ a 3 nesprávne ako „NIE“.

Presnosť modelu nájdeme vydelením správnych predpovedí celkovými predikciami, t. J. (79 + 47) / (79 + 47 + 11 + 3).

Zhlukovanie K-prostriedkov:

Budeme pracovať s množinou údajov „iris“, aby sme implementovali k-means clustering:

Odstráňte stĺpec Druhy a vytvorme nový súbor údajov, ktorý obsahuje iba prvé štyri stĺpce zo súboru údajov „dúhovka“.

iris [1: 4] -> iris_k

Vezmime si počet klastrov, ktorý má byť 3. Funkcia „Kmeans ()“ vezme vstupné údaje a počet klastrov, v ktorých sa majú údaje zoskupiť. Syntax je: kmeans (data, k), kde k je počet centier klastra.

kmeans (iris_k, 3) -> k1

Analýza klastrovania:

str (k1)

Funkcia str () poskytuje štruktúru kmeans, ktorá obsahuje rôzne parametre, ako napríklad insidess, betweenss, atď. A analyzuje, kde môžete zistiť výkon kmeans.

betweenss: Medzi súčtom štvorcov, t.j.

v rámci: V rámci súčtu štvorca, tj. podobnosť klastra

totwithinss: Súčet všetkých vnútrajškov všetkých klastrov, tj. Celková intra-klastrová podobnosť

Dobré zoskupenie bude mať nižšiu hodnotu „tot.withinss“ a vyššiu hodnotu „betweenss“, čo závisí od počtu pôvodne vybraných klastrov „k“.

Nastal čas stať sa expertom na strojové učenie, aby ste mohli využívať nové príležitosti, ktoré sa vám naskytnú. Týmto sa dostávame na koniec tohto “ Strojové učenie s R. ”Blog. Dúfam, že tento blog bol poučný.

Edureka má špeciálne upravené ktorá vám pomôže získať odborné znalosti v oblasti algoritmov strojového učenia, ako sú zhluky K-Means, rozhodovacie stromy, náhodný les, naivné zálivy. Naučíte sa tiež pojmy štatistika, časové rady, ťažba textu a úvod do hlbokého učenia. Nové dávky pre tento kurz čoskoro začnú !!