Învățarea automată în R pentru începători cu exemplu



Acest blog despre învățarea automată cu R vă ajută să învățați conceptele de bază ale învățării automate și să implementați diferiți algoritmi de învățare automată cu R.

Învățarea automată cu R

Învățarea automată este prezentul și viitorul! De la motorul de recomandare Netflix la mașina cu conducere automată a Google, totul este învățarea automată. Acest blog despre Învățarea automată cu R vă ajută să înțelegeți conceptele de bază ale învățării automate, urmate de diferiți algoritmi de învățare automată și să implementați acei algoritmi de învățare automată cu R.

Acest blog despre „Învățarea automată cu R” cuprinde următoarele secțiuni:





Învățarea automată cu R | Edureka

Înțelegerea învățării automate

Fish1- Învățarea automată cu R - Edureka



De unde știi că toate acestea sunt pești?



În copilărie, s-ar putea să fi dat peste o fotografie a unui pește și vi s-ar fi spus de către profesorii dvs. de grădiniță sau părinții că acesta este un pește și are unele caracteristici specifice asociate cu acesta, cum ar fi aripioare, branhii, o pereche de ochi, o coadă și așa mai departe. Acum, ori de câte ori creierul tău dă peste o imagine cu aceste seturi de caracteristici, îl înregistrează automat ca pește, deoarece creierul tău are învățat că este un pește.

Așa funcționează creierul nostru, dar ce zici de o mașină? Dacă aceeași imagine este alimentată unei mașini, cum o va identifica mașina ca pește?

Aici M achine Învățare vine. Vom continua să alimentăm imaginile unui pește pe un computer cu eticheta „pește” până la mașina învață toate caracteristicile asociate cu peşte.

Odată ce aparatul învață toate caracteristicile asociate cu un pește, îi vom furniza noi date pentru a determina cât a învățat.

Cu alte cuvinte, Date brute / date de instruire este dat mașinii, astfel încât aceasta învață toate caracteristicile asociate cu Date de instruire. Odată ce învățarea se face, se dă Date noi / date de testare pentru a determina cât de bine a învățat mașina.

Să mergem mai departe în acest blog Machine Learning cu R și să înțelegem despre tipurile de Machine Learning.

Tipuri de învățare automată

  • Învățare supravegheată:

Algoritmul de învățare supravegheat învață dintr-un set de date cunoscut (Training Data) care are etichete pentru a face predicții.

Regresia și clasificarea sunt câteva exemple de învățare supravegheată.

#Clasificare:

Clasificarea determină cărui set de categorii îi aparține o nouă observație, adică un algoritm de clasificare învață toate caracteristicile și etichetele datelor de antrenament și atunci când i se oferă date noi, trebuie să atribuie etichete noilor observații în funcție de ceea ce a învățat din datele de instruire.

Pentru acest exemplu, dacă primei observații i se dă eticheta „Bărbat”, atunci este corect clasificată, dar dacă i se dă eticheta „Femeie”, clasificarea este greșită. În mod similar pentru a doua observație, dacă eticheta dată este „Femeie”, aceasta este corect clasificată, altfel clasificarea este greșită.

#Regresie:

Regresia este un algoritm de învățare supravegheat care ajută la determinarea modului în care o variabilă influențează o altă variabilă.

Aici, „living_area” este variabila independentă și „preț” este variabila dependentă, adică stabilim cum variază „prețul” în raport cu „living_area”.

  • Învățare fără supraveghere:

Algoritmul de învățare nesupravegheat trage inferențe din date care nu au etichete.

Clustering este un exemplu de învățare nesupravegheată. „K-înseamnă”, „ierarhic”, „Fuzzy C-Means” sunt câteva exemple de algoritmi de grupare.

În acest exemplu, setul de observații este împărțit în două clustere. Clusterizarea se face pe baza similarității dintre observații. Există o similitudine mare între grupuri și o similaritate mică între grupuri, adică există o similitudine foarte mare între toate autobuzele, dar similaritate scăzută între autobuze și mașini.

  • Consolidarea învățării:

Învățarea prin întărire este un tip de algoritm de învățare automată în care mașină / agent într-un mediu inconjurator învață un comportament ideal pentru a-și maximiza performanța. Este necesar un feedback simplu pentru recompensă pentru ca agentul să-și învețe comportamentul, acesta fiind cunoscut sub numele de semnal de întărire .

