Strojové učení v R pro začátečníky s příkladem

Tento blog o strojovém učení s R vám pomůže naučit se základní koncepty strojového učení a implementovat různé algoritmy strojového učení s R.

Strojové učení s R.

Strojové učení je přítomnost a budoucnost! Od motorů doporučení Netflixu až po auto s vlastním řízením od Googlu je to všechno strojové učení. Tento blog o Machine Learning with R vám pomůže porozumět základním konceptům strojového učení následovaným různými algoritmy strojového učení a implementaci těchto algoritmů strojového učení pomocí R.

Tento blog „Machine Learning with R“ obsahuje tyto části:





Strojové učení s R | Edureka

Porozumění strojovému učení

Fish1 - strojové učení s R - Edureka



Jak víte, že jsou všechny ryby?



Jako dítě jste mohli narazit na obrázek ryby a učitelé mateřské školy nebo rodiče by vám řekli, že se jedná o rybu a má s ní spojené určité specifické rysy, jako jsou ploutve, žábry, pár oči, ocas a tak dále. Nyní, kdykoli váš mozek narazí na obraz s touto sadou funkcí, automaticky jej zaregistruje jako rybu, protože váš mozek má naučil se že je to ryba.

Takto funguje náš mozek, ale co stroj? Pokud se do stroje přivede stejný obrázek, jak ho stroj identifikuje jako rybu?

To je místo, kde M achine učení přijde dovnitř. Budeme pokračovat v krmení obrázků ryby do počítače se značkou „fish“, dokud stroj se naučí všechny související funkce s Ryba.

Jakmile se stroj naučí všechny funkce spojené s rybou, zavedeme ji novými daty, abychom zjistili, kolik se toho naučilo.

co je tlumočník v Javě

Jinými slovy, Nezpracovaná data / tréninková data je dán stroji, takže to učí se všechny funkce spojené s Údaje o školení. Jakmile je učení hotové, je dáno Nová data / testovací data zjistit, jak dobře se stroj naučil.

Pojďme se posunout vpřed v tomto blogu Machine Learning with R a pochopme typy typů Machine Learning.

Druhy strojového učení

  • Kontrolované učení:

Algoritmus supervidovaného učení se učí ze známé datové sady (Training Data), která má štítky pro vytváření předpovědí.

Regrese a klasifikace jsou některé příklady supervidovaného učení.

#Klasifikace:

Klasifikace určuje, do které skupiny kategorií nové pozorování patří, tj. Klasifikační algoritmus se naučí všechny funkce a štítky tréninkových dat, a když mu budou dána nová data, musí přidělit nové pozorování štítky podle toho, co se naučil z tréninkových dat.

V tomto příkladu, pokud je prvnímu pozorování přidělen štítek „Muž“, pak je správně klasifikován, ale pokud je mu přidělen štítek „Žena“, je klasifikace nesprávná. Podobně pro druhé pozorování, je-li daný štítek „Žena“, je správně klasifikován, jinak je klasifikace špatná.

#Regrese:

Regrese je algoritmus učení pod dohledem, který pomáhá při určování toho, jak jedna proměnná ovlivňuje jinou proměnnou.

Tady je „living_area“ nezávislá proměnná a „cena“ je závislá proměnná, tj. Určujeme, jak se liší „cena“ vzhledem k „žijící_oblasti“.

  • Neřízené učení:

Algoritmus učení bez dozoru čerpá závěry z dat, která nemají štítky.

Shlukování je příkladem učení bez dozoru. „K-means“, „Hierarchical“, „Fuzzy C-Means“ jsou příklady clusterových algoritmů.

V tomto příkladu je sada pozorování rozdělena do dvou shluků. Shlukování se provádí na základě podobnosti mezi pozorováními. Existuje vysoká podobnost uvnitř klastru a nízká podobnost mezi klastry, tj. Existuje velmi vysoká podobnost mezi všemi autobusy, ale nízká podobnost mezi autobusy a automobily.

  • Učení výztuže:

Reinforcement Learning je typ algoritmu strojového učení, kde stroj / agent v životní prostředí se učí ideálnímu chování, aby maximalizoval svůj výkon. Aby se agent naučil své chování, vyžaduje se jednoduchá zpětná vazba, která se označuje jako výztužný signál .

