Re:ゼロから始めるML生活

どちらかといえばエミリア派です

TabMの使い方のメモ

軽めのネタです。

ちょっと前にCMIコンペに出てまして、そこでテーブルデータに大してNNを適用させる実験をしていました。

www.nogawanogawa.com

この実験で色々試しているときに、なにやら別のコンペでTabMというNNの手法が効いたという話を耳にしたのでCMIコンペでも試してみました。 CMIコンペも終わったので、今回はそのTabMを試しに使ってみたときのメモを放流しようと思います。

TabM?

TabMの論文はこちらに公開されています。

arxiv.org

TabMという手法はDNNの構造ではなく、パラメータ効率の良いアンサンブルを行う手法を指します。 詳しくは論文を読んでほしいんですが、ざっくり言うとNNでGBDTでやっているアンサンブルを参考にしてNNでもアンサンブルを行う手法です。

https://arxiv.org/abs/2410.24210 より引用

複数のモデルをつくることになるんですが、このときの途中のレイヤーの重みを複数モデルで共有したりするのがTabMのポイントみたいですね。

論文によれば、TabMを使うことで表形式データに対して効率よく高い精度を達成できるようになったようです。

やってみる

要するにNNの学習時に効率よくアンサンブル学習していく手法ってことしかわかってませんが、習うより慣れろってことで使ってみたいと思います。

colabで動くようなサンプルコードが公開されてなかったので、今回手作業で書いてみました。 こんな感じで動くと思います。

kaggle で使うとき

pipでインストールして使えるようにはなっていないので、kaggleで使うときにはこんな感じで使えるらしいです。

www.kaggle.com

www.kaggle.com

感想

以上、直近(主にkaggleで)使う機会があったので書いてみました。

どうせそのうち使いやすい形式で誰かが公開してくれると思いますので、それまでの暫定対応ですがなんとか動かす方法を調べてみた次第です。 (誰かやってほしい…)

論文によれば(多分うまいこと使えれば)性能は高くなるらしいので今後なんかで必要になりそうなときは使ってみたいと思いました。