AutoML v.s. Catboost (colab有)

前説

tjo.hatenablog.com

今話題のAutoMLは,有名な"データサイエンティスト"よりも優秀なようです。

しかし,この比較にはmamas16k氏に盛大に突っ込まれてるように

という問題があります*1。これでは,天下のGoogle様が開発されたAutoMLが役不足ではないでしょうか。

チューニングをミスっているXgboost相手でデモンストレーションするのではなく,どうせならXgboost・LightGBMに続く最新の第3世代*2GBDT系のMLライブラリ Catboost を相手にやりましょう!

スコア比較(低い方が良い)

AutoML:0.8634979

TJO氏のブログからの引用です。

rmse(pred$shares, test$shares)
[1] 0.8634979

Xgboostでも勝てなかったこのAutoMLのスコアに,果たしてCatboostは敵うのでしょうか・・・

Catboost:0.8625799

あ,勝っちゃいましたね。

pred = model.predict(test_X)
np.sqrt(mean_squared_error(pred, test_y))
> 0.8625798651724433

でもこれ,前処理としてダミー変数をカテゴリカル変数に戻して*3,後はCatBoostRegressorに突っ込んだだけです。 ハイパラもoptunaやベイズなんちゃらは使わずに,完全感覚チューニングlr=0.01, depth=8, l2_leaf_reg=30と適当です。

詳しくは以下のcolabを見て下さい

colab.research.google.com

また,学習には20分弱30分で,roundsが50006000くらいです。この圧倒的速さを最近流行の棒グラフで表現しました*4

f:id:atksh:20190524120208j:plain
AutoMLとCatboostの学習時間の比較

加えて先のAutoMLは12時間・一桁万円課金の結果らしいので,速度・精度・カネの3観点を総合してCatboostの圧倒的勝利といったところではないでしょうか。(今回のデータセットにかぎりますが)


追記:random seedを固定して学習しなおしたところ学習時間・roundsが増加しましたので訂正しました。またグラフも訂正しています。


追追記:DS界の井上尚弥ことonodera氏がワンパンしました。さすがGMです。


追追追記

この記事の動機と成果を、一部の人向けに書いておきます。

中の人にご迷惑をおかけしたみたいですね。

*1:指摘に気づいてやり直したみたいですが,なぜかスコアは悪化しています。

*2:勝手に名づけた

*3:Catboostのドキュメントがonehotにはしないでねって言ってるのでそれだけやりました。

*4:厳密には、私がおこなったチューニング時間を足す必要がありますが。