Pag-aaral ng Makina sa R ​​para sa Mga Nagsisimula na may Halimbawa



Ang blog na ito sa pag-aaral ng makina na may R ay tumutulong sa iyo na malaman ang pangunahing mga konsepto ng Pag-aaral ng Makina at ipatupad ang iba't ibang mga algorithm ng pag-aaral ng machine sa R.

Pag-aaral ng Makina kasama ang R

Ang pag-aaral ng makina ang kasalukuyan at hinaharap! Mula sa rekomendasyong engine ng Netflix hanggang sa kotse na nagmamaneho sa sarili ng Google, lahat ng ito ay natututo ng makina. Ang blog na ito sa Machine Learning na may R ay tumutulong sa iyo na maunawaan ang pangunahing mga konsepto ng pag-aaral ng makina na sinusundan ng iba't ibang mga algorithm ng pag-aaral ng machine at pagpapatupad ng mga algorithm ng pag-aaral ng machine sa R.

Ang blog na ito sa 'Machine Learning with R' ay binubuo ng mga seksyong ito:





Pag-aaral ng Makina gamit ang R | Edureka

istraktura ng data ng pila sa java

Pag-unawa sa Pag-aaral ng Makina

Fish1- Pag-aaral ng Makina kasama ang R - Edureka



Paano mo malalaman na ang lahat ng mga iyon ay mga isda?



Bilang isang bata, maaari kang magkaroon ng isang larawan ng isang isda at sasabihin sa iyo ng iyong mga guro sa kindergarten o mga magulang na ito ay isang isda at mayroon itong ilang mga tukoy na tampok na nauugnay dito tulad ng mayroon itong mga palikpik, hasang, isang pares ng mata, buntot at iba pa. Ngayon, tuwing nakakasalubong ang iyong utak ng isang imahe kasama ang mga hanay ng mga tampok, awtomatiko nitong nirerehistro ito bilang isang isda dahil mayroon ang iyong utak natutunan na ito ay isang isda.

Ganyan ang paggana ng utak natin ngunit paano ang isang makina? Kung ang parehong imahe ay pinakain sa isang makina, paano ito makikilala ng machine na isang isda?

Dito na si M achine Pag-aaral papasok. Patuloy kaming magpapakain ng mga imahe ng isang isda sa isang computer na may tag na 'isda' hanggang sa natututunan ng makina ang lahat ng mga tampok na nauugnay kasama ang a isda

Kapag natutunan ng makina ang lahat ng mga tampok na nauugnay sa isang isda, papakainin namin ito ng bagong data upang matukoy kung gaano ito natutunan.

Sa ibang salita, Raw Data / Pagsasanay ng Data ay ibinibigay sa makina, kaya't ito natututo lahat ng mga tampok na nauugnay sa Data ng Pagsasanay. Minsan, tapos na ang pag-aaral, ibinigay na Bagong Data / Data ng Pagsubok upang matukoy kung gaano kahusay natutunan ang makina.

Sumulong tayo sa Machine Learning na ito na may R blog at maunawaan ang tungkol sa mga uri ng Pag-aaral ng Makina.

Mga uri ng Pag-aaral ng Makina

  • Pinamamahalaang Pag-aaral:

Natututo ang pinangangasiwaang algorithm ng Pag-aaral mula sa isang kilalang data-set (Pagsasanay ng Data) na mayroong mga label upang mahulaan.

Ang pag-urong at Pag-uuri ay ilang mga halimbawa ng Pinamahalaang Pag-aaral.

# Pag-uuri:

Tinutukoy ng pag-uuri kung aling hanay ng mga kategorya ang nagmamay-ari ng isang bagong pagmamasid ie isang pag-uuri ng algorithm na natututunan ang lahat ng mga tampok at label ng data ng pagsasanay at kapag binigyan ito ng bagong data, kailangang magtalaga ng mga label sa mga bagong obserbasyon depende sa natutunan nito mula sa data ng pagsasanay.

Para sa halimbawang ito, kung ang unang pagmamasid ay binigyan ng label na 'Lalaki' kung gayon ito ay wastong naiuri ngunit kung bibigyan ito ng label na 'Babae', ang pag-uuri ay mali. Katulad din para sa pangalawang pagmamasid, kung ang label na ibinigay ay 'Babae', tama itong naiuri, kung hindi man ang pag-uuri ay mali.

