GÉPI TANULÁS − MACHINE LEARNING Andrew Ng Machine Learning kurzusa alapján © 2016. Szőts Ákos
1 ÁLTALÁNOS ISMERETEK Kategorizálás, alapvető fogalmak
Gépi tanulási algoritmusok
▸ Felügyelt tanulás (jó válaszok előre megadva, ezek alapján kell jósolnia) ▹ Regresszió: folytonos kimenet ▹ Osztályozás: diszkrét kimenet ▹ Lineáris regresszió, logisztikus regresszió, neurális hálók, SVM-ek
▸ Nem felügyelt tanulás ▹ Klaszterezés (K-közép, hierarchikus típusok) ▹ Főkomponens analízis (PCA) ▹ Anomáliaérzékelés
Hipotézisfüggvény
▸ hθ(x): az x → y-ra hozásához ▹ A tanuló algoritmus a tanító halmaz segítségével állítja elő a θ modellparamétereket, amiknek segítségével a hipotézisfüggvény xből minél közelebbi y-t gyárt. ▹ Példa:
▸ A döntési határ a hipotézisfüggvény saját tulajdonsága
Költségfüggvény
▸ A kapott adat (y) és a becslési modell (h(x)) eltérésének vizsgálatához ▹ Például:
▸ A cél mindig ennek minimalizálása ▸ Szükséges a konvergencia monitorozásához is
Globális optimalizáció
▸ Nem használják a deriváltból származó információt ▸ Lassabban konvergálnak ▸ Hibatűrőbbek a függvényben és a kényszerfeltételekben jelen lévő zajra ▸ Példái ▹ ▹ ▹ ▹
Nelder–Mead-módszer genetikus algoritmus diferenciális evolúció szimulált lehűtés
Helyi minimalizálás
▸ Az első derivált (a gradiens vagy Jacobi-mátrix) vagy a második derivált (Hesse-mátrix) alapján működnek ▸ Példái: ▹ ▹ ▹ ▹ ▹
Gradiens módszer Newton-módszer Kvázi-Newton (pl. BFGS, BHHH vagy DFP) Levenberg–Marquardt, Gauss–Newton Konjugált gradiens
Gradiens módszer
▸ Legközelebbi helyi minimum meghatározása ▸ Képlet: mondja meg, hogy a függvény pontjához ▸A tartozó tangenciális egyenes mennyire meredek, ami pedig a . ▹ Mivel a kék egyenes jobbra emelkedik, a meredekség és így a derivált is pozit ív. ▹ Ezt pedig a pozitív számból kivonva csökkenteni fogunk, tehát elindulunk balra lefelé.
▸ Az α paraméter a tanulási mérték ▹ Kis értéke esetén kisebbeket lép, de nagyobb bizonyossággal konvergál ▹ Nagyobb értékekor gyorsabban halad a minimum felé
▸ Minden lépése minden „m” mintán végigmegy a -ben
Sztochasztikus gradiens módszer
▸ A gradiens módszernél egy lépéshez „m” összeadás kell ▸ A sztochasztikus verzió csak az adot minta irányába tesz egy apró lépést (a mintához illeszti a paramétert), majd lép a következő mintára; ezt maximum tíz iterációban: ▹ Véletlenszerűen keverjük össze az adathalmazunkat ▹
▹ A gyakori paraméterváltoztatás miat egyenetlenül konvergál és utána csak bolyong a minimum közelében
A bolyongás ellen α-t folyamatosan csökkenteni kell:
▹ A konvergencia ellenőrzéséhez minden ~1000. mintánál rajzoljuk ki az előző 1000 minta költségátlagát
Középérték normalizálás
▸ Gondoskodjunk róla, hogy a bemeneti változóink azonos skálán mozogjanak ▹ Pl. méret (0..20000 m2) vs. szobák száma (1..5)
▸ Képlet: ▹ μi : átlagos érték a tanítóhalmazban ▹ Si : szórás
Precision és recall
▸ Ha az egyik minta elnyomja a másikat (sokkal több van belőle), ferdeségről (skewed classes) beszélünk ▸ Precision: „az összes jelzet (y=1) közül mennyi jó (=1) ?” ▸ Recall: „az összes létező (=1) közül mennyit jeleztünk?” ▸
Ha nagyobb bizonyosságot szeretnénk, akkor h(x) ≥ 0,7-nél jelezzünk 1-et, amivel nő a pontosság, de kevesebbet adunk vissza (csökken a recall).
▸
A két érték egyben kifejezése: ▹ átlag:
túl jó érték egyenlőtlenül felhúzza a rosszat
▹ F1 pont:
A két érték harmonikus közepe
Bármelyik a 0 felé közelít, a végső érték is kicsi lesz
Online tanulás
▸ Van egy szállítmányozó oldalunk, ahol a megrendelő megadhatja a kiindulást (x ), a célt (x ), az eddigi rendeléseinek számát (x ) stb., majd ebből megkapja a szállítási árat (x ). ▸ A célunk kitalálni, hogy az ügyfél megrendeli-e (y) a szolgáltatást 1
2
3
4
▹ ▹ Ehhez pedig optimalizálni kell az ár paramétert
▸ Folyamatosan beérkező adatok esetén az algoritmus: ▹ Lekérjük a felhasználóhoz tartozó (x, y)-t (árat ajánlunk neki) ▹ A választása után frissítjük a θ-t az új (x, y)-nal:
Így lehet alkalmazkodni a folyamatosan változó felhasználói szokásokhoz
MapReduce
▸ Független műveleteknél (pl. Σ-nál) az adatfeldolgozás párhuzamosítható ▸ A MapReduce különböző gépekre osztja fel a feladatokat, műveleteket végez (map), majd a végén egyesíti őket (reduce) ▹ A tanítóminták négy részre osztása esetén:
▹ Az összefűzés:
▸ Számolni kell a hálózati késleltetéssel és az összefűzési idővel ▸ A MapReduce helyi gépen is alkalmazható, ha a numerikus könyvtár nem párhuzamosítot
2 FELÜGYELT TANULÁS – ALGORITMUSOK Regresszió, normálegyenlet és társai
Lineáris regresszió
▸ Hipotézisfüggvény: ▸ Költségfüggvény: ▸ Gradiens módszer a költségfüggvény deriváltjával:
Polinomiális regresszió
▸ A lineáris regresszió egy speciális esete, amivel könnyebb görbéket leírni ▸ Például: ▹ ▹ ▹ ▹ Ilyenkor xi mindig ugyanaz a változó
▸ Nagy gyorsasággal nőnek a paraméterek ▹ 100 jellemző, csak másodfokú tagok: 5000 paraméter,
Még egy ellipszist tud csak lefedni
▹ 100 jellemző, harmadfokú tagok is: 1700000 paraméter, O(n3)
Normálegyenlet
▸ Függvény arra, hogy rögtön a lehető legjobb θ-t válasszuk ▸ Képlete: ▸ Egy n×n-es mátrix invertálása O(n3) idejű
Logisztikus regresszió
▸ A h(x)-et 0 és 1 közöt tartjuk egy szigmoid függvénnyel ▹
, logisztikus szigmoid
▹ Elárulja, hogy mekkora valószínűsége (y) van a bemeneti (x) -nek ▹ Valszámosan a fenti:
▸ Költségfg.: ▸ Deriváltja ugyanaz, mint a lineáris regresszióé, csak a h(x) különbözik
Többosztályos osztályozás
▸ 1 vs. all algoritmus ▹ ▹ hθ(i) osztályozót készítünk, ami megjósolja y=i valószínűségét ▹ Új „x” értéknél ezt kell lefutatni minden osztályozóra és a maximumot választani:
Neurális hálók -
forward propagation
▸ Komplex, nemlineáris hipotézisek létrehozása ▸ Aktivációs függvény: ▹ ami hasonlít a logisztikus regresszióra ▹ ai(j) : i. egység aktivációja (értékszámítása) a j. rétegben ▹ θ(j) : súlymátrix a neuronok parametrizálására. Megmondja a j ↦ j+1. rétegbe vivő átmenetet.
Dimenziója:
, ahol sj a j. rétegben lévő neuronok száma
▹ Vektorizálva:
ahol a kimeneti réteg neuronja egyben a h(x) is
▹ Két réteg (pl. a(2) és a(3)) közti függvényleképezést egy másik paraméterhalmaz, a Θ(1) határozza meg
Ahelyet, hogy hozzá lenne kötve a bemeneti „x” változókhoz, az algoritmus saját maga tanulja meg az a(1) változóit és ezt adja be a következő réteg logisztikus regressziójának.
Jobb hipotézisfüggvény állhat elő mint az x-ek lineáris kombinációjával
Neurális hálók -
költségfüggvény
▸ Jelöléstan: ▹ L: az összes réteg száma ▹ sl : neuronok száma az l. rétegben (eltolássúly nélkül) ▹ K: kimeneti neuronok száma (= sL). Bináris osztályozásnál 1. ▹ (hθ(x))i : az ℝK kimeneti vektor i. eleme
▸ Költségfüggvény ▹ A logisztikus regressziós költségfüggvény általánosítása; a kimeneti neuronokat összeadjuk a k. indexben ▹
Neurális hálók -
hibavisszaterjesztés
▸ A 2..utolsó előti réteg neuron hibái: ▹
▸ Az utolsó réteg hibái vektorizálva: ▹
▸ A derivált költségfüggvény (regularizáció nélkül): ▹
Neurális hálók -
az algoritmus
▸ Θ véletlen inicializálása [-ε,ε] közöt (csak egyszer, a legelején) ▸ Δij(l) nullázása minden i, j, l-re (gyűjtő a parciális derivált számításhoz) ▸ i = 1..m-ig: ▹ a(1) = x(i) ▹ előrecsatolás alkalmazása az a(l)-ek számításhoz (l = 2..L) ▹ hiba-visszaterjesztés alkalmazása
δ(L) = a(L) - y(i) számítása (utolsó réteg hibája) többi réteg hibájának számítása (δ(L-1), … , δ(2)) ●
Az eltolássúlyhoz tartozó δ-knak nincs értelmük, eldobhatók
▹ Δ(l) := Δ(l) + δ(l+1) (a(l))T
▸ A parciális derivált számítása ▹
Support Vector Machines
▸ Nagy margójú osztályozó ▹ Néha a többinél tisztább vagy erősebb kifejezőkészséggel, kisebb erőforrásigénnyel
▸ Költségfüggvénye: ▹ ▹ Nagy C esetén, nullázot Σ-s tag mellet hozzáigazítjuk a döntési határt a különálló adatokhoz
▸ Hipotézisfüggvény újdonságai: ▹ A döntési határt a paramétervektor és egy új f jellemzővektor szorzatának összegéből számítja ki (nem pedig közvetlenül az x mintákból): ▹ Nem valószínűséget ad vissza, hanem 1-et vagy 0-t:
Support Vector Machines az algoritmus
▸ Referenciapontok (l – landmark points) meghatározása ▹ A minták (x(i)-k) helyén
▸ Hasonlósági f függvény meghatározása ▹ Adot x(i) és minden l közöt:
, ez jellemez egy tanítómintát Ha az adot x közel van egy i ref. ponthoz, akkor fi kb. 1 lesz x-nél, a többi helyen alacsony
▸ Betanítás a költségfüggvény minimalizálásával ▹ Ne magunk írjuk meg az algoritmust, használjunk előre elkészítet könyvtárakat (mint a libsvm és a liblinear)
▸ Új minta osztályozása (l. köv. dia)
Support Vector Machines új minta osztályozása
▸ Új minta adatai: ▹ A létező θ-k értékei: ▹ 1-et jósolunk, ha
▸ Két mintát szeretnénk osztályozni ▹ Magenta pont
▹ Kék pont
▸ Döntési határ megállapítása ▹ Mivel az l(1) és az l(2) közelében jósolunk 1-et, így a döntési határ is ezek körül van
Support Vector Machines kernelek
▸ Kernelek
▹ Gauss
Nagy σ2 : jellemzők simább változása (nagyobb bias) Kis σ2 : jellemzők gyorsabb változása (nagyobb variance) Jellemzőátlagolás kötelező:
▹ Polinomiális
Szinte mindig rosszabbul teljesít a Gauss-kernelnél
▹ String, Χ2, hisztogram metszet stb.
3 FELÜGYELT TANULÁS – TÚLTANULÁS Modellkiválasztás, regularizáció
Túltanulás
▸ Túl sok bemeneti változó és túl kevés tanítóadat esetén következik be ▹ Ilyenkor a modell nem tud jól általánosítani
▸ Megoldása: ▹ n csökkentése kézzel ▹ modellkiválasztás használata ▹ regularizáció használata
Modellkiválasztás
▸ Tíz különböző modell tíz különböző θ-t fog visszaadni a költségfüggvény minimalizálása után:
▸ A legjobb kiválasztása: ▹ Osszuk fel három részre a tanítóhalmazt
60%: eredeti tanítóhalmaz 20%: keresztvalidációs halmaz, amin kiválasztjuk a legjobb modellt ●
szükséges, hogy a teszthalmaz általánosítási hiba becslése ne legyen túl optimista (a paraméterek már ahhoz a teszthalmazhoz igazodnak)
20%: teszthalmaz, amin az általánosítási hibát ellenőrizzük
Alul- és túltanulás észrevétele a modelleknél
▸ Alultanulás esetén ▹ Jtrain magas ▹ Jkv ≈ Jtrain
▸ Túltanulás esetén ▹ Jtrain alacsony ▹ Jkv ≫ Jtrain
Regularizáció
▸ Az összes θ paramétert kicsire kell venni (nem csak azt, ami a túltanulást okozta) az egyszerűbb hipotézisfüggvényért ▸ Képlete a költségfüggvényben: ▹ j = 1-től indul; megállapodás szerint θ0-t nem büntetjük ▹ λ: regularizációs paraméter. Egyensúlyt tart a költségfüggvény Σ-ja és a regularizáció közöt. Nagyra választása esetén az összes paramétert kinullázza, és csak θ0 marad egyenes vonalként
▸ Normálegyenlet: ▹ Mindig invertálható
▸ Gradiens módszer:
Alul- és túltanulás észrevétele a
regularizációnál
▸ Alultanulás esetén ▹ Jtrain magas ▹ Jkv ≈ Jtrain
▸ Túltanulás esetén ▹ Jtrain alacsony (nincs regularizáció) ▹ Jkv ≫ Jtrain
Tanulási görbék alultanulás
▸ Alacsony „m” esetén az illeszkedés jó, Jtrain alacsony, de a keresztvalidáció költsége magas ▸ De az egyenes egy idő után nem tud jobban illeszkedni ▸ Így magas hiba mellett a költséggörbe kisimul ▹ Felesleges új tanítómintákat hozzáadni
Tanulási görbék túltanulás
▸ Alacsony „m” esetén az illeszkedés tökéletes, Jtrain alacsony és a túltanulás miat alig növekszik ▸ A keresztvalidáció költsége magas és lassan csökken, mert a modell nem tud általánosítani ▸ Megéri új tanítómintákat hozzáadni a kető közti rés folyamatos csökkenése miat
Mesterséges adatszintézis
▸ Alacsony „bias”-ú osztályozó javítása adatgenerálással ▸ Új tartalom gyártása ▹ Különböző karakterkészletű betűk háterekkel való ellátása és egy kissé elmosása
▸ Létező tartalom átalakítása ▹ Létező karakter torzítása (pl. PS warp) ▹ Tiszta beszédhangra zaj keverése (pl. építkezés, rossz vonal stb.)
▸ Értelmetlen, véletlenszerű zaj hozzáadása nem segít ▸ 1000 minta kézi címkézése vs. 1000 minta generálása? ▸ Az Amazon Mechanical Turk oldalon kézzel címkéznek minimális díjért cserébe
4 NEM FELÜGYELT TANULÁS K-közép, főkomponens analízis
K-közép (k-means)
▸ Csoportosító, klaszterező iteratív algoritmus ▸ Lépései (többszöri újraindítással a helyi optimumban ragadás elkerüléséért) : ▹ Véletlenszerűen inicializálunk K klaszter közepet (centroidot, μK) a tanítóhalmazból ▹ Klaszter-hozzárendelés: minden i. mintához meghatározzuk a centroidindexet, amelyikhez közelebb van: ▹ Középpont mozgatás : a centroidokat elmozgatjuk a hozzájuk tartozó pontok (c(i)) átlagába:
▸ Klaszterek számának meghatározása: ▹ Könyök módszer: ha látszik egyértelmű törés a K-költségfüggvény görbéjén ▹ Hierarchikus módszerrel megszámoljuk a klasztereket és megnézzük a középpontjukat a dendogramon, majd újrafutatjuk ezzel az információval a gyorsabb K-közép algoritmust
PCA Főkomponens analízis (Principal Component Analysis)
▸ Dimenziócsökkentő algoritmus SVD-vel ▹ Kapot bemenetek közti korreláció (összefüggések) csökkentésére ▹ Adatábrázolás lehetővé tételére ▹
▸ Cél egy egyenes (vektor) keresése a vetítéshez ▹ n → k dimenzió esetén k db vektor szükséges ▹ Erre, a k db u vektorral kifeszítet lineáris altérre vetítjük az adatainkat
▸ Nincs összefüggés a lin. regresszióval ▹ Ot a függőleges távot csökkentjük a pont és a hipotézis döntési határa közöt ▹ It pedig a legrövidebb távolságot
▸ Standardizálás szükséges minden esetben
PCA az algoritmus
1. Az u vektorok kiszámítása ▹ Kovariancia mátrix számítása:
v.
Később az SVD-ben a Σ lesz az M
▹ Σ sajátvektorainak kiszámítása SVD-vel, ahol az U (unitér, unitary) mátrix első k oszlopára lesz szükségünk:
2. Leképezés k dimenzióra ▹ Az előbbi U mátrix első k oszlopát transzponáljuk, majd beszorozzuk x(i)-vel a z(i) megszerzéséhez:
PCA egyéb
▸ Főkomponensek (k) számának kiválasztása ▹ Az SVD-ből visszakapot Σ diagonális mátrix átlója (σ i-k, szinguláris értékek) segítségével ▹ ▹ k = 1..n-ig végignézzük a fenti Σ-t, míg:
▸ Adatok visszaállítása tömörítet (z) változatból ▹ A pontos, távolságot is tartalmazó visszaállítás nem lehetséges így ▹
▸ Jó tanácsok
▹ Csak a tanítóhalmazon szabad betanítani, a másik ketőn csak futatni szabad a már meglévő Ureduced mátrixszal ▹ Ne használjuk túltanulás megelőzésére, mert információt (y) dob el
5 NEM FELÜGYELT TANULÁS Anomáliaérzékelés
Normális eloszlás
▸
(x normális eloszlást követ)
μ várható értékkel (mean) és
σ2 szórásnégyzetel (variance) ▹ A függvény alati terület 1, így a σ változtatásával a görbe keskenyebb és magasabb vagy laposabb és szélesebb lesz. A μ mutatja a harang középpontját.
▸ Paraméterbecslés (maximum likelihood, jelenlegi adathalmazra) : ▹ μ a minták közepe, így elég átlagolni: ▹ σ2 a minták, illetve a várható érték négyzetes különbségének átlaga:
▸ Sűrűségbecslés (egy x mintára) : ▹ p(x) modellezése, ahol xj az
minta j. jellemzője
▹ ▹ Minden μj és σj különböző várható értéket és szórást jelöl
Anomáliaérzékelés
▸ Funkciója ▹ Megállapítható, hogy a meglévő adathalmazba érkező új adat helyes-e
Pl. csalásfelderítés, számítógépek fgyelése, gyártástechnológia ellenőrzése
▸ Algoritmus
▹ Válasszuk ki azokat az xj jellemzőket, amik egy új minta anomáliáit jól jelezhetik ▹ Keressük meg a μ1..n és a σ21..n paramétereket ▹ Új mintánál számítsuk ki a p(x)-et ▹ Anomália, ha p(x) < ε. Ha kicsi, akkor a haranggörbe szélén helyezkedik el az új minta
▸ Betanítás (felügyelt tanulással)
▹ tanítóhalmaz: 6000 jó (y=0) [nincs rossz minta!] ▹ keresztvalidáció és teszthalmaz: [2×] 2000 jó (y=0) és 10 rossz (y=1) ▹ Úgy válasszunk ε-t, hogy a kv. halmaz F1 pontja a lehető legjobb legyen, majd ezt ellenőrizzük le a teszthalmazon is.
Nem Gausseloszlások, új változók
▸ Mindig jelenítsük meg az adatainkat, hogy normális eloszlást követnek-e ▸ Ha nem, akkor transzformálni kell őket, hogy haranggörbét kapjunk, úgy mint: ▹ ▹ ▹ ▹
▸ Mi történik, ha p(x) a rossz mintára is magas? ▹ Ilyenkor megnézzük, hogy az adot mintában mi volt a rossz, majd létrehozunk egy x2 jellemzőt, aminek az értéke ot lesz csak kiugró. ▹ Például kiugró CPU terhelés megelőzése annál a gépnél, ami sok hálózati forgalmat is generál:
Többváltozós normális eloszlás
▸
Nem külön modellezzük a p(x1..n) jellemzőket és szorozzuk össze őket, hanem egyszerre p(x)-et, ahol és a σ2-et kiterjesztjük a kovariancia mátrixra, ahol már nem csak kör alakú lehet a Gauss-forma ▹ és
▸ Paraméterbecslés (p(x) betanítása) : ▹ ▹
▸ Sűrűségbecslés (új x minta besorolása ; p(x) < ε) : ▹
▸ ▸
Az egyváltozós modell a többváltozós egyik speciális esete, aminél a kovariancia mátrixból hiányzik az alsó- és felső háromszög Számításigényesebb (az invertálás miat), de felismeri a jellemzők közti (negatív) korrelációt, így nem kell kézzel felvenni újakat
6 AJÁNLÓRENDSZEREK Felépítés, optimalizáció, vektorizált működés
Alapok
▸ Célunk olyan gépi tanulásos algoritmus megalkotása, ami a felhasználó eddigi preferenciáiból általa még nem értékelt terméket javasol neki
▸ Tartalomalapú ajánlórendszerek
▹
Minden flmhez felveszünk jellemzőket (x1, x2) (ezek kitöltésével kategorizáljuk őket), majd ennek paramétervektorát (θ) minden
▹ ▹
felhasználóhoz egyedileg hozzárendeljük. A θ kitöltését pl. egy lineáris regresszió is elvégezheti (l. később) Ezután a j. felhasználó i. flmértékelése csillag lesz Például Alice „Imádnivaló kiscicák” jóslása, ha θ (1)-et ismerjük korábbról:
Optimalizációs cél (a θ-k megtanulása)
▸ A θ(j) megtanulásához a következőt kell minimalizálni: ▹
ahol a zöld Σ jelenti a felhasználókon való végighaladást, a feketével írt csak egy felhasználóra vonatkozik Az ①-es Σ jelentése: minden olyan flmre (i-re), amit a felhasználó (j) már értékelt
▹ A gradiens módszerhez ennek deriváltja szükséges
Kollaboratív szűrés (az x-ek megtanulása)
▸ Az x(i)-k megtanulásához (az akár véletlenszerűen) kitöltöt θ(j) paramétervektorok szükségesek ▸ Az ehhez szükséges minimalizációs képlet: ▹
ahol piros szín jelöli a változásokat az előző, θ(j)-s képlethez képest: ● ● ●
most az x(i)-t minimalizáljuk, ez a cél; minden olyan felhasználón végiglépdelünk, aki már értékelte a flmet; és most az x(i)-vel regularizálunk
Úgy akarunk x(i)-t választani, hogy ● ●
① a j. felhasználóra jósolt értékelés (szintén az i. flmre) … ② ne legyen messze az y(i, j) valódi felhasználói értékeléstől
▹ Tehát minden felhasználóra, aki értékelte a flmet, az algoritmus mond egy értéket, hogy ő hogyan értékelte volna, ami nincs túl messze a valódi értékeléstől.
A teljes algoritmus
▸ Eddig meg tudtuk határozni x-ből és θ-ból is a másikat ( ), de valahol kezdeni kell ▹ Érdemes a θ-t véletlenszerűen inicializálni, majd folyamatosan iterálni: θ→x→θ→x→θ→x→…
▸ A korábbi két függvényt, (a folyamatos váltakozást) egybeírva: ▹
▸ A költségfüggvény deriváltjai (a minimalizáláshoz) : ▹ ▹
▸ Jóslás (a minimalizálás után) : ▹ A j. felhasználónál az i. flm értékelése:
Alacsony rangú mátrix faktorizáció,
▸ A jóslás gyorsítása vektorizálással ▹ Ha kiszámoljuk minden felhasználó minden flmjének jósolt osztályozását, az alábbi mátrixot kapjuk:
kapcsolódó termékek
Ennek (i, j)-edik eleme egyenlő
Tehát a mátrix pontosan az
-vel szorzataként áll elő
▸ Kapcsolódó termékek megtalálása ▹ Az x1,…, xn jellemzők (románc, akció stb.) valószínűleg nem lesznek az emberek számára könnyen érthetőek ▹ Ha az i. termékhez kapcsolódó j. terméket szeretnénk megtalálni, akkor csak a legkisebb távolságút kell kiválasztanunk:
Értékelés nélküli felhasználók
▸
Ha valaki nem értékelt még egy flmet sem, nála a költségfüggvényben az első Σ-s tag semmit nem tesz, a regularizációs tag minimuma pedig 0 lesz, ennélfogva az összes flmajánlása is.
▸ Átlag normalizálás ▹ Minden flmre kiszámoljuk az értékelések átlagát (μ i), amit a jósláskor hozzáadunk az eredményhez ▹ Hogy a többiek értéke ne változzon, levonjuk az Y-ból :
▹
Ezt az Y-μ mátrixot használjuk a θ és az x megtanulásához is
▹ Jósláskor ezt vissza kell adni:
Ha valaki még nem értékelt, akkor nála az első tag 0 lesz, így ő az átlagot fogja kapni
▹ Ha sorok hiányoznak (egy flm nincs értékelve egyáltalán), akkor érdemes azt a flmet nem felkínálni választásra
7 ALKALMAZÁS Szövegfelismerés csúszóablakkal
Szövegfelismerés lépései
1. Kép megszerzése 2. Szöveg helyzetének felismerése 3. Karakterszegmentáció 4. Karakterfelismerés 5. Nyelvtani, betűzési hibák javítása
Szöveghelyzet felismerése
1. Kis csúszóablakkal végigpásztázzuk a képet ▹ Az az előzetes betanítás után meg tudja mondani, hogy mekkora eséllyel tartalmaz szöveget az ablak
2. A valószínűségeket ábrázoljuk (fehér: nagy valószínűség) 3. A pár pixellel kiterjesztet területekből eldobjuk azokat, amik nem szövegre jellemzőek (pl. álló téglalap) 4. Karakterszegmentációt végzünk a felismert helyeken
Karakterszegmentáció
▸ Betanításkor y=1 minták azok legyenek, amik két félkaraktert ábrázolnak, szünetel köztük (mert ez jellemzi a két karakter közti középpontot)
▸ Felismeréskor egy 1D-s csúszóablakkal meghatározzuk a karakterek közti szünetek koordinátáit ▸ Ezek után már az egyedi karaktereket fel tudjuk ismerni egy karakterfelismerővel
GÉPI TANULÁS − MACHINE LEARNING Andrew Ng Machine Learning kurzusa alapján © 2016. Szőts Ákos