• Nem Talált Eredményt

Ajánlórendszerek és ritka mátrixok fakto- fakto-rizációjafakto-rizációja

In document Kinek szól ez a jegyzet? (Pldal 183-188)

Osztályozás és regresszió

4.12. Ajánlórendszerek és ritka mátrixok fakto- fakto-rizációjafakto-rizációja

A ritka mátrixok faktorizációjára szolgáló algoritmusok (lásd pl. [Karimi és tsa., 2012], [Symeonidis és tsa., 2010], [Salakhutdinov és Mnih, 2008], [Kurucz és tsa., 2007]) els® sorban a 1.2. részben már említett ajánlórendszerek alapjául szolgál-nak [Koren, 2009]. Kimenetüket tekintve a regressziós algoritmusokhoz ha-sonlóak (folytonos skálán értelmezett számértéket adnak eredményül), ezért tárgyaljuk a mátrix faktorizációs algoritmusokat az osztályozó és regressziós algoritmusokkal egy fejezetben.

Az egyszer¶ség kedvéért a mátrixfaktorizációs algoritmusokat a lmaján-lókon keresztül mutatjuk be, de hangsúlyozzuk, hogy számos további esetben használhatóak, amikor kett® (esetleg több) különböz® típusú objektum adott (lmajánlók esetében: felhasználók és lmek) és az objektumok közti ismert kapcsolatokból újabb kapcsolatokat szeretnénk kikövetkeztetni. Ilyen eset le-het például a gének, betegségek és gyógyszerek közti potenciális új kapcsolatok feltárása, a szemantikus világháló RDF-hármasain végzett valószín¶ségi követ-keztetés [Drumond, 2012], vagy annak el®rejelzése, hogy várhatóan mely fel-használó mely blogot fogja kommentezni [Buza és Galambos, 2013]. A mátrix faktorizációs algoritmusokat használhatjuk továbbá a diákok teljestményének el®rejelzésére is. [Nguyen és tsa., 2011].

A ritka mátrixok faktorizációja esetén abból indulunk ki, hogy adott egy mátrix. A mátrix sorai felelnek meg az egyik típusú objektumnak (felhasz-nálóknak), oszlopai a másik típusú objektumnak (lmeknek). Ha az adott alkalmazásban kett®nél több típusú objektum van, akkor kétdimenziós mátri-xok helyett magasabb dimenziószámú tenzorokkal dolgozunk és ritka tenzorok faktorizációjáról vagy egyszer¶bben: tenzor faktorizációról beszélünk. Néhány objektum közti összefüggés adott: néhány(u, v) párra tudjuk, hogy az u jel¶

felhasználónak mennyire tetszett av jel¶ videólm (hány pontra értékelte). A mátrix celláinak legnagyobb része azonban üres. A gyakorlati alkalmazásokban (pl. lmajánlók) az összes cellának 99%-a, vagy akár ennél is nagyobb része lehet üres. Lásd a 4.22. ábrát.

A feladat a hiányzó cellák értékeinek kitöltése. Feltesszük, hogy van vala-milyen összefüggés a megadott és hiányzó cellaértékek között, a megadott érté-kekb®l lehet következtetni a hiányzó értékekre: ha például egy felhasználónak tetszett egy lm, akkor ugyanazon lm egy hozzá hasonló ízlés¶ felhasználónak is várhatóan tetszeni fog.

4.12.1. Collaborative ltering

A hiányzó értékek becslésére számos eljárás ismert. A legegyszer¶bbek egyike a collaborative ltering. A user-based collaborative ltering (felhasználó alapú collaborative ltering) alapgondolata a követ®: ha a hiányzó érték¶ cella az u felhasználóhoz és v videólmhez tartozó sorban és oszlopban van, akkor az u felhasználó által korábban megadott, ismert értékelések alapján keresünk néhányu1, u2...felhasználót, amelyek hasonlóaku-hoz és amelyek értékelték av videólmet. Ezen értékelések alapján (például átlagolva ezeket, vagy súlyozott átlagukat számítva) becsüljük a hiányzó cella értékét.

Mivel a felhasználók és lmek szerepe felcserélhet®, ezért hasonló felhasz-nálók helyett kereshetünk hasonló lmeket is: olyan lmeket, amelyeket ha-sonlóan értékeltek a felhasználók. Ekkor item-based collaborative lteringr®l

