• Nem Talált Eredményt

Ritka mátrixok faktorizációja

Osztályozás és regresszió

4.12. Ritka mátrixok faktorizációja

A ritka mátrixok faktorizációjára szolgáló algoritmusok első sorban a 1.2. rész-ben már tárgyalt ajánlórendszerek alapjául szolgálnak. Kimenetüket tekintve a regressziós algoritmusokhoz hasonló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 a regressziós algoritmusokkal egy fejezetben.

Az egyszerűség kedvéért a mátrixfaktorizációs algoritmusokat a filmajá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 (filmajánlók esetében: felhasználók és filmek) é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 vagy a szemantikus weben található RDF-hármasokon végzett való-színűségi következtetés [Drumond, 2012].

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 (filmeknek). 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 ésritka 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ófilm (hány pontra értékelte). A mátrix celláinak legnagyobb része azonban üres. A gyakorlati alkalmazásokban (pl. filmajá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 film, akkor ugyanazon film egy hozzá hasonló ízlésű felhasználónak is várhatóan tetszeni fog.

4.22. ábra. Az ajánlórendszerek hátterében álló adatokat általában egy ritka mátrix elemeinek szokták tekinteni. A mátrix sorai a felhasználóknak felelnek meg, oszlopai az egyes termékeknek, a példában ezek a termékek filmeknek.

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 fel-használónak tetszenek-e vagy sem, ezeket az esetekel jelöltük kérdőjelekkel. A feladat az, hogy eldőntsük mely termékeket érdemes az egyes felhasználók szá-mára reklámozni, azaz: becsüljük meg, hogy mely termékek fognak várhatóan tetszeni az egyes felhasználóknak.

4.12.1. Collaborative filtering

A hiányzó értékek becslésére számos eljárás ismert. A legegyszerűbbek egyike a collaborative filtering. A user-based collaborative filtering (felhasználó alapú collaborative filtering) alapgondolata a követő: ha a hiányzó értékű cella az u felhasználóhoz és v videófilmhez 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ófilmet. 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 filmek szerepe felcserélhető, ezért hasonló felhasz-nálók helyett kereshetünk hasonló filmeket is: olyan filmeket, amelyeket ha-sonlóan értékeltek a felhasználók. Ekkor item-based collaborative filteringről beszélünk. A két eljárást kombinálva kapjuk a hybrid collaborative filtering 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óMmátrixot két kisebb mátrixUésVszorzatára bontjuk, pontosabban: olyan U és V mátrixokat keresünk, amelyek szorzata jól közelíti M ismert értékeit. Az U és V celláinak értékeit a gradiens mód-szer egy változatával fogjuk meghatározni. AzUsorainak száma megegyezik a felhasználók számával, mígV oszlopainak száma nem más, mint a videófilmek száma. Uoszlopainak számát – amely megegyezikVsorainak számával, hiszen így lesz a két mátrix összeszorozható – k-val jelöljük, k az eljárás egyik para-métere, amelyet rejtett faktorok számának nevezhetünk. Vegyük észre, hogy mindeközben azzal az implicit feltételezéssel élünk, hogy a felhasználók és fil-mek leképezhetők egykdimenziószámú vektortérbe úgy, hogy a nekik megfelelő k dimenziós vektorok skaláris szorzata jellegzetes lesz arra nézve, hogy milyen erős a kapcsolat a két objektum között (mennyire szereti az adott felhasználó az adott filmet).

A következőkben azzal foglalkozunk, hogyan határozzuk meg U és V cel-láinak érté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ígU×V elég jól nem közelíti M ismert értékeit. Az ilyen javítási lépések-hez sorra vesszükM ismert értékeit (akár többször is végighaladunkMismert érté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 sor-és osz-lopvektor értékeit úgy, hogy szorzatukközelebb legyen azMmá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

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.

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, (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 figyelembe 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 friss´tési lépés mellett).

3. Ha azUilletveVmá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 azUésVmátrixok elemeinek négyzetösszegét, mint célfüggvényt optimalizáljuk. Az U ésV 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ünkM 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 eml´tettük, a gyakorlati alkalmazásokban azMmátrix elemeinek túl-nyomó többsége ismeretlen. Ezért az eljárás memória-hatékony implementáci-ója során csakMismert é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ű.