Aprenentatge automàtic en R per a principiants amb exemple

Aquest bloc sobre aprenentatge automàtic amb R us ajuda a aprendre conceptes bàsics d’aprenentatge automàtic i a implementar diferents algoritmes d’aprenentatge automàtic amb R.

Aprenentatge automàtic amb R

L’aprenentatge automàtic és el present i el futur. Des del motor de recomanacions de Netflix fins al cotxe autònom de Google, tot és aprenentatge automàtic. Aquest blog sobre aprenentatge automàtic amb R us ajuda a entendre els conceptes bàsics d’aprenentatge automàtic seguits de diferents algoritmes d’aprenentatge automàtic i implementar aquests algoritmes d’aprenentatge automàtic amb R.

Aquest bloc sobre 'Aprenentatge automàtic amb R' inclou aquestes seccions:





Aprenentatge automàtic amb R | Edureka

Comprensió de l’aprenentatge automàtic

Fish1- Aprenentatge automàtic amb R - Edureka



Com se sap que tots són peixos?



Quan era petit, és possible que us haguéssiu trobat amb una imatge d’un peix i els vostres pares o mestres d’escola bressol us haguessin dit que es tracta d’un peix i que té algunes característiques específiques associades, com ara que té aletes, branquies, ulls, una cua, etc. Ara, cada vegada que el cervell troba una imatge amb aquestes funcions, la registra automàticament com a peix perquè el cervell té après que és un peix.

Així funciona el nostre cervell, però, què passa amb una màquina? Si la mateixa imatge s’alimenta a una màquina, com la identificarà la màquina per ser un peix?

Aquí és on M Achine Learning entra. Continuarem alimentant les imatges d’un peix a un ordinador amb l’etiqueta 'peix' fins al machine aprèn totes les funcions associades amb una peix.

Un cop la màquina conegui totes les característiques associades a un peix, li proporcionarem noves dades per determinar quant ha après.

En altres paraules, Dades brutes / dades de formació es dóna a la màquina, de manera que aquesta aprèn totes les funcions associades a Dades de formació. Un cop acabat l’aprenentatge, es dóna Noves dades / dades de prova per determinar el grau d’aprenentatge de la màquina.

Anem endavant en aquest bloc d’aprenentatge automàtic amb R i entenem els tipus d’aprenentatge automàtic.

Tipus d’aprenentatge automàtic

  • Aprenentatge supervisat:

L’algorisme d’aprenentatge supervisat aprèn d’un conjunt de dades conegut (Training Data) que té etiquetes per fer prediccions.

La regressió i la classificació són alguns exemples d’aprenentatge supervisat.

# Classificació:

La classificació determina a quin conjunt de categories pertany una nova observació, és a dir, un algorisme de classificació aprèn totes les característiques i etiquetes de les dades de formació i, quan se li donen noves dades, ha d'assignar etiquetes a les noves observacions en funció del que hagi après a partir de les dades de formació.

Per a aquest exemple, si la primera observació rep l'etiqueta 'Home', es classifica correctament, però si rep l'etiqueta 'Dona', la classificació és incorrecta. De la mateixa manera, per a la segona observació, si l'etiqueta que es dóna és 'Dona', es classifica correctament, en cas contrari la classificació és incorrecta.

#Regressió:

La regressió és un algorisme d'aprenentatge supervisat que ajuda a determinar com influeix una variable en una altra variable.

Aquí, 'living_area' és la variable independent i 'price' és la variable dependent, és a dir, estem determinant com varia el 'preu' respecte a 'living_area'.

  • Aprenentatge sense supervisió:

L’algorisme d’aprenentatge sense supervisió extreu inferències a partir de dades que no tenen etiquetes.

Agrupació és un exemple d’aprenentatge sense supervisió. 'K-significa', 'jerarquitzat', 'Fuzzy C-Means' són alguns exemples d'algorismes de concentració.

En aquest exemple, el conjunt d'observacions es divideix en dos clústers. L’agrupació es fa sobre la base de la similitud entre les observacions. Hi ha una gran similitud intra-clúster i una baixa similitud entre clústers, és a dir, hi ha una similitud molt alta entre tots els autobusos, però baixa similitud entre els autobusos i els cotxes.

  • Aprenentatge de reforç:

L’aprenentatge de reforç és un tipus d’algoritme d’aprenentatge automàtic on el màquina / agent en un entorn aprèn un comportament ideal per maximitzar el seu rendiment. Es necessita una retroalimentació de recompenses senzilla perquè l'agent pugui conèixer el seu comportament, això es coneix com a senyal de reforç .