4.22. ábra. Az ajánlórendszerek hátterében álló adatok egy ritka mátrix ele-mei. A mátrix sorai a felhasználóknak felelnek meg, oszlopai az egyes termé-keknek (lmeknek). Feltehetjük, hogy néhány terméket a felhasználók 1-t®l 5-ig terjed® skálán értékeltek. A termékek nagyrészér®l azonban nem tudjuk, hogy egy-egy felhasználónak tetszenek-e vagy sem, ezeket az esetekel jelöltük kérd®jelekkel. A feladat az, hogy eldöntsük, mely termékek várhatóan mely felhasználóknak fognak fognak tetszeni.

beszélünk. A két eljárást kombinálva kapjuk a hybrid collaborative ltering eljárásokat: a legegyszer¶bb esetben kiszámolunk egy-egy számot user-based és item-based módon, és ezek átlaga lesz a hybrid eljárás által adott becslés.

A fent említett, nagyon egyszer¶ eljáráson kívül használhajtuk a korábban tárgyal SVD (singular value decomposition) egy változatát is a hiányzó értékek becsléséhez. Szintén nagyon népszer¶ a gradiens módszeren alapuló mátrix faktorizácíos eljárás, amelyek a következ® részben mutatunk be.

4.12.2. Gradiens módszeren alapuló mátrix faktorizáció

A ritka mátixok gradiens módszeren alapuló faktorizációja során az eredeti, hiányos értékeket tartalmazó M mátrixot két kisebb mátrix U és V szorzatára bontjuk, pontosabban: olyan U és V mátrixokat keresünk, amelyek szorzata jól közelíti M ismert értékeit. Az U sorainak száma megegyezik a felhaszná-lók számával, míg V oszlopainak száma a videólmek száma. U oszlopainak számát amely megegyezik V sorainak számával, hiszen így lesz a két mátrix összeszorozható k-val jelöljük, k az eljárás egyik paramétere, amelyet rej-tett faktorok számának nevezhetünk. Az egyik legeszer¶bb esetben a közelítés négyzetes hibája és a túl bonyolúlt modelleket büntet® tag súlyozott összegéb®l álló célfüggvény minimumát keressük:

∑ A korábban említettk mellettλ is az eljárás paramétere.

A (4.12) függvény minimumát gradiens módszerrel keressük, eközben hatá-rozzuk meg U és V celláinak értékeit is.

Vegyük észre, hogy azzal az implicit feltételezéssel élünk, hogy a felhasz-nálók és lmek leképezhet®k egy k dimenziószámú vektortérbe, hiszen az U egyes sorai a felhasználóknak felelnek meg, V oszlopai pedig a videólmeknek.

A feltevéshez hozzá tartozik, hogy a leképkezés olyan, hogy a felhasználóknak és videólmeknek megfelel® k dimenziós vektorok skaláris szorzata jellegzetes arra nézve, hogy milyen er®s a kapcsolat a két objektum között (mennyire szereti az adott felhasználó az adott lmet).

A következ®kben azzal foglalkozunk, hogyan határozzuk meg U és V ér-tékeit. Az alapötlet az, hogy kezdetben véletlenszer¶en inicializáljuk a két mátrix elemeit, majd apró lépésekben egészen addig "igazítjuk" azokat, amíg U ×V elég jól nem közelíti M ismert értékeit. Az ilyen javítási lépésekhez sorra vesszük M ismert értékeit (akár többször is végighaladunk M ismert ér-tékein), és valahányszor egy olyan értékhez érünk, amely nem egyezik meg a hozzátartozó sorvektor és oszlopvektor szorzatával, "igazítunk" kicsit a sor- és oszlopvektorokon, kicsit csökkentjük vagy növeljük a megfelel® sor és oszlop-vektor értékeit úgy, hogy szorzatuk közelebb legyen az M mátrix aktuálisan tekintett értékéhez. Ezt szemlélteti a 4.23. ábra.

A kérdés az, hogy milyen egy jó javítási lépés?

1. A javítás, a vektorok érékein végzett változtatás legyen arányos a hibával, legyen a hiba ϵ-szorosa. A 4.23. ábra példáján a hiba: 94 = 5, ha ϵ= 0.1, akkor épp az ábrán látható,0.1×5 = 0.5-tel történ® változtatást végezzük. Az ϵ az eljárás paramétere.