#Regression:

Ang pagbabalik ay isang pinangangasiwaang algorithm sa pag-aaral na makakatulong sa pagtukoy kung paano nakakaimpluwensya ang isang variable sa isa pang variable.

Dito, ang 'pamumuhay_area' ay ang independiyenteng variable at ang 'presyo' ay ang umaasa na variable ibig sabihin tinutukoy namin kung paano nag-iiba ang 'presyo' na patungkol sa 'pamumuhay_area'.

  • Hindi suportadong Pag-aaral:

Ang hindi sinusuportahang algorithm sa pag-aaral ay kumukuha ng mga hinuha mula sa data na walang mga label.

Pag-cluster ay isang halimbawa ng hindi suportadong pag-aaral. Ang 'K-ibig sabihin', 'Hierarchical', 'Fuzzy C-Means' ay ilang mga halimbawa ng clustering algorithm.

Sa halimbawang ito, ang hanay ng mga obserbasyon ay nahahati sa dalawang kumpol. Ang clustering ay ginagawa batay sa pagkakapareho ng mga obserbasyon. Mayroong isang mataas na pagkakatulad ng intra-cluster at mababang pagkakapareho ng cl-cluster ibig sabihin mayroong isang napakataas na pagkakatulad sa pagitan ng lahat ng mga bus ngunit mababa ang pagkakatulad sa pagitan ng mga bus at kotse.

  • Pagpapalakas ng Pag-aaral:

Ang Reinforcement Learning ay isang uri ng algorithm ng pag-aaral ng makina kung saan ang makina / ahente sa isang kapaligiran natututo ng mainam na pag-uugali upang ma-maximize ang pagganap nito. Kailangan ng simpleng feedback na gantimpala para malaman ng ahente ang pag-uugali nito, ito ay kilala bilang signal ng pampalakas .

Kunin natin pacman Halimbawa. Hangga't patuloy na kumakain ng pagkain si pacman, kumikita ito ng mga puntos ngunit kapag nag-crash laban sa isang halimaw ay nawawalan ito ng buhay. Sa gayon nalalaman ng pacman na kailangan nitong kumain ng mas maraming pagkain at maiwasan ang mga halimawupang mapabuti ang pagganap nito.

Pagpapatupad ng Pag-aaral ng Makina sa R:

Linear Regression:

Makikipagtulungan kami sa mga hanay ng data ng mga diamante upang magpatupad ng linear algorithm ng pag-urong:

Paglalarawan ng hanay ng data:

Bago magtayo ng anumang modelo sa data, dapat naming hatiin ang data sa mga hanay ng 'tren' at 'pagsubok'. Itatayo ang modelo sa hanay ng 'tren' at ang katumpakan nito ay susuriin sa hanay ng 'pagsubok'.

Kailangan naming i-load ang package na 'caTools' upang hatiin ang data sa dalawang hanay.

silid-aklatan (caTools)

Ang package na 'caTools' ay nagbibigay ng isang function na 'sample.split ()' na tumutulong sa paghahati ng data.

sample.split (diamante $ presyo, SplitRatio = 0.65) -> split_index

65% ng mga obserbasyon mula sa haligi ng presyo ay naitalaga ang 'totoong' label at ang natitirang 35% ay naitalaga ng 'maling' label.

subset (brilyante, split_index == T) -> tren subset (brilyante, split_index == F) -> pagsubok

Ang lahat ng mga obserbasyon na mayroong 'totoong' label ay naimbak sa ' sanayin ”object at ang mga obserbasyong mayroong 'maling' label ay naitalaga sa hanay ng 'pagsubok'.

Ngayon na tapos na ang paghahati at mayroon kaming mga set ng 'tren' at 'pagsubok', oras na upang buuin ang modelo ng linear regression sa hanay ng pagsasanay.

Gagamitin namin ang pagpapaandar na 'lm ()' upang buuin ang modelo ng linear regression sa data ng 'tren'. Tinutukoy namin ang presyo ng mga brilyante na may paggalang sa lahat ng iba pang mga variable ng set ng data. Ang naka-built na modelo ay nakaimbak sa object na 'mod_regress'.

lm (presyo ~., data = tren) -> mod_regress