Pojďme vzít pacman například. Dokud bude pacman stále jíst jídlo, získává body, ale když narazí na monstrum, přijde o život. Pacman se tak dozví, že musí jíst více jídla a vyhýbat se příšerámaby se zlepšil jeho výkon.

Implementace strojového učení s R:

Lineární regrese:

Budeme pracovat s datovou sadou diamantů na implementaci algoritmu lineární regrese:

Popis souboru údajů:

Před vytvořením jakéhokoli modelu na datech bychom měli rozdělit data na „vlakové“ a „testovací“ sady. Model bude postaven na „vlakové“ soupravě a jeho přesnost bude ověřena na „vlakové“ soupravě.

Abychom rozdělili data na dvě sady, musíme načíst balíček „caTools“.

knihovna (caTools)

Balíček „caTools“ poskytuje funkci „sample.split ()“, která pomáhá při rozdělení dat.

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

65% pozorování ze sloupce s cenami bylo označeno štítkem „true“ a zbývajícím 35% bylo přiřazeno označení „false“.

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

Všechna pozorování, která mají štítek „true“, byla uložena v „ trénovat “ a pozorování, která mají štítek „false“, byla přiřazena k sadě „test“.

Nyní, když je rozdělení hotové a máme naše „tréninkové“ a „testovací“ sady, je čas vybudovat model lineární regrese na tréninkové sadě.

K sestavení modelu lineární regrese na datech „vlaku“ použijeme funkci „lm ()“. Určujeme cena diamantů s ohledem na všechny ostatní proměnné souboru dat. Postavený model je uložen v objektu „mod_regress“.

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

Nyní, když jsme model postavili, musíme předpovědět na „testovací“ sadě. Funkce „predikovat ()“ slouží k získání předpovědí. Vyžaduje dva argumenty: postavený model a testovací sada. Predikované výsledky jsou uloženy v objektu „result_regress“.

predikce (mod_regress, test) -> result_regress

Pojďme spojit skutečné hodnoty cen ze sady dat „test“ a předpovězené hodnoty do jednoho souboru dat pomocí funkce „cbind ()“. Nový datový rámec je uložen v „Final_Data“

cbind (Skutečná = test $ cena, Předpovězeno = výsledek_regres) -> Konečná_data 
as.data.frame (Final_Data) -> Final_Data

Pohled na „Final_Data“, která se skládá ze skutečných hodnot a předpokládaných hodnot:

Najdeme chybu odečtením předpokládaných hodnot od skutečných hodnot a přidejme tuto chybu jako nový sloupec do „Final_Data“:

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

Pohled na „Final_Data“, který také obsahuje chybu v predikci:

Nyní pokračujeme a spočítáme „ Kořenová střední chyba čtverce “ což dává souhrnnou chybu pro všechny předpovědi

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

Do budoucna si vytvořme další model, abychom mohli porovnat přesnost obou těchto modelů a určit, který je lepší.

Postavíme nový lineární regresní model na „vlakové“ sadě, ale tentokrát vynecháme sloupce „x“ a „y“ z nezávislých proměnných, tj. „Cena“ diamantů je určena všemi sloupce kromě „x“ a „y“.

Postavený model je uložen v souboru „mod_regress2“:

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

Předpokládané výsledky jsou uloženy v „result_regress2“

predikce (mod_regress2, test) -> result_regress2

Skutečné a předpokládané hodnoty jsou kombinovány a uloženy do „Final_Data2“:

cbind (Skutečná = testovací cena $, Předpovězeno = výsledek_regres2) -> Konečná_data2 
as.data.frame (Final_Data2) -> Final_Data2

Přidejme také chybu v predikci do „Final_Data2“

(Final_Data2 $ Actual- Final_Data2 $ Predikce) -> chyba2
cbind (Final_Data2, chyba2) -> Final_Data2

Pohled na „Final_Data2“:

Hledání chyby střední kvadratické chyby pro získání agregační chyby:

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

rozšiřuje a implementuje společně v Javě

Vidíme, že „rmse2“ je nepatrně menší než „rmse1“, a proto je druhý model o něco lepší než první model.

Klasifikace:

