AutoML v.s. Catboost (colab有)
前説
今話題のAutoMLは,有名な"データサイエンティスト"よりも優秀なようです。
しかし,この比較にはmamas16k氏に盛大に突っ込まれてるように
roundsを!!!チューニングしない!!!
— まます (@mamas16k) 2019年5月23日
という問題があります*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を見て下さい。
また,学習には20分弱30分で,roundsが50006000くらいです。この圧倒的速さを最近流行の棒グラフで表現しました*4。
加えて先のAutoMLは12時間・一桁万円課金の結果らしいので,速度・精度・カネの3観点を総合してCatboostの圧倒的勝利といったところではないでしょうか。(今回のデータセットにかぎりますが)
追記:random seedを固定して学習しなおしたところ学習時間・roundsが増加しましたので訂正しました。またグラフも訂正しています。
追追記:DS界の井上尚弥ことonodera氏がワンパンしました。さすがGMです。
炎上マーケに釣られてみた。ノールックで0.861は出るので0.8705はちょっとアレhttps://t.co/KEwTF7OD4J
— onodera (@0verfit) 2019年5月24日
追追追記
この記事の動機と成果を、一部の人向けに書いておきます。
某JO氏はノーダメージ説を観測しましたが,プロダクトのポジショニング変更を余儀なくされているのでG社マーケ的にはダメージなはずです。
— atksh (@atksh1) 2019年5月24日
「専門家いらずで上出来」→「だれでもそこそこの精度」→「検証・改善にMLエンジニアやDSが若干名必要」
※若干名いればAutoMLの精度上回るから意義なくね? pic.twitter.com/bW6eY8smpR
私はただ「専門家いらずで上出来」という主張を見て言い過ぎなのではと思い検証して記事を書いただけです。
— atksh (@atksh1) 2019年5月24日
実は中にいても完全な詳細は知らされていないので、今後どうなるかはPMへのリクエスト次第という部分もあります(今回バズったのはPMも気付いたらしく問い合わせのメールが飛んできました笑)
— TJO (@TJO_datasci) 2019年5月24日
中の人にご迷惑をおかけしたみたいですね。