mots quotidiens. | |
Daichi Mochihashi (持橋大地) daichi <at> ism.ac.jp | by hns, version 2.10-pl1. |
|
|||||||||||||||||||||||||||||||||||||||||||||||||
ガンマ一般化線形モデルは, 以下のようなモデルです。
普通, 言語処理などでは次のようなデータファイルを使って
1 w0|の p0|助詞 w-1:家 p-1|名詞 0 w0|人 p0|名詞 w-1:の p-1|助詞先頭の二値の観測値をSVMやロジスティック回帰で予測します。しかし, この観測値が 0/1ではなく, 0以上の実数である場合も普通にありえます。
y feature_1 feature_2 feature_3 .. feature_nのようなデータファイルに対して動きます。yは任意の正の実数です。
ガンマ一般化線形モデルはRの glm() で推定できるような気がしてしまいますが, パラメータ w に対して凸ではないため, Webで例にあるような説明変数の数が たかだか1個か2個の場合ではなく, 何百, 何千とある場合はまともに動きません (のはず)。実際, 微分を計算して L-BFGS で最適化するプログラムを最初書いたところ, すぐ局所解にはまってしまい, 変数の数が増えると結果がほとんど0になるなど, 使いものにならない結果となることがわかりました。
このため, 上の gamglm では, 地道なランダムウォークMCMCでパラメータを推定して
います。ただし, 特徴の数が数千を超えると尤度の計算が非常に遅くなるため,
特徴が多くの場合疎であることを利用して, 現在更新する特徴が現れているデータ
だけを利用してMetropolis-Hastingsの尤度計算をする, ということをしています。
やっていることは簡単ですが, 効率的に実装するには結構時間もかかり,
一般的な問題でもあるので, 公開することにしました。
SVMのようなデータで正の実数を回帰するプログラムとして, 使われることがあれば
よいなと思っています。
タイトル一覧 |