Gépi tanulás R-ben kezdőknek példával

Ez az R gépi tanulásról szóló blog segít megtanulni a gépi tanulás alapfogalmait, és különböző gépi tanulási algoritmusokat valósíthat meg R-vel.

Gépi tanulás R-vel

A gépi tanulás a jelen és a jövő! A Netflix ajánló motorjától kezdve a Google önvezető autójáig mindez gépi tanulás. Ez a gépi tanulás R-vel foglalkozó blog segít megérteni a gépi tanulás alapfogalmait, amelyeket a különböző gépi tanulási algoritmusok követnek, és ezeknek a gépi tanulási algoritmusoknak az R-vel történő megvalósítását.



Ez a „Gépi tanulás R-vel” című blog a következő részeket tartalmazza:



Gépi tanulás R-vel Edureka

A gépi tanulás megértése

Fish1- Gépi tanulás R-vel - Edureka



Honnan tudja, hogy ezek mind halak?



Gyerekként találkozhatott egy hal képével, és az óvodapedagógusai vagy szülei elmondták volna, hogy ez egy hal, és bizonyos sajátosságai vannak, mint például uszonyok, kopoltyúk, pár szem, farok és így tovább. Most, amikor az agyad egy olyan képre bukkan, amely tartalmazza ezeket a funkciókat, automatikusan halként regisztrálja, mert az agyad rendelkezik tanult hogy ez egy hal.

Az agyunk így működik, de mi van a géppel? Ha ugyanazt a képet adják egy gépnek, hogyan fogja a gép azonosítani, hogy hal?

Itt M achine Tanulás bejön. A halak képeit számítógépre továbbítjuk, a „hal” címkével, amíg a gép megtanulja az összes kapcsolódó funkciót val,-vel hal.

Amint a gép megtanulja a halakhoz tartozó összes funkciót, új adatokkal látjuk el, hogy meghatározzuk, mennyit tanult.

java parancssori argumentumok

Más szavakkal, Nyers adatok / képzési adatok adják a gépnek, hogy az tanul a Képzési adatok. Miután megtörtént a tanulás, megadják Új adatok / tesztadatok annak megállapításához, hogy a gép milyen jól tanult.

Haladjunk tovább ebben a Machine Learning with R blogban, és ismerjük meg a Machine Learning típusait.

A gépi tanulás típusai

  • Felügyelt tanulás:

A felügyelt tanulási algoritmus egy ismert adatkészletből (képzési adatok) tanul, amelynek címkéi vannak az előrejelzéshez.

A regresszió és az osztályozás néhány példa a felügyelt tanulásra.

#Osztályozás:

Az osztályozás meghatározza, hogy az új megfigyelés mely kategóriákba tartozik, azaz egy osztályozási algoritmus megtanulja az edzésadatok összes jellemzőjét és címkéjét, és amikor új adatokat kapnak hozzá, címkéket kell rendelnie az új megfigyelésekhez, attól függően, hogy mit tanult a képzési adatokból.

Ebben a példában, ha az első megfigyelés a „Man” címkét kapja, akkor azt helyesen osztályozzák, de ha a „Woman” címkét kapják, akkor az osztályozás helytelen. Hasonlóan a második megfigyeléshez, ha a megadott címke „Nő”, akkor helyesen van besorolva, különben a besorolás helytelen.

#Regresszió:

A regresszió egy felügyelt tanulási algoritmus, amely segít meghatározni, hogy az egyik változó hogyan befolyásolja a másik változót.

Itt az „élő_terület” a független változó, az „ár” pedig a függő változó, azaz meghatározzuk, hogyan változik az „ár” a „megélhetési_területhez” képest.

  • Felügyelet nélküli tanulás:

A felügyelet nélküli tanulási algoritmus olyan adatokból von le következtetéseket, amelyek nem rendelkeznek címkékkel.

Csoportosítás a felügyelet nélküli tanulás példája. A „K-jelentés”, „Hierarchikus”, „Fuzzy C-eszközök” néhány példa a fürtözési algoritmusokra.

Ebben a példában a megfigyelések halmaza két csoportra oszlik. A klaszterezés a megfigyelések közötti hasonlóság alapján történik. Magas a klaszteren belüli és alacsony klaszterek közötti hasonlóság, vagyis nagyon nagy hasonlóság van az összes busz között, de alacsony a buszok és az autók között.

  • Megerősítő tanulás:

A megerősítő tanulás egy olyan gépi tanulási algoritmus, ahol a gép / ügynök egy an környezet megtanulja az ideális viselkedést annak maximalizálása érdekében. Egyszerű jutalom-visszajelzés szükséges ahhoz, hogy az ügynök megtanulja viselkedését, ez az úgynevezett megerősítő jel .

Vessünk pacman például. Amíg pacman folyamatosan ételt eszik, addig pontokat keres, de amikor egy szörnynek ütközik, elveszíti az életét. Így Pacman megtudja, hogy több ételt kell fogyasztania és kerülnie kell a szörnyeketteljesítményének javítása érdekében.

