Kaggleについて

テーブルデータをNNで解く

タイトル通りです。ottoコンペ進めていきます。

ottoコンペ 1 week challenge奮闘記録https://www.kaggle.com/c/otto-group-product-classification-challenge...

上の記事ではLightGBMのモデルを用いていましたが、そろそろNNでも試してみようかなという感じでTensorFlowを用いたNNモデルを作ってみようと思います。

修正:PCA

PCAを追加したところでなぜかスコアが落ちる問題についてcashさんがnotebookを公開してくれました。

hoxosh_Problem with PCA

どうやらconcatで事故ったらしいです。

df = pd.concat([df.reset_index(drop=True), df_pca.reset_index(drop=True)], axis=1)

ここです。indexが噛み合わないとくっつかないっぽいです。

スコアが0.56!!!!

そしたらUMAPも入れてみます

0.55切りました!!!!コレは来た!!!!

とりあえずbaseline

TF 2.1を使っています。

せっかくなのでTF Boardも使ってみました。

modelは単純にDense層を積み重ねたものにDropoutをはめました。

ユニット数はまだ何が良いのかわかりませんが、いつかチューニングでもしようと思います。

バッチサイズを10000にしたらlossが全然下がらなかったのでバッチサイズは256くらいにしています。(コードでは126だが)

精度はあまりよくありません。accはそんなに気にしなくていい(評価指標がloglossなので)のでlossを見てほしいのですが、valがあまり下がっていないのと、1を切ってないものが多いので不安です。

提出してみたら

この通り、0.66は出ました。微妙ですが、思ったよりも良かったです。

改善

NN初心者なのでベースラインが作れてもそこから何をすればよいのか検討すらつきません。Kaggler-jaやTwitterで質問したらNN強者の人たちから「経験則だから勘」に近い答えが返ってきたのでそういうことだと思います。

色々試してみてNNの勘を磨き上げたいですw

層を増やしてみる

とりあえず3層→6層

validation lossが下がってませんね……でもスコアは前と変わってません。

ユニット数を下げてみる

行きましょう

変わらん……限界ではないだろ……まだ……

BatchNormalization投下

Denseの下

はい。しかし、ここで一つ大きな変化がありました。

何でしょう?

validation_lossが0.66台になったことです。今までは発散してて0.6にはなっていませんでした。(いわゆるcvとLBの差が(ry)

ここでようやくLBと合ってきました。CVを信用できるようになってきました。

とりあえず層たくさん作っとけwww

ノリです。

なぜ……LBの変化が小さいんだ……

activation追加してみる

忘れてた  1個前と同じモデルでやります。

activation=”relu”です。

何使えば良いのかわからないのでポピュラーなものを使いました。

はい。Lossは裏切らない。来たァァァァ!!!!ようやく0.6切れました。ReLU偉大すぎる。

駄目だったPCAを入れてみる

前ゴミみたいな精度出たPCAを追加してみます。LGBMが対応してないだけでNNが対応してる説もあるので(知らんけど)

モデルはactivation追加と同じです。

あw まぁそういうことですw

 

とりあえず

もう少し粘って0.5切れたらLGBMとアンサンブルしてみます。

んー 案外むずかしいなこのコンペ……

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です