Prediktivna analitika i strojno učenje: mogu li strojevi učiti ?

Big data / Poslovna analitika / Rudarenje podataka / Uncategorized

Prediktivna analitika i strojno učenje: mogu li strojevi učiti ?

Strojno učenje i uz nju vezana prediktivna analitika kao marketinški pojam postoje nekoliko zadnjih desetljeća u računalnoj znanosti (umjetna inteligencija), međutim svoju popularnost stječu kroz zadnjih godina rastom snage računala i pojavom alata/programskih jezika koji omogućuju korisnicima da iskoriste moć ovog područja. Što je zapravo strojno učenje? Strojno učenje je područje u računalnoj znanosti koje se bavi izradom sustava koji se temelje na učenju putem podataka. Međutim, postavlja se pitanje mogu li strojevi zapravo učiti? U praksi se pokazuje da primjena algoritama/metoda strojnog učenja odvaja poslovanja koja su uspješna te ona koja to nisu. Najbolji primjeri primjene strojnog učenja su Amazon sa sustavima preporuke, Google, LinkedIn, Netflix te ostala tehnološka čuda čiji se proizvodi temelje na strojnom učenju. Primjera radi, Google je otkupio Nest za 3.2 milijarde dolara za pametni uređaj koji regulira temperaturu unutar kuće. Naravno, backend ovog uređaja se temelji na algoritmima strojnog učenja koji prati navike korisnika kroz određeni period, te na temelju naučenog donosi odluke održavanja temperature umjesto korisnika.

Zašto strojno učenje, a ne eksplicitno pisanje programskog koda? Čovjek kao primjer savršenog sustava ponekad ne može uočiti uzorke unutar velike količine podataka te je potrebna intervencija računala i algoritama strojnog učenja kako bi se omogućila automatska potraga za uzorcima u podacima te predviđanje budućih događaja na temelju podataka.

Pretpostavke za uspješnu primjenu algoritama strojnog učenja su:

  • Postoje uzorci u podacima.
  • Nemogućnost eksplicitnog matematičkog objašnjavanja funkcije nekog modela.
  • Podaci moraju postojati!

Kako funkcionira cijeli proces strojnog učenja?

Capture

Slika 1. Prikaz učenja putem podataka

Prije nego što želimo nešto predvidjeti, moramo imati set podataka na kojima će algoritmi učiti te se takav set naziva training set. Svaki set podataka se sastoji od mnoštva varijabli (Xi) te varijable koja opisuje neko stanje (Yi). Kako bi to bilo jednostavnije dati ću vam jednostavni primjer. Ako želimo predvidjeti koji će korisnik napustiti našu uslugu, onda će Xi varijable označavati varijable koje opisuju tog korisnika (godine, pretplatnik ili nije, mjesto stanovanja, vremensku komponentu koja određuje koliko je proveo mjeseci/godina u našoj usluzi itd…), a Yi varijabla označava da li je taj korisnik ostao ili nije (binarno polje Da/Ne ili 0/1). Ti podaci zatim prolaze kroz algoritme strojnog učenja koji prepoznaju uzorke u podacima, te na istim tim podacima previđaju da li primjerice korisnici ostaju ili ne. Zatim se provjerava kakve su performanse tog algoritma tj. kako je on naučio iz postojećeg training seta. Performanse algoritma se odnose na točnost algoritma odnosno u koliko je slučajeva točno predvidio ishod. U većini slučajeva algoritmi imaju točnost od 90 – 100% što ukazuje da smo na dobro putu. Ili ne.

Najveći problem  u strojnom učenju / prediktivnoj analitici je taj što model odlično funkcionira na training setu, jer zna koji su obrasci ponašanja, međutim kad idemo predvidjeti na nekom novom setu podataka odnosno test setu taj algoritam uglavnom pokazuje poražavajuće rezultate, uglavnom oko 30-50% točnosti što je ekvivalentno nasumičnom pogađanju. Stoga u cijeloj metodologiji strojnog učenja postoji nešto što se naziva particioniranje cijelog seta podataka. Povijesni podaci se dijele na training set i test set, gdje training set služi za učenje dok test set služi za provjeru da li taj model stvarno  toliko dobro funkcionira. Dobra je praksa da se cijeli set podataka podijeli na prema pravilu 70/30 ili 80/20, gdje 70% cijelog seta podataka služi za učenje, a 30% za testiranje modela. Stručnjaci ponekad preporučuju pravilo 60/30/10, gdje se ovih zadnjih 10% podataka koriste kao validacijski set kako bi stvarno mogli utvrditi da imamo odličan model učenja. U znanstvenim krugovima postoji nešto se zove bias/variance tradeoff i problem overfitting-a ili undefitting-a modela, međutim o toj tematici ću pisati u nekom od sljedećih članaka.

Postoji li nešto što se naziva savršeni algoritam za strojno učenje?

Naravno da ne. Postoji slučajevi gdje neki jednostavni algoritmi poput stabla odlučivanja ili linearne regresije daju jako dobre rezultate, iako je riječ o malom broju slučajeva. Međutim, neki od najpoznatijih kompleksnih algoritama poput random forest-a, gradient boosting machine ili dubokih neuronskih mreža (deep learning) daju jako dobre rezultate, međutim zahtijevaju nešto više računalne snage, ali daju bolje rezultate u predviđanju. Svaki od ovih algoritama je odličan u pojedinoj vrsti predviđanja, ali smatra se da algoritmi koji mogu pronaći nelinearne uzorke u podacima rade bolje od onih koji koji koriste neku vrstu linearnosti.

Mogu li strojevi učiti?

Iako se neki problemi (predviđanje raka) ne mogu ostaviti na odluci algoritmima za strojno učenje, strojno učenje uvelike pomaže pri riješevanju (poslovnih) problema. Točnost naučenog modela će ovisiti o tri pitanja:

  • Postoji li pravo pitanje na problem?
  • Jesu li podaci točni i kvalitetni?
  • Je li algoritam dobro optimiziran?

Inače ne postoji nešto što se zove savršen model koji će moći u 100% slučajeva objasniti kompleksnu realnost, ali znanstvenici su na dobrom tragu da algoritmi što bolje previđaju. Strojno učenje iz dana u dan privlači sve više zainteresiranih te sve više poslovanja implementira strojno učenje u nekom obliku poput data mining-a pri rješavanju poslovnih problema. Ovaj članak bi trebao biti neki osnovni pogled što je strojno učenje/prediktivna analitika, stoga nisam ulazio preduboko u temu.

Pitanje za kraj.

Što biste vi željeli predvidjeti?