Hai sa luam pacman de exemplu. Atâta timp cât Pacman continuă să mănânce alimente, câștigă puncte, dar când se prăbușește împotriva unui monstru, își pierde viața. Astfel, Pacman află că trebuie să mănânce mai multe alimente și să evite monștriipentru a-și îmbunătăți performanța.

Implementarea învățării automate cu R:

Regresie liniara:

Vom lucra cu setul de date diamante pentru a implementa algoritmul de regresie liniară:

Descrierea setului de date:

Înainte de a construi orice model pe date, ar trebui să împărțim datele în seturi „tren” și „test”. Modelul va fi construit pe setul „tren” și acuratețea acestuia va fi verificată pe setul „test”.

Trebuie să încărcăm pachetul „caTools” pentru a împărți datele în două seturi.

bibliotecă (caTools)

Pachetul „caTools” oferă o funcție „sample.split ()” care ajută la împărțirea datelor.

sample.split (prețul diamantelor $, SplitRatio = 0,65) -> split_index

65% din observațiile din coloana prețurilor au primit eticheta „adevărată”, iar restul de 35% au fost etichetate „falsă”.

subset (diamante, split_index == T) -> tren subset (diamante, split_index == F) -> test

Toate observațiile care au eticheta „adevărată” au fost stocate în „ tren ”obiect iar acele observații cu etichetă „falsă” au fost atribuite setului „test”.

Acum că împărțirea este terminată și avem seturile noastre de „antrenament” și „test”, este timpul să construim modelul de regresie liniară pe setul de antrenament.

Vom folosi funcția „lm ()” pentru a construi modelul de regresie liniară pe datele „tren”. Determinăm Preț diamantelor în raport cu toate celelalte variabile ale setului de date. Modelul construit este stocat în obiectul „mod_regress”.

lm (preț ~., date = tren) -> mod_regress

Acum, că am construit modelul, trebuie să facem predicții cu privire la setul „test”. Funcția „predict ()” este utilizată pentru a obține predicții. Este nevoie de două argumente: model construit si set de testare. Rezultatele prezise sunt stocate în obiectul „result_regress”.

predict (mod_regress, test) -> result_regress

Să legăm valorile reale ale prețului din setul de date „test” și valorile prezise într-un singur set de date folosind funcția „cbind ()”. Noul cadru de date este stocat în „Final_Data”

cbind (Actual = preț de testare $, Previzionat = rezultat_regrădire) -> Date_Finală 
as.data.frame (Final_Data) -> Final_Data

O privire la „Final_Data” care cuprinde valori reale și valori prezise:

creați o matrice de obiecte java

Să găsim eroarea scăzând valorile prezise din valorile reale și adăugăm această eroare ca o nouă coloană la „Date_Date”:

(Final_Data $ Actual- Final_Data $ Predict) -> eroare
cbind (Final_Data, error) -> Final_Data

O privire asupra „Final_Data”, care cuprinde și eroarea de predicție:

Acum, vom continua și vom calcula „ Eroare pătrată medie rădăcină ” ceea ce dă o eroare agregată pentru toate predicțiile

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

În continuare, să construim un alt model, astfel încât să putem compara acuratețea ambelor modele și să determinăm care este unul mai bun.

Vom construi un nou model de regresie liniară pe setul „tren”, dar de data aceasta vom renunța la coloanele „x” și „y” din variabilele independente, adică „prețul” diamantelor este determinat de toate coloane cu excepția „x” și „y”.

Modelul construit este stocat în „mod_regress2”:

lm (preț ~.-y-z, date = tren) -> mod_regress2

Rezultatele prezise sunt stocate în „result_regress2”

predict (mod_regress2, test) -> result_regress2

Valorile reale și cele previzionate sunt combinate și stocate în „Final_Data2”:

cbind (Actual = test $ pret, Predict = result_regress2) -> Final_Data2 
as.data.frame (Final_Data2) -> Final_Data2

Să adăugăm, de asemenea, eroarea de predicție la „Final_Data2”

(Final_Data2 $ Actual- Final_Data2 $ Predict) -> eroare2
cbind (Final_Data2, error2) -> Final_Data2

O privire la „Final_Data2”:

Găsirea unei erori pătrate medii pentru a obține eroarea agregată:

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

Vedem că „rmse2” este marginal mai mic decât „rmse1” și, prin urmare, al doilea model este marginal mai bun decât primul model.

