洋食の日記

「だ・である」調ではなく「です・ます」調で書きはじめれば良かったなと後悔してる人のブログです

SVMKitのLogistic Regressionの勾配計算に間違いがあったので修正した

はじめに

SVMKitのSVMKit::LinearModel::LogisticRegressionの勾配計算に間違いがあったので修正して0.2.8としてリリースした。

svmkit | RubyGems.org | your community gem host

0.2.8では、与えられたパラメータのチェックなどの細かな部分を補うことを予定していた。そのチェックを兼ねて実データで実験していて間違いに気づいた。

反省

SVMKitでは、基本的に各クラスにspecを用意していて、coverallsでcoverageも100%となっている。学習アルゴリズムの確認には、toydataとも言えるシンプルな合成データを用いていて、LogisticRegressionのspecでも、正しく分類できていた。今回、偶然に試した、手書き数字画像データの分類で、LogisticRegressionを用いた場合のAccuracyが、SVMKit::LinearModel::SVCのAccuracyと比較して30%も低かったことで気づくことができた。今後は、アルゴリズムを追加した場合は、実データでの交差検定で動作を確認していきたい。

おわりに

0.2.8では、予定通り、パラメータのチェックもくわえた。例えば、サンプルはNumo::DFloatの行列、ラベルはNumo::Int32のベクトルで与えないとTypeErrorをraiseする。

つまらないものですが、よろしくお願い致します。