2. Vegyük észre, hogy a vektorok különböz® komponensei más-más mérték-ben járulnak hozzá hibához. A 4.23. ábra példáján a sorvektor els® kom-ponensét (3-at) 1-gyel szoroztuk (az oszlopvektor els® komponensével), a sorvektor második komponensét (2-t) pedig 3-mal szoroztuk (az oszlop-vektor második komponensével). Látható, hogy a második komponens nagyobb mértékben járul hozzá a hibához. Logikus tehát, hogy a második komponenst nagyobb mértékben csökkentsük. A leggyakrabban alkalma-zott eljárás a következ®: miután az el®z® pontban látott módon kiszámol-tuk, hogy mennyivel változzon a sorvektor egy komponensének értéke, ezt a számot még megszorozzuk az oszlopvektor hozzátartozó komponensé-nek értékével. Így tehát a példában a sorvektor els® komponensét, a 3-at,

4.23. ábra. A gradiens alapú mátrixfaktorizációs algoritmus egy javítólépésének szemléltetése: mivel3×1 + 2×3 = 9, ami nagyobb 4-nél, ezért az M mátrix jelölt cellájához tartozó U-beli és V-beli sor- illetve oszlopvektorban szerepl®

számokat csökkentjük, azért, hogy szorzatuk közelebb kerüljön 4-hez.

(94)×0.1×1 = 0.5-del csökkentjük, a második komponenst, a 2-t pedig (94)×0.1×3 = 1.5-del csökkentjük (ϵ= 0.1mellett). Hasonlóképpen vesszük gyelembe a sorvektor egyes komponenseit az oszlopvektor frissí-tésénél: az els® komponenst, 1-t, (94)×0.1×3 = 1.5-del csökkentjük, míg a másodikat (94)×0.1×2 = 1-gyel csökkentjük (ϵ= 0.1mellett).

Ezt a módosítási lépést intuíción alapulva vezettük be, azonban matema-tikailag igazolható, hogy ezen a módosítási lépés mellett az algoritmus a négyzetes hibát fogja minimalizálni (azaz az U ×V által becsült érté-kek és M tényleges értékei közti négyzetes eltérést minimalizáljuk ilyen frisstési lépés mellett).

3. Ha az U illetve V mátrixbeli számok nagyon nagyok lesznek, az könnyen a túltanulás egy formája lehet. Ezt úgy akadályozzuk meg, hogy az értékek frissítése során, az eddigiek mellett kivonjuk az eredeti érték λ-szorosát.

Az ábrán jelölt sorvektor els® komponensének (3-nak) új értéke tehát:

3(

(94)×ϵ×1)

( λ×3)

lesz. Belátható hogy így a négyzetes eltérés plussz az U és V mátrixok elemeinek négyzetösszegét, mint célfüggvényt optimalizáljuk. Az U és V mátrixok elemeinek négyzetösszegét gyakran regularizációs tényez®nek is nevezik.

Az M mátrix ismert elemeit általában nem elég egyetlen egyszer tekinte-nünk. Ezért a következ®képpen járunk el: végigmegyünk az M mátrix ismert elemein, és elvégezzük a nekik megfelel® javítási lépéseket. Majd a további-akban iteratíve újra és újra végigmegyünk M ismert értékein és közben újabb javításokat végzünk. Az eljárás paraméterei tehát: ϵ, λ és az iterációk száma.

A fentiekben az egyik leginkább elterjedt mátrix faktorizációs eljárást írtuk le. A fenti eljárás rengeteg változata ismert attól függ®en, hogy milyen célfügg-vényt optimalizálunk, és ezzel összefügg®en milyen javítási lépéseket végzünk.

Ahogy emltettük, a gyakorlati alkalmazásokban az M mátrix elemeinek túl-nyomó többsége ismeretlen. Ezért az eljárás memória-hatékony implementáci-ója során csak M ismert értékeit tároljuk például (sor, oszlop, érték) hármasok formájában. Az U és V mátrixok meghatározása után az ismeretlen értékek egyenként becsülhet®k, a becslések egyenként kiírhatók a kimenetre, így va-lójában sohasem szükséges teljes M mátrix tárolása a memóriában, amely a legtöbb alkalmazásban hatalmas méret¶.

In document Kinek szól ez a jegyzet? (Pldal 183-188)