torek, 10. september 2013

Konceptualizacija strojnega učenja

Poglejte,
lani sem imel prašiča.

Pojedel je 12 ton repe in 5 ton krompirja. Popil je 100 litrov vode in na koncu tehtal 300 kg, imel je pa 22 holesterola. Na sejmu sem ga prodal za 1230 eurov.

Letos imam drugega prašiča, ki je manj repe in več krompirja. Pije podobno ampak dvomim da se bo toliko zredil. Pa vendar me zanima koliko bom na sejmu dobil zanj. Kaj na storim?

Na srečo sem imel prašiča že lani in predlani, pa tudi moji sosedje jih imajo precej. Vsi vodimo podrobne evidence koliko prašiči pojejo in popijejo, koliko so težki, koliko imajo holesterola in koliko smo izkupili za njih.

Ker imam veliko podatkov sumim, da bi se lahko iz njih nekako naučil napovedati ceno prašiča, če je odvisna od njegovih lastnosti.

Lastnosti prašiča so:
- količina požrte repe,
- količina požrtega krompirja,
- količina popite vode,
- teža in
- holesterol.

 Zanimani me podatek je cena prašiča.

Koliko in kako vplivajo lastnosti prašiča na njegovo ceno? Po občutku bi rekel, da teža zelo vpliva in to pozitivno. Kupci plačajo več za težjega prašiča ker predpostavljajo, da bodo iz njega dobili več mesa. To je dejstvo. Mislim, da holesterol vpliva malo negativno, ker pomeni manj mesa.

Kakorkoli, zanima me samo, za koliko bom letos prodal prašiča.

Obstaja več metod strojnega učenja:
Drevesa odločanja / regresijska drevesa
Umetne nevronske mreže (artificial neural network)
Suport vector machines
etcetera...

Te metode se uporabljajo za tri glavne naloge:
Klasifikacija
Regresija in
Grozdenje (clustering ali nenadzorovana klasifikacija)

Klasifikacija in regresija sta ista pašta. Glede na vhodne podatke želimo določiti izhodni podatek. Pri regresiji je to zvezna vrednost (kot v našem primeru cena prašiča). Če bi pa naprimer prašiča želeli glede na barvo dlake, strukturo kože in dolžino ušes razvrstiti v eno od petih možnih pasem bi bila pa to klasifikacija. Izhodna vrednost v tem primeru bi bila diskretna vrednost.

Grozdenje ali nenadzorovana klasifikacija bi pa bila, če nebi poznali možnih pasem prašiča ampak bi samo hoteli, naj algoritem razdeli prašiče v skupine tako, da bojo podobni prašiči skupaj. To sem delal v svoji diplomi, samo, da, ker sem geodet nisem imel prašičev ampak premike točk.

Vsaka uporaba strojnega učenja je sestavljena iz učenja in napovedovanja.

Učenje pomeni, da v algoritem vnesemo vhodne podatke za naših sto prašičev. To pomeni, za vsakega od stotih prašičev povemo njegove lastnosti. To bi zapisali v matriko, ki bo velika 100x5, ker je sto prašičev in vsak ima pet lastnosti. Potem v algoritem vnesemo še izhodne podatke oziroma želene oziroma pravilne rezultate. V enakem vrstnem redu, kot smo podali lastnosti podamo še cene prašičev. Algoritem se bo naučil odnosov med vhodnimi in izhodnimi podatki. Vedel bo koliko in kako na ceno vpliva katera od lastnosti. To vse se bo naučil sam, samo če mu podamo dovolj primerkov parov vhodnih in izhodnih vrednosti.

Drugi del je napovedovanje. Ko je ta naš stroj naučen mu podamo lastnosti letošnjega prašiča in napovedal bo za koliko ga bomo po njegovo prodali.

To je point.

Pri teh metodah je pogosto problem, da se, če jih učimo preveč dolgo, naučijo točno napovedati ceno za vsakega od stotih prašičev, za vsakega drugega bojo pa napovedali narobe, ker so se preveč podrobno naučili točno teh stotih prašičev. Temu problemu rečemo overfitanje. Da bi se temu izognili bomo stroju povedali samo podatke za 70 prašičev in ko se bo naučil mu bomo rekli naj zdaj za ostalih 30 kar sam napove. Za teh 30 mu ne bomo povedali pravih cen ampak bomo sami pogledali kako dobro jih je zadel. S temi 30 bomo lahko tudi ocenili kako dobro se je stroj naučil in kako natančna bo napoved cene za letošnjega prašiča.

To je vse kar vem o metodah strojnega učenja. Polagam vam pa na srce. Ko boste na zagovoru svoje diplome, oprostite, magisterija ali doktorata govorili o strojnem učenju, prosim, povejte kaj so vaši prašiči, katere lastnosti imajo in kaj boste napovedali. Če tega ne poveste jasno, meni izgleda, kot da mešate meglo in da je strojno učenje znanstvena fantastika.