Ngayon, na binuo namin ang modelo, kailangan naming gumawa ng mga hula sa hanay ng 'pagsubok'. Ginagamit ang pagpapaandar na 'hula ()' upang makakuha ng mga hula. Tumatagal ito ng dalawang argumento: ang built model at ang set ng pagsubok Ang hinulaang mga resulta ay nakaimbak sa object na 'resulta_regress'.

hulaan (mod_regress, test) -> resulta_regress

Taliin natin ang aktwal na mga halaga ng presyo mula sa hanay ng data na 'pagsubok' at ang hinulaang mga halaga sa isang solong-hanay ng data gamit ang pag-andar ng 'cbind ()'. Ang bagong data-frame ay nakaimbak sa 'Final_Data'

cbind (Aktwal = pagsubok na $ presyo, Hula = resulta_regress) -> Final_Data 
as.data.frame (Final_Data) -> Final_Data

Isang sulyap sa 'Final_Data' na binubuo ng mga aktwal na halaga at hinulaang halaga:

Hanapin natin ang error sa pamamagitan ng pagbawas sa mga hinulaang halaga mula sa mga aktwal na halaga at idagdag ang error na ito bilang isang bagong haligi sa 'Final_Data':

(Final_Data $ Aktwal- Final_Data $ Hula) -> error
cbind (Final_Data, error) -> Final_Data

Isang sulyap sa 'Final_Data' na naglalaman din ng error sa hula:

Ngayon, magpapatuloy kami at kalkulahin ang ' Root Mean Square Error ” na nagbibigay ng isang pinagsamang error para sa lahat ng mga hula

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

Magpatuloy, bumuo tayo ng isa pang modelo, upang maihambing natin ang katumpakan ng parehong mga modelong ito at matukoy kung alin ang mas mahusay.

Bumubuo kami ng isang bagong modelo ng linear regression sa itinakdang 'tren' ngunit sa oras na ito, ihuhulog namin ang mga haligi na 'x' at 'y' mula sa mga independiyenteng variable na ang 'presyo' ng mga diamante ay natutukoy ng lahat ng mga haligi maliban sa 'x' at 'y'.

Ang nabuong modelo ay nakaimbak sa “mod_regress2”:

lm (presyo ~.-y-z, data = tren) -> mod_regress2

Ang hinulaang mga resulta ay nakaimbak sa 'resulta_regress2'

hulaan (mod_regress2, pagsubok) -> resulta_regress2

Ang mga halagang aktwal at Hulaang hinulaan ay pinagsama at nakaimbak sa “Final_Data2”:

machine algorithm na natututo sa r
cbind (Aktwal = pagsubok na $ presyo, Hula = resulta_regress2) -> Final_Data2 
as.data.frame (Final_Data2) -> Final_Data2

Idagdag din natin ang error sa hula sa 'Final_Data2'

(Final_Data2 $ Aktwal- Final_Data2 $ Hula) -> error2
cbind (Final_Data2, error2) -> Final_Data2

Isang sulyap sa 'Final_Data2':

Paghahanap ng Root Mean Square Error upang makuha ang pinagsamang error:

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

Nakita namin na ang 'rmse2' ay medyo mas mababa sa 'rmse1' at samakatuwid ang pangalawang modelo ay mas mahusay na bahagyang kaysa sa unang modelo.

ipatupad ang priyoridad na pila c ++

Pag-uuri:

Makikipagtulungan kami sa itinakdang data na 'car_purchase' upang maipatupad recursive na pagkahati na isang algorithm sa pag-uuri.

Hatiin natin ang data sa mga hanay ng 'tren' at 'pagsubok' gamit ang pag-andar ng 'sample.split ()' mula sa package na 'caTools'.

silid-aklatan (caTools)

65% ng mga obserbasyon mula sa hanay na 'Nabili' ay bibigyan ng mga 'TUNAY' na mga label at ang natitira ay bibigyan ng mga 'MALI' na label.

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

Ang lahat ng mga obserbasyong iyon na mayroong 'TUNAY' na label ay maiimbak sa data ng 'tren' at ang mga obserbasyong mayroong 'FALSE' na label ay itatalaga sa data ng 'pagsubok'.

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

Oras upang mabuo ang Recursive Partitioning algorithm:

Magsisimula kami sa pamamagitan ng paglo-load ng 'rpart' na pakete:

silid-aklatan (rpart)

Ang haligi na 'Nabili' ay magiging umaasa na variable at lahat ng iba pang mga haligi ay ang mga independiyenteng variable na ibig sabihin tinutukoy namin kung ang tao ay bumili ng kotse o hindi patungkol sa lahat ng iba pang mga haligi. Ang modelo ay itinayo sa 'train_data' at ang resulta ay nakaimbak sa 'mod1'.

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

Balangkasin natin ang resulta:

balangkas (mod1, margin = 0.1) teksto (mod1, maganda = T, cex = 0.8)

Ngayon, magpatuloy tayo at hulaan ang mga resulta sa 'test_data'. Ibinibigay namin ang built na modelo ng rpart na 'mod1' bilang unang argument, itinakda ng pagsubok ang 'test_data' bilang pangalawang argumento at uri ng hula bilang 'klase' para sa pangatlong argument. Ang resulta ay nakaimbak sa object na 'resulta1'.

hulaan (mod1, test_data, type = 'class') -> resulta1

Suriin natin ang kawastuhan ng modelo gamit ang pag-andar na 'pagkalitoMatrix ()' mula sa caret package.

silid-aklatan (caret) pagkalitoMatrix (talahanayan (test_data $ Nabili, resulta1))

Sinasabi sa atin ng matrix ng pagkalito na mula sa 90 mga obserbasyon kung saan hindi binili ng tao ang kotse, 79 na obserbasyon ang wastong naiuri bilang 'Hindi' at 11 ay maling nauri bilang 'Oo'. Katulad nito, mula sa 50 mga obserbasyon kung saan talagang binili ng tao ang kotse, 47 ay nauri nang tama bilang 'YES' at 3 ang maling nauri bilang 'HINDI'.

Mahahanap natin ang katumpakan ng modelo sa pamamagitan ng paghahati ng mga tamang hula sa kabuuang mga hula hal. (79 + 47) / (79 + 47 + 11 + 3).

K-Means Clustering:

Makikipagtulungan kami sa hanay ng data na 'iris' upang magpatupad ng k-ibig sabihin ng clustering:

Tanggalin natin ang haligi na 'Mga Uri' at lumikha ng isang bagong hanay ng data na sumasama lamang sa unang apat na haligi mula sa hanay ng data na 'iris'.

iris [1: 4] -> iris_k

Gawin natin ang bilang ng mga kumpol upang maging 3. Ang 'Kmeans ()' na function ay tumatagal ng input data at ang bilang ng mga kumpol na kung saan ang data ay mai-clustered. Ang syntax ay: kmeans (data, k) kung saan ang k ay ang bilang ng mga cluster center.

kmeans (iris_k, 3) -> k1

Sinusuri ang clustering:

str (k1)

Ang pag-andar ng str () ay nagbibigay ng istraktura ng mga kmeans na may kasamang iba't ibang mga parameter tulad ng mga inins, betweens, atbp, pag-aaral kung saan maaari mong malaman ang pagganap ng mga kmeans.

betweenss: Sa pagitan ng kabuuan ng mga parisukat ibig sabihin Intracluster pagkakapareho

withinss: Sa loob ng kabuuan ng parisukat ie Intercluster pagkakapareho

totwithinss: Kabuuan ng lahat ng mga withinss ng lahat ng mga kumpol ibig sabihin. Kabuuang pagkakapareho ng intra-cluster

Ang isang mahusay na clustering ay magkakaroon ng isang mas mababang halaga ng 'tot.withinss' at mas mataas na halaga ng 'betweenss' na nakasalalay sa bilang ng mga kumpol na 'k' na napili nang una.

Ang oras ay hinog na upang maging isang dalubhasa sa Pag-aaral ng Machine upang samantalahin ang mga bagong pagkakataon na darating sa iyo. Dadalhin tayo nito sa katapusan ng ' Pag-aaral ng Makina kasama ang R ' Blog. Inaasahan kong kapaki-pakinabang ang blog na ito.

Ang Edureka ay may isang espesyal na na-curate na tumutulong sa iyo na makakuha ng kadalubhasaan sa Mga Algorithm ng Pag-aaral ng Machine tulad ng K-Means Clustering, Mga Puno ng Desisyon, Random Forest, Naive Bayes. Malalaman mo ang mga konsepto ng Statistics, Time Series, Text Mining at isang pagpapakilala din sa Deep Learning. Ang mga bagong batch para sa kursong ito ay nagsisimula na !!