this dir | view | cards | source | edit | dark
top
Kernelové metody
- chtěli bychom mít model s polynomiálními features 0. až 3. řádu → měl by O(D3) vah
- pro jednoduchost uvažujeme situaci, kdy x1x2 a x2x1 jsou dvě různé features
- váhy jsou ale lineárními kombinacemi trénovacích dat
- nebudeme si pamatovat váhy, nýbrž koeficienty lineární kombinace
- pro každý řádek dat xi vytrénujeme koeficient βi
- těch je O(N), což může být méně než O(D3)
- tomu se říká duální formulace (místo vah máme koeficienty)
- v duální formulaci se s biasem obvykle zachází samostatně
- při trénování spolu musíme často násobit φ(xi)Tφ(xj) pro dvojice řádků trénovacích dat, takže si tyto hodnoty předpočítáme do matice K
- φ je zobrazení, které řádku dat přiřazuje polynomiální features
- v rámci trénování se těchto výpočtů provede O(N2) – každý s každým, ukládáme do K
- při predikci musíme predikovaný řádek z pronásobit s N řádky trénovacích dat (jeden z nich označíme jako x)
- kdybychom vektory φ(x)Tφ(z) násobili po složkách, tak to trvá dlouho – těch složek je O(D3)
- ale lze si všimnout toho, že φ(x)Tφ(z)=1+xTz+(xTz)2+(xTz)3
- takže ten skalární součin spočítáme v O(D)
- ani nemusíme vyrobit ty polynomiální features
- součinu těch features se říká kernel – je to funkce, které dám dva vektory a ona mi vyrobí součin features těch vektorů: K(x,z)=φ(x)Tφ(z)
- už jsme si ukázali kernel pro kubické features
- kernely
- polynomiální kernel stupně d (homogenní polynomiální kernel)
- vyrábí kombinace d vstupních features
- K(x,z)=(γxTz)d
- γ je hyperparametr, který škáluje features
- polynomiální kernel stupně nejvýše d (nehomogenní polynomiální kernel)
- K(x,z)=(γxTz+1)d
- Gaussian Radial basis function (RBF) kernel
- obsahuje polynomiální features všech řádů
- K(x,z)=e−γ∥x−z∥2
- je to funkce vzdálenosti
- pro stejné vektory vrací jedničku, pro hodně vzdálené vektory vrací nulu, pro ostatní něco mezi tím
- dá se to interpretovat jako rozšířenou verzi algoritmu k nejbližších sousedů (k-NN)
- γ ovlivňuje, co už je „moc daleko“
SVM
- jdeme dělat binární klasifikaci
- nelíbilo se nám, když perceptron našel špatnou nadrovinu (blízko k bodům)
- jdeme hledat takovou nadrovinu, aby trénovací data byla co nejdál (maximum margin)
- targety nechť jsou ∈{−1,1} jako u perceptronu
- chceme maximalizovat šířku marginu (= minimalizovat velikost vah) za podmínky, že každý prvek je na správné straně
- abychom mohli jednoduše minimalizovat velikost vah, použili jsme trik, že pro body nejbližší k decision boundary bude platit tiy(xi)=1 (škálování je totiž na nás)
- použijeme lagrangián
- díky KKT podmínkám víme, že nás při maximalizaci lagrangiánu zajímají jenom některá trénovací data – ta, která leží na okraji (support vektory)
- je tam podmínka ai(tiy(xi)−1)=0
- z toho vyplývá, že pro každé xi platí tiy(xi)=1 (bod je na marginu) nebo ai=0 (bod se nepoužívá k predikci)
- hard-margin SVMs se používá pro lineárně separabilní data
- pro lineárně neseparabilní data potřebujeme soft-margin SVM
- dovolíme některým bodům, aby porušily pravidlo (aby byly uvnitř marginu nebo na opačné straně decision boundary)
- pořídíme si slack variables ξi≥0
- pro body, které porušují tiy(xi)≥1 bude platit ξi=∣ti−y(xi)∣
- jinak ξi=0
- takže podmínku tiy(xi)≥1 nahradíme tiy(xi)≥1−ξi
- do lagrangiánu musíme přidat další multiplikátory, které zajistí nezápornost ξi
- lagrangián bude stejný jako minule, akorát ai budou omezeny shora nějakým C
- support vektory teďka nebudou jenom body na okrajích marginu, ale i všechny, které mají kladné ξi (jsou divné)
- pozorování: ξi=max(0,1−tiy(xi))
- téhle funkci se říká hinge loss
- soft-margin SVM lze vlastně formulovat jako argminw,bC∑iLhinge(ti,y(xi))+21∥w∥2
- to nám hodně připomíná klasický vzorec pro logistickou regresi apod.
- akorát místo regularizační konstanty λ tady máme C, které hraje opačnou roli (čím větší C, tím slabší regularizace)
- k trénování se používá sequential minimal optimization
- bereme řádky po jednom, k tomu ai, náhodně aj a taky bias, postupně zlepšujeme lagrangián
- klasifikace do více tříd
- kombinujeme několik binárních klasifikátorů
- one-versus-rest (ovr) schéma
- natrénuju K nezávislých binárních klasifikátorů (patří prvek konkrétní třídě? ano/ne)
- při predikci vyberu třídu, které její klasifikátor přisuzuje největší pravděpodobnost
- je potřeba klasifikátory kalibrovat, aby se ty pravděpodobnosti daly porovnávat!
- takhle se to v SVM nedělá
- one-versus-one schéma
- klasifikátor na každou dvojici tříd, které existují
- většinové hlasování (každý klasifikátor hlasuje pro jednu třídu)
- klasifikátorů je víc, ale trénujeme je na méně datech