Clasificare:

Vom lucra cu setul de date „car_purchase” pentru implementare partiționarea recursivă care este un algoritm de clasificare.

Să împărțim datele în seturi „tren” și „test” folosind funcția „sample.split ()” din pachetul „caTools”.

bibliotecă (caTools)

65% din observațiile din coloana „Achiziționate” vor primi etichete „ADEVĂRATE”, iar restul vor primi etichete „FALS”.

sample.split (auto_purchase $ Achiziționat, SplitRatio = 0,65) -> split_values

Toate acele observații care au eticheta „ADEVĂRAT” vor fi stocate în datele „trenului” și acele observații care au eticheta „FALSĂ” vor fi atribuite datelor „testate”.

subset (auto_purchase, split_values ​​== T) -> train_data
subset (auto_purchase, split_values ​​== F) -> test_data

Este timpul să construiți algoritmul de partiționare recursivă:

Vom începe încărcând pachetul „rpart”:

bibliotecă (rpart)

Coloana „Achiziționată” va fi variabila dependentă și toate celelalte coloane sunt variabile independente, adică stabilim dacă persoana a cumpărat mașina sau nu în raport cu toate celelalte coloane. Modelul este construit pe „train_data” și rezultatul este stocat în „mod1”.

rpart (Achiziționat ~., date = date_tren) -> mod1

Să trasăm rezultatul:

complot (mod1, marjă = 0,1) text (mod1, destul = T, cex = 0,8)

Acum, să mergem mai departe și să prezicem rezultatele pe „test_data”. Oferim modelului rpart încorporat „mod1” ca prim argument, testul setează „test_data” ca al doilea argument și tipul de predicție ca „clasă” pentru al treilea argument. Rezultatul este stocat în obiectul „result1”.

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

Să evaluăm acuratețea modelului folosind funcția „confusionMatrix ()” din pachetul caret.

biblioteca (caret) confusionMatrix (tabel (test_data $ Achiziționat, rezultat1))

Matricea de confuzie ne spune că din cele 90 de observații în care persoana nu a cumpărat mașina, 79 de observații au fost clasificate pe bună dreptate ca „Nu” și 11 au fost clasificate greșit ca „DA”. În mod similar, din cele 50 de observații în care persoana a cumpărat efectiv mașina, 47 au fost pe bună dreptate clasificate ca „DA” și 3 au fost clasificate greșit ca „NU”.

Putem găsi acuratețea modelului împărțind predicțiile corecte cu predicțiile totale, adică (79 + 47) / (79 + 47 + 11 + 3).

Clusterizarea K-Means:

Vom lucra cu setul de date „iris” pentru a implementa gruparea k-means:

Să eliminăm coloana „Specii” și să creăm un nou set de date care cuprinde doar primele patru coloane din setul de date „iris”.

iris [1: 4] -> iris_k

Să luăm numărul de clustere la 3. Funcția „Kmeans ()” ia datele de intrare și numărul de clustere în care datele vor fi grupate. Sintaxa este: kmeans (date, k) unde k este numărul de centre de cluster.

kmeans (iris_k, 3) -> k1

Analizând clusterizarea:

str(k1)

Funcția str () oferă structura kmeans-ului, care include diverși parametri, cum ar fi withinss, betweenss, etc, analizând care puteți afla performanța kmeans-urilor.

între sume: între suma pătratelor, adică asemănarea intraclusteră

withinss: În cadrul sumei pătratului, adică a asemănării între grupuri

totwithinss: Suma tuturor withins-urilor tuturor clusterelor, adică similaritatea totală intra-cluster

Un clustering bun va avea o valoare mai mică de „tot.withinss” și o valoare mai mare a „betweenss”, care depinde de numărul de clustere ‘k’ alese inițial.

Este timpul să devenim un expert în învățarea automată pentru a profita de noile oportunități care vă apar. Acest lucru ne aduce la sfârșitul acestui „ Învățarea automată cu R ”Blog. Sper că acest blog a fost informativ fructuos.

Edureka are un special specializat care vă ajută să obțineți expertiză în algoritmi de învățare automată, cum ar fi K-Means Clustering, arbori de decizie, Random Forest, Naive Bayes. Veți învăța și conceptele de statistică, serii temporale, extragere de text și o introducere în învățarea profundă. Noile loturi pentru acest curs încep în curând !!