Gépi tanulás megvalósítása R-vel:

Lineáris regresszió:

A gyémánt adatkészlettel a lineáris regressziós algoritmus megvalósításán fogunk dolgozni:

Az adatkészlet leírása:

Mielőtt bármilyen modellt felépítenénk az adatokra, feltételezhetően fel kell osztanunk az adatokat „vonat” és „teszt” halmazokra. A modell a „vonat” készletre épül, és pontosságát a „teszt” készleten ellenőrizzük.

Be kell töltenünk a „caTools” csomagot, hogy az adatokat két halmazra oszthassuk.

könyvtár (caTools)

A „caTools” csomag egy „sample.split ()” funkciót biztosít, amely segít az adatok felosztásában.

sample.split (gyémántok $ ár, SplitRatio = 0,65) -> split_index

Az ár oszlopból származó megfigyelések 65% -ának „igaz”, a többi 35% -ának pedig „hamis” címkét adták.

részhalmaz (gyémántok, split_index == T) -> vonat részhalmaz (gyémántok, osztott_index == F) -> teszt

Az összes „igaz” címkével ellátott megfigyelést a vonat ”tárgy és azokat a „hamis” jelöléssel ellátott megfigyeléseket a „teszt” halmazhoz rendelték.

Most, hogy a felosztás megtörtént, és megvannak a „vonat” és a „teszt” készleteink, itt az ideje, hogy felépítsük a lineáris regressziós modellt az edzéskészletre.

Az „lm ()” függvény segítségével felépítjük a lineáris regressziós modellt a „vonat” adatokra. Meghatározzuk a ár a gyémántok az adatkészlet összes többi változója szempontjából. A beépített modell a „mod_regress” objektumban van tárolva.

lm (ár ~., adat = vonat) -> mod_regress

Most, hogy elkészítettük a modellt, meg kell jósolnunk a „teszt” halmazra. A „prediktív ()” függvény az előrejelzések megszerzésére szolgál. Két érvre van szükség: a épített modell és a tesztkészlet. A megjósolt eredményeket az „eredmény_regresszió” objektum tárolja.

megjósolni (mod_regress, teszt) -> eredmény_regress

A „teszt” adatsor tényleges árértékeit és a megjósolt értékeket kössük egyetlen adathalmazba a „cbind ()” függvény segítségével. Az új adatkeretet a „Final_Data” tárolja

cbind (Tényleges = teszt $ ár, Jósolt = eredmény_regresszió) -> Végleges_adatok 
as.data.frame (Final_Data) -> Final_Data

Pillantás a „Final_Data” -ra, amely a tényleges és a becsült értékeket tartalmazza:

Keressük meg a hibát úgy, hogy kivonjuk a megjósolt értékeket a tényleges értékekből, és adjuk hozzá ezt a hibát új oszlopként a „Final_Data” mezőbe:

(Final_Data $ Actual- Final_Data $ Predicted) -> hiba
cbind (Final_Data, hiba) -> Final_Data

Pillantás a „Final_Data” -ra, amely az előrejelzés hibáját is tartalmazza:

Most folytatjuk, és kiszámoljuk a Root Mean Square Error ” amely összesített hibát ad az összes jóslathoz

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

Folytatva készítsünk egy másik modellt, hogy összehasonlíthassuk mindkét modell pontosságát és meghatározzuk, melyik a jobb.

Új lineáris regressziós modellt építünk a „vonat” halmazra, de ezúttal az „x” és „y” oszlopokat dobjuk ki a független változókból, vagyis a gyémántok „árát” az összes oszlopok, kivéve: „x” és „y”.

A beépített modell a „mod_regress2” könyvtárban van tárolva:

lm (ár ~.-y-z, adat = vonat) -> mod_regress2

Az előrejelzett eredményeket az „eredmény_regresszió2” tárolja

megjósolni (mod_regress2, teszt) -> result_regress2

A tényleges és az előrejelzett értékeket egyesítik és tárolják a „Final_Data2” mezőben:

cbind (Tényleges = teszt $ ár, Jósolt = eredmény_regresszió2) -> Végleges_adatok2 
as.data.frame (Final_Data2) -> Final_Data2

Adjuk hozzá az előrejelzés hibáját a „Final_Data2” kifejezéshez is

(Final_Data2 $ Actual- Final_Data2 $ Predicted) -> hiba2
cbind (Final_Data2, error2) -> Final_Data2

Pillantás a „Final_Data2” -re:

A középérték négyzethibájának megkeresése az összesített hiba megszerzéséhez:

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

hogyan lehet deklarálni egy példányváltozót a java-ban

Látjuk, hogy az „rmse2” valamivel kisebb, mint az „rmse1”, ezért a második modell kissé jobb, mint az első modell.

Osztályozás:

