User login

Languages

Eksperiments ar ieteikumu sistēmām

Palaidu dzīvē savu eksperimentālo bērnu - ieteikumu portālu http://www.davanuidejas.lv  Tā kā portāls pats par sevi ir tikai stāsta viena puse,  šeit izstāstīšu otro. Ceru, ka tas iedvesmos Tevi šai eksperimentā piedalīties. 
 
Mani jau labu laiku interesē ieteikumu sistēmas. Tāpēc, septembra sākumā pierakstījos Coursera kursā "Introduction to Recommender systems". Portāls tapa, iedvesmojoties no šī kursa. Pēdējais rakstiskais mājasdarbs kursā bija - izprojektēt savu ieteikumu sistēmu. Man likās, ka to vieglāk varētu izdarīt, ja pirms tam šādu ieteikumu sistēmu noprogrammētu un palaistu dzīvē :) 
 
Kopumā, pieredze ar Coursera ieteikumu sistēmu kursu bija pozitīva. 
1. Var teikt, ka tas tiešām bija ievadkurss, tomēr, vismaz manu domāšanu tas pamainīja - tieši tas, kā tas bija salikts kopā. Piemēram, tur tika runāts ne tikai par ieteikumu veidošanas algoritmiem, bet arī par ieteikumu sistēmas metrikām - kā noteikt, ka sistēma strādā labi?
2. Ir iespēja iet programmētāju taku, un neprogrammētaju taku. Es gāju pa programmētāju taku, un nenožēloju, lai gan programmēšanas mājasdarbi paņēma tieši visvairāk laika (itkā nav raķešzinātne, bet, kamer sasetapo eclipsi, kamēr izpēta Lenskit karkasa API, kamēr .... Kā jau vienmēr, darbs jaunā vidē prasa laiku) 
 
 
Nu lūk, un novembra vidū, kad tika uzdots pēdējais rakstudarbs, man radās ideja ātri ātri uzcept pašam savu rekomenderi, un izmēģināt to uz saviem līdzcilvēkiem. Dāvanu ieteikumi likās kā laba izvēle, jo problēma "ko lai dāvina?" ir diezgan bieži sastopama, un ne jau vienmēr var izlīdzēties ar lēcienu ar izpletni vai sejas/dibena švammi :), kas ir diezgan raksturīgi piedāvājumi dāvanu portālos. 
 
Laika periodu starp novembra vidu un decembra pirmo nedēļu necentīšos aprakstīt, tikai pateikšu, ka tas bija fiziski grūts. Kad sistēma funkcionāli +/- darīja to, ko tai jādara, lūdzu draugus, pēc tam - Nordea skolas skolniekus pamēģināt tās lietošanu. Visskarbākā skola priekš manis tā bija attiecībā uz lietojamību - lai gan vienmēr cenšos domāt par lietotāja ērtībām, šoreiz man bija jāsecina, ka domāju kā back-office programmētājs, un šinī vidē tas nestrādā. Tagad lapa izskatās daudz labāk, nekā sākumā, tomēr nevaru teikt, ka justos apmierināts ar rezultātu.
 
Vēl viena interesanta lieta bija tā, ka - iepriekš nebiju iedomājies, ka tas būs svarīgi - lietotāji mēģina izdarīt savus pieņēmumus par to, kā ieteikumu sistēma strādā (un secina, ka algoritms nestrādās). Tā kā sistēma prasa ievadīt datus par sevi, tad tipisks pieņēmums bija - sistēma mēģina pielasīt idejas lietotājam, vadoties pēc kategorijām. Kā arī secinājums - šāds algoritms nevar strādāt labi :) T.i., es gribu teikt - ieteikumu sistēmā ir ļoti svarīgi, kā tiek prezentēta prognožu ticamība
 
Šis minējums par algoritmu savā ziņā bija pareizs, bet nepilnīgs. Patiesībā darbojas divi algoritmi - Content Based Filtering (CBF - princips, kas aptuveni aprakstīts iepriekš), un user-user collaborative filtering, kur, vadoties gan pēc personas profila (vecums, dzimums, intereses), gan pēc viņa vērtējumiem tiek atrasta apkaime no "līdzīgajām" personām, un tiek ieteikti top piedāvājumi no šīs apkaimes. Protams, ka šinī ainā ir vēl miljons izņēmumu, no kuriem dažus es apstrādāju, dažus pagaidām vēl nē. Piemēram, parasti nav jēgas kā ideju piedāvāt teātra biļetes, kas ir dāvinātas pagājušajā sezonā. Vai, nedrīkst piedāvāt kā ideju alkoholu personām, kas nav pilngadīgas. 
 
Iemesls, kāpēc tiek lietoti divi algoritmi, ir sekojošs - lai arī user-user algoritms būs gan precīzāks, gan tas piedāvā labākas nejaušības iespējas (jo dāvināšana ir radošs process), tomēr sākumā šo datu nav (kursā uzzināju, ka to sauc par "cold start" problēmu). Tāpēc, CBF algoritma prognozes svars ir atkarīgs no tā, cik "labu" lietotāja apkārtni izdodas atrast. Palielinoties pieejamajam datu apjomam, CBF algoritma prognozes svars samazināsies, user-user algoritma prognoze iegūs arvien lielāku svaru.
 
Tā vismaz vajadzētu būt. Kā tas strādā dzīvē, mēs uzzināsim, ja portālā būs pietiekoši daudz tautas. Tāpēc, mans aicinājums - ieguldi savu datu kripatu arī Tu. Rezultātā, redzēsim, kā tas viss strādā, kā arī iegūsim vietu, kur pasmelties idejas dāvanām, kad ūdens sāks smelties mutē. 
 
Pāris P.S.
1. es labprāt atrastu kompanjonu gan šī projekta turpināšanai (ja tas tiks darīts - to redzēsim no cilvēku intereses), gan arī citiem projektiņiem nākotnē.
2. IT publikai - ja projekts aizies, solu, ka padalīšos ar secinājumiem 
 

Komentāri

Pievienojiet komentāru

Plain text

  • HTML birkas nav atļautas
  • Interneta lapu un e-pastu adreses automātiski tiek pārveidotas par saitēm.
  • Automātiska rindu un rindkopu veidošana
  • Each email address will be obfuscated in a human readable fashion or, if JavaScript is enabled, replaced with a spam resistent clickable link. Email addresses will get the default web form unless specified. If replacement text (a persons name) is required a webform is also required. Separate each part with the "|" pipe symbol. Replace spaces in names with "_".
Image CAPTCHA
Ievadiet attēlā redzamos ciparus
Error | Kaspara Omula mājas lapa
Enter your Kaspara Omula mājas lapa username.
Enter the password that accompanies your username.

Kaspara Omula mājas lapa

Error

The website encountered an unexpected error. Please try again later.