読者です 読者をやめる 読者になる 読者になる

GBDT(scikit-learn) で特徴量抽出したかった話

ADKDD2014 の Facebook や Kaggle の 3 idiots solution で使われている,
GBDT を使って特徴量抽出(次元削減)するような方法です


やっぱり python 界から外に出たくないよね,
ということで scikit-learn(v0.15.x) 内で解決する

gbdt_embedding.py


というわけで,下記のように実行され,それっぽい結果が得られます

 $ python gbdt.py a1a 10 2
[[3 3 2 ..., 2 3 2]
 [5 5 5 ..., 6 5 6]
 [5 5 5 ..., 6 5 6]
 ..., 
 [2 2 3 ..., 3 2 5]
 [2 2 3 ..., 3 2 5]
 [2 2 3 ..., 3 2 5]]
(1605, 10)

これで python 界から外にでないで済みました


ちなみに,Factorization Machine の python バインディングもあるので,
これを使えば 3 idiots solution を自分で実装する際にも,python 界から出ずに済みます

coreylynch/pyFM · GitHub


ただ1つ残念な点をあげると,正則化係数っぽいものを0にしているので,
なんか上手く動かないというところでしょうか...

参照 https://github.com/coreylynch/pyFM/blob/master/pylibfm.py#L88-91