Prenem pacman per exemple. Mentre Pacman segueix menjant menjar, guanya punts però quan s’estavella contra un monstre perd la vida. Així, Pacman s’assabenta que necessita menjar més menjar i evitar monstresper millorar el seu rendiment.

Implementació de l'aprenentatge automàtic amb R:

Regressió lineal:

Treballarem amb el conjunt de dades de diamants per implementar l'algorisme de regressió lineal:

Descripció del conjunt de dades:

Abans de construir qualsevol model sobre les dades, se suposa que hem de dividir les dades en conjunts de 'tren' i 'prova'. El model es construirà sobre el conjunt 'tren' i la seva precisió es comprovarà sobre el conjunt 'prova'.

Hem de carregar el paquet 'caTools' per dividir les dades en dos conjunts.

biblioteca (caTools)

El paquet 'caTools' proporciona una funció 'sample.split ()' que ajuda a dividir les dades.

sample.split (diamants $ price, SplitRatio = 0,65) -> split_index

Al 65% de les observacions de la columna de preus se'ls ha assignat l'etiqueta 'veritable' i al 35% restant se'ls ha assignat l'etiqueta 'falsa'.

subconjunt (diamants, split_index == T) -> tren subconjunt (diamants, split_index == F) -> prova

Totes les observacions que tenen l’etiqueta “veritable” s’han emmagatzemat a tren ”objecte i aquelles observacions amb etiqueta 'falsa' s'han assignat al conjunt 'prova'.

Ara que la divisió està feta i tenim els nostres conjunts de 'tren' i 'prova', és hora de construir el model de regressió lineal sobre el conjunt d'entrenament.

Utilitzarem la funció 'lm ()' per construir el model de regressió lineal sobre les dades 'tren'. Estem determinant el preu dels diamants respecte a la resta de variables del conjunt de dades. El model construït s'emmagatzema a l'objecte 'mod_regress'.

lm (preu ~., dades = tren) -> mod_regress

Ara, ja que hem construït el model, hem de fer prediccions sobre el conjunt de 'proves'. La funció 'predict ()' s'utilitza per obtenir prediccions. Es necessiten dos arguments: el model construït i la conjunt de proves. Els resultats previstos s’emmagatzemen a l’objecte “result_regress”.

predir (mod_regress, test) -> result_regress

Vinculem els valors de preu reals del conjunt de dades 'prova' i els valors predits en un únic conjunt de dades mitjançant la funció 'cbind ()'. El nou marc de dades s’emmagatzema a “Final_Data”

cbind (Actual = preu de prova $, predit = resultat_regress) -> Dades_finals 
as.data.frame (Final_Data) -> Final_Data

Un cop d'ull a la 'Dada_Data_Final', que inclou valors reals i valors predits:

com sortir a Java

Cerquem l'error restant els valors predits dels valors reals i afegim aquest error com a nova columna a 'Dades_dades finals':

(Final_Data $ Actual- Final_Data $ Predected) -> error
cbind (Dades_Final, error) -> Dades_Final

Un cop d'ull a la 'Dada_Data_Final', que també inclou l'error de predicció:

Ara seguirem endavant i calcularem ' Error quadrat mitjà d'arrel ' cosa que dóna un error agregat per a totes les prediccions

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

En endavant, construïm un altre model, de manera que puguem comparar la precisió d’aquests models i determinar quin és el millor.

Construirem un nou model de regressió lineal al conjunt “tren”, però aquesta vegada deixarem caure les columnes 'x' i 'y' de les variables independents, és a dir, el 'preu' dels diamants està determinat per tots els columnes excepte 'x' i 'y'.

El model construït s'emmagatzema a 'mod_regress2':

lm (preu ~.-y-z, dades = tren) -> mod_regress2

Els resultats previstos s’emmagatzemen a “result_regress2”

predir (mod_regress2, test) -> result_regress2

Els valors reals i previstos es combinen i s'emmagatzemen a 'Final_Data2':

cbind (Actual = preu de prova $, Predicció = resultat_regress2) -> Dades_de_final2 
as.data.frame (Final_Data2) -> Final_Data2

Afegim també l'error de predicció a 'Final_Data2'

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

Un cop d'ull a 'Dades_Definides2':

Trobant un error quadrat mitjà per obtenir l’error global:

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