Na implementaci budeme pracovat s datovým souborem „car_purchase“ rekurzivní rozdělení což je klasifikační algoritmus.

Rozdělme data na „vlakové“ a „testovací“ sady pomocí funkce „sample.split ()“ z balíčku „caTools“.

knihovna (caTools)

65% pozorování ze sloupce „Zakoupeno“ bude označeno štítky „PRAVDA“ a zbytku budou přiřazeny štítky „FALSE“.

sample.split (car_purchase $ zakoupeno, SplitRatio = 0,65) -> split_values

Všechna pozorování, která mají štítek „TRUE“, budou uložena do dat „vlaku“ a ta pozorování, která mají štítek „FALSE“, budou přiřazena k „testovacím“ datům.

podmnožina (car_purchase, split_values ​​== T) -> data_vlaku
podmnožina (car_purchase, split_values ​​== F) -> test_data

Čas na vytvoření algoritmu rekurzivního dělení:

Začneme načtením balíčku „rpart“:

knihovna (rpart)

Sloupec „Zakoupeno“ bude závislou proměnnou a všechny ostatní sloupce jsou nezávislé proměnné, tj. Určujeme, zda daná osoba koupila auto, či nikoli, ve vztahu ke všem ostatním sloupcům. Model je postaven na „train_data“ a výsledek je uložen v „mod1“.

rpart (Zakoupeno ~., data = train_data) -> mod1

Podívejme se na výsledek:

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

Nyní pojďme předpovědět výsledky na „test_data“. Jako první argument dáváme postavený rpart model „mod1“, testovací sadu „test_data“ jako druhý argument a typ predikce jako „třídu“ pro třetí argument. Výsledek je uložen v objektu „result1“.

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

Vyhodnoťme přesnost modelu pomocí funkce „confusionMatrix ()“ z stříšky.

knihovna (stříška) confusionMatrix (tabulka (test_data $ zakoupeno, výsledek 1))

Matice zmatku nám říká, že z 90 pozorování, kde si osoba auto nekoupila, bylo 79 pozorování správně klasifikováno jako „Ne“ a 11 nesprávně jako „ANO“. Podobně z 50 pozorování, kde osoba skutečně koupila auto, bylo 47 správně klasifikováno jako „ANO“ a 3 nesprávně jako „NE“.

Můžeme zjistit přesnost modelu dělením správných předpovědí celkovými předpovědi, tj. (79 + 47) / (79 + 47 + 11 + 3).

Shlukování K-znamená:

Budeme pracovat s datovou sadou „iris“, abychom implementovali k-means clustering:

Odeberme sloupec „Druh“ a vytvořme nový soubor dat, který obsahuje pouze první čtyři sloupce ze souboru dat „iris“.

iris [1: 4] -> iris_k

Vezměme si počet shluků na 3. Funkce „Kmeans ()“ vezme vstupní data a počet shluků, ve kterých mají být data shlukována. Syntaxe je: kmeans (data, k), kde k je počet center klastru.

kmeans (iris_k, 3) -> k1

Analýza shlukování:

str (k1)

Funkce str () dává strukturu kmeanů, která zahrnuje různé parametry, jako jsou insidess, betweenss atd., Analyzuje, kde můžete zjistit výkon kmeans.

betweenss: Mezi součtem čtverců, tj. podobnost uvnitř seskupení

insidess: Uvnitř součtu čtverců, tj. podobnosti klastru

totwithinss: Součet všech vnitřností všech klastrů, tj. celková podoba uvnitř klastru

Dobré seskupení bude mít nižší hodnotu „tot. Do tří let“ a vyšší hodnotu „betweenss“, což závisí na počtu seskupení „k“ původně vybraných.

Nastal čas, abyste se stali odborníkem na strojové učení, abyste využili nových příležitostí, které se vám naskytnou. Tím se dostáváme na konec tohoto “ Strojové učení s R. ”Blog. Doufám, že tento blog byl poučný.

Edureka má speciálně upravený který vám pomůže získat odborné znalosti v oblasti algoritmů strojového učení, jako je shlukování K-Means, rozhodovací stromy, náhodný les, naivní Bayes. Naučíte se také pojmy Statistika, Časové řady, Těžba textu a úvod do Deep Learning. Nové dávky pro tento kurz brzy začnou !!