Soft Confidence Weightedも書いてみた

CW(Confidence Weighted)を実装したので調子に乗ってSCW(Soft Confidence Weighted)も書いてみた。
SCWには1と2があって、それぞれL1,L2正則化っぽい感じのことをしている。今回はSCW1を実装した。
またCWは学習時に使う共分散行列が対角成分しかなかったのだが、SCWは対角成分以外にも値が入ってくるので取りうる特徴量が多い場合はなんらかの工夫が必要かも。

https://github.com/echizentm/ConfidenceWeighted


test.plの最後でRGBそれぞれの重みをダンプした。scwのほうが重みが控えめになっているっぽい。

$$ perl test.pl 0.7 cw 1 3 < colors.csv 
update: 1,255 0 0
update: -1,0 255 0
update: -1,0 0 255
update: -1,0 255 255
update: 1,255 0 255
update: 1,255 255 0
classify: 1,255 0 0
classify: -1,0 255 0
classify: -1,0 0 255
classify: -1,0 255 255
classify: 1,255 0 255
classify: 1,255 255 0
$VAR1 = [
          '1.38449968592977',
          '-0.569744439069359',
          '-0.493665917624053'
        ];

$$ perl test.pl 0.7 scw 1 3 < colors.csv 
update: 1,255 0 0
update: -1,0 255 0
update: -1,0 0 255
update: -1,0 255 255
update: 1,255 0 255
update: 1,255 255 0
classify: 1,255 0 0
classify: -1,0 255 0
classify: -1,0 0 255
classify: -1,0 255 255
classify: 1,255 0 255
classify: 1,255 255 0
$VAR1 = [
          '0.900076122812987',
          '-0.302082751656195',
          '-0.19109406702321'
        ];