Veiem que 'rmse2' és marginalment inferior a 'rmse1' i, per tant, el segon model és marginalment millor que el primer model.

Classificació:

Treballarem amb el conjunt de dades 'car_purchase' per implementar particionament recursiu que és un algorisme de classificació.

Dividim les dades en conjunts 'tren' i 'prova' mitjançant la funció 'sample.split ()' del paquet 'caTools'.

biblioteca (caTools)

Al 65% de les observacions de la columna 'Comprat' se'ls assignaran etiquetes 'TRUE' i a la resta se'ls assignaran etiquetes 'FALS'.

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

Totes aquelles observacions que tinguin l'etiqueta 'TRUE' s'emmagatzemaran en dades de 'tren' i les observacions que tinguin l'etiqueta 'FALS' s'assignaran a les dades de 'prova'.

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

És hora de construir l'algorisme de particionament recursiu:

Començarem carregant el paquet 'rpart':

biblioteca (rpart)

La columna 'Comprada' serà la variable dependent i la resta de columnes són les variables independents, és a dir, estem determinant si la persona ha comprat el cotxe o no respecte a la resta de columnes. El model es basa en 'train_data' i el resultat s'emmagatzema en 'mod1'.

rpart (Compra ~., dades = dades_del tren) -> mod1

Representem el resultat:

gràfic (mod1, marge = 0,1) text (mod1, bonic = T, cex = 0,8)

Ara anem endavant i predimem els resultats a 'test_data'. Estem donant el model rpart incorporat 'mod1' com a primer argument, la prova defineix 'test_data' com a segon argument i el tipus de predicció com a 'classe' per al tercer argument. El resultat s’emmagatzema a l’objecte ‘result1’.

predict (mod1, data_prova, type = 'class') -> resultat1

Avaluem la precisió del model mitjançant la funció 'confusionMatrix ()' del paquet de cursors.

biblioteca (cursor) confusionMatrix (taula (prova_dades $ comprat, resultat1))

La matriu de confusió ens indica que de les 90 observacions en què la persona no va comprar el cotxe, 79 observacions han estat correctament classificades com a 'No' i 11 s'han classificat erròniament com a 'SÍ'. De la mateixa manera, de les 50 observacions en què la persona va comprar el cotxe, 47 han estat classificades correctament com a 'SÍ' i 3 s'han classificat erròniament com a 'NO'.

Podem trobar la precisió del model dividint les prediccions correctes amb prediccions totals, és a dir (79 + 47) / (79 + 47 + 11 + 3).

Agrupació de K-Means:

Treballarem amb el conjunt de dades 'iris' per implementar l'agrupació de k-means:

Eliminem la columna 'Espècies' i creeu un conjunt de dades nou que inclogui només les primeres quatre columnes del conjunt de dades 'iris'.

Sant Martí [1: 4] -> iris_k

Prenguem el nombre de clústers a 3. La funció 'Kmeans ()' pren les dades d'entrada i el nombre de clústers en què es volen agrupar les dades. La sintaxi és: kmeans (dades, k) on k és el nombre de centres de clústers.

kmeans (iris_k, 3) -> k1

Analitzant el clúster:

str (k1)

La funció str () proporciona l'estructura dels kmeans que inclou diversos paràmetres com withinss, betweenss, etc, analitzant els quals podeu esbrinar el rendiment dels kmeans.

entre una suma de quadrats, és a dir, una similitud intraclúster

withinss: dins de la suma del quadrat, és a dir, semblança entre grups

totwithinss: suma de tots els withins de tots els clústers, és a dir, semblança total intra-clúster

Una bona agrupació tindrà un valor inferior de 'tot.withinss' i un valor més alt de 'betweenss', que depèn del nombre de clústers 'k' triats inicialment.

És hora de convertir-se en un expert en aprenentatge automàtic per aprofitar les noves oportunitats que se us presenten. Això ens porta al final d’aquest “ Aprenentatge automàtic amb R ”Bloc. Espero que aquest bloc hagi estat informatiu i fructífer.

Edureka compta amb un programa especialment curat que us ajuda a adquirir experiència en algorismes d’aprenentatge automàtic com ara K-Means Clustering, Decision Trees, Random Forest, Naive Bayes. També aprendreu els conceptes d’Estadístiques, sèries temporals, mineria de text i una introducció a l’aprenentatge profund. Ben aviat començaran les noves lots d’aquest curs !!