ベンチマーク用に必要になった.手元のデータをRの実装で試そうにもメモリを20Gほど食うばかりで学習が終わらなかったので自分用にC++で書いた.
学習にはSGDを使っている.そこそこの時間で回るので今後も定期的に使いたい.
疑問としては,L1/L2正則化を全く行なっていないけれどもロジスティック回帰では通常行われるものなのかどうかがよくわかっていない.
Multi-Class Logistic Regression Using SGD. · GitHub
入力データは以下のようなtab区切りテキストを用意して a.out train ./doc.tsv ./doc.model とやれば学習,./a.out predict ./doc.tsv ./doc.model ./doc.result とやれば予測ができる.
setosa Sepal.Length:5.1 Sepal.Width:3.5 Petal.Length:1.4 Petal.Width:0.2 versicolor Sepal.Length:5.7 Sepal.Width:2.8 Petal.Length:4.1 Petal.Width:1.3 virginica Sepal.Length:6.3 Sepal.Width:3.3 Petal.Length:6 Petal.Width:2.5
(今ははてなブログで綺麗なtexが表示されるようになってしまったけど)はてなダイアリーのtex記法をgoogle chart apiに変換するスクリプトや,二年ぐらい前に書いたLDA(ハイパーパラメータを不動点反復で最適化していないお粗末なものだけど),しょぼいカレンダーのクローラなどは未だに使っているので,こういう細々したのを書き溜めて必要な時に使えるようにしたい.