Dolgozni fogunk a „car_purchase” adatkészlettel a megvalósítás érdekében rekurzív particionálás amely egy osztályozási algoritmus.

Osszuk fel az adatokat „vonat” és „teszt” halmazokra a „minta.split ()” függvény használatával a „caTools” csomagból.

könyvtár (caTools)

A „Megvásárolt” oszlop megfigyelésének 65% -ához „IGAZ”, a többihez pedig „HAMIS” címkét rendelünk.

sample.split (autó_vásárlás $ megvásárolva, SplitRatio = 0,65) -> split_values

Mindazokat a megfigyeléseket, amelyek „IGAZ” felirattal rendelkeznek, a „vonat” adatai tárolják, és a „HAMIS” feliratú megfigyeléseket a „teszt” adatokhoz rendelik.

részhalmaz (autó_vásárlás, osztott értékek == T) -> vonat_adatok
részhalmaz (autó_vásárlás, osztott értékek == F) -> teszt_adatok

A rekurzív particionáló algoritmus elkészítésének ideje:

Kezdjük az „rpart” csomag betöltésével:

könyvtár (rpart)

A „Megvásárolt” oszlop lesz a függő változó, és az összes többi oszlop a független változó, vagyis meghatározzuk, hogy az illető megvásárolta-e az autót, vagy sem az összes többi oszlophoz képest. A modell a „train_data” -ra épül, és az eredményt a „mod1” -ben tárolja.

rpart (Vásárolt ~., adatok = vonat_adatok) -> mod1

Ábrázoljuk az eredményt:

ábra (mod1, margó = 0,1) szöveg (mod1, csinos = T, cex = 0,8)

Most menjünk előre, és jósoljuk meg az eredményeket a „test_data” oldalon. Első argumentumként a beépített rpart modellt „mod1” adjuk meg, a teszt a második argumentumként a „test_data” -t, a harmadik argumentumhoz pedig az „prediktív” típusot. Az eredményt az „eredmény1” objektum tárolja.

megjósolni (mod1, teszt_adatok, type = 'class') -> eredmény1

Értékeljük a modell pontosságát a caret csomag „confusionMatrix ()” függvényével.

könyvtár (caret) confusionMatrix (tábla (teszt_adatok $ megvásárolva, eredmény1))

A zavartsági mátrix elmondja, hogy a 90 megfigyelés közül, ahol az illető nem vette meg az autót, 79 megfigyelést helyesen minősítettek „Nem” -nek, 11-et pedig tévesen „IGEN” -nek. Hasonlóképpen, az 50 megfigyelés közül, ahol a személy ténylegesen megvásárolta az autót, 47-et helyesen minősítettek „IGEN” -nek, 3-t pedig tévesen „NEM” -nek.

Megtalálhatjuk a modell pontosságát, ha a helyes jóslatokat elosztjuk a teljes jóslatokkal, azaz (79 + 47) / (79 + 47 + 11 + 3).

K-klaszterezés:

Az „iris” adatkészlettel együttműködve megvalósítjuk a k-jelentésű fürtöket:

Távolítsuk el a „Fajok” oszlopot, és hozzunk létre egy új adatsort, amely csak az első négy oszlopot tartalmazza az „írisz” adathalmazból.

írisz [1: 4] -> iris_k

Vegyük a klaszterek számát 3-nak. A „Kmeans ()” függvény a bemeneti adatokat és a klaszterek számát veszi figyelembe. A szintaxis: kmeans (adatok, k), ahol k a klaszterközpontok száma.

kmeans (iris_k, 3) -> k1

A klaszter elemzése:

str (k1)

Az str () függvény megadja a kmeans szerkezetét, amely különféle paramétereket tartalmaz, például withinss, betweenss stb., Elemzésével megtudhatja a kmeans teljesítményét.

betweenss: A négyzetek összege, azaz az intracluster hasonlósága között

withinss: A négyzet összességén belül, azaz Intercluster hasonlóság

totwithinss: Az összes klaszter összes ininsének összege, azaz a teljes klaszteren belüli hasonlóság

Egy jó klaszterezés alacsonyabb „tot.withinss” és magasabb „betweenss” értéket mutat, amely az eredetileg kiválasztott „k” klaszterek számától függ.

Itt az idő, hogy a gépi tanulás szakértőjévé váljunk, hogy kiaknázhassuk az utat kínáló új lehetőségeket. Ezzel a végére érünk Gépi tanulás R-vel ”Blog. Remélem, hogy ez a blog informatív volt.

Az Edurekának van egy speciálisan kurátora amely segít szaktudást szerezni olyan gépi tanulási algoritmusokban, mint a K-Means klaszterezés, a döntési fák, a Random Forest, a Naive Bayes. Megtanulja a statisztika, az idősor, a szövegbányászat és a mély tanulás bevezetését. Hamarosan új tételek kezdődnek erre a tanfolyamra !!