(1)python中1和l慨亲,有時(shí)容易弄混
(2)svm中根據(jù)kkt條件來選擇α瞻赶,通過目標(biāo)函數(shù)(其他α固定好后就是一個(gè)一元二次方程)來優(yōu)化。
(3)先選出還沒達(dá)到kkt條件的a1,因?yàn)閍1更新公式為a1+(yi(e1-e2))/η。η=k(x1,x1)+k(x2,x2)-2(x1,x2)所以按|e1-e2|最大的那個(gè)a2去選這個(gè)a2缘揪。a1算出來之后還要進(jìn)行修剪,在按那個(gè)和為o更新a2义桂。每次更新一組a之后要更新下b找筝,因?yàn)閍求解與e有關(guān),e的計(jì)算又和b有關(guān)慷吊,所以每次都要更新以下b袖裕。(更正:這樣理解不太好,因?yàn)橐部梢杂贸跏蓟哪莻€(gè)b罢浇,最后全部算完后再更新b陆赋,這樣也能算沐祷。但是主要是因?yàn)槊看我M(jìn)行kkt條件判斷嚷闭,判斷a與yi*ui=1之間的關(guān)系,從而判斷這個(gè)點(diǎn)有沒有達(dá)到kkt條件赖临,每次更新都設(shè)計(jì)ui的更新胞锰,而ui更新又需要更新b,所以每次都要更新b)
(4)svm中b的更新方法兢榨,若更新后的有一個(gè)a在0到c之間嗅榕,那么,這個(gè)就是支持向量吵聪,滿足y(wx+b)=1,兩邊同時(shí)乘以y得到wx+b=y(因?yàn)閥的值只取-1或1),w由所有的xiyiai求和得到部默,這里使用更新后的那一對a绒怨,帶入得到b的更新,b=y-wx块攒,w是更新后的w励稳。哎,這個(gè)b的更新想了整整兩天才想到囱井,哎驹尼,,庞呕,若這對ai和aj不在0到c之間新翎,那么算出它對應(yīng)的兩個(gè)b,更新的b值取這兩個(gè)b的中間值。