SIGNATEで開催されていたソニーグループ合同 データ分析コンペティション(for Recruiting)に参加してきました。
結果は835人中84位で上位10%くらいでしょうか。20位までsony製品の賞品が出るコンペだったので商品に手が届かず悔しいです。
内容
待機観測データ等を用いてpm25の値を予測するコンペです。細かい概要とデータについてはコンペサイトに記載されています。
trainとtestは都市ごとに分かれていること、3年分だが計測に欠損はたくさんある(1000日分くらいデータが有る都市もあれば殆どない都市もある)ことが特徴に思いました
取り組みと解法
前処理
- Trainから測定してるけど0のデータの削除
CV
- TestはTrainに無い都市のためCity毎でFold
特徴量
- 数値特徴量が多かったので機械的に特徴量を増やさず意味の有りそうなものを作成
- 国と年、月などを組み合わせたカテゴリー作成
- 近傍都市情報
- lagやdiff
- 集約やターゲットエンコード
- 国+年月のターゲットエンコーディングや、近傍都市のターゲット情報は特に有効だった
モデル
- 序盤はLightGBMシングルで特徴量作成メイン
- 最終的にLGBM,XGB,catboost、MLP,1DCNNの5種類を使用
- Deepモデルは欠損は補完しなければいけなくlagや近傍とし情報は欠損が多いためmeanで補完するだけではGBDTよりもスコアで劣った。
- ただし有効な特徴量の傾向が少し違い、1DCNNはとくにGBDTモデルとアンサンブルが効いた。
stacking
- ある程度有効だった
- 都市関係なくKFoldで学習
全データで学習
- どんなSeedでFoldをきってもscoreが悪いFoldがあった(=予測が難しい都市がある)
- 全データで学習するとCVはわからなくなるがLBは向上した。
- もともとCVとLBの相関はある程度取れていたためLBが改善するならいいやと判断した
失敗談
- ずっとラベルを対数とっていたが対数撮るのをやめたらスコアがかなり良くなった。
- 特に制度が悪いインド中国にとっかしていい制度が出るモデルを作ろうと思ったがダメだった
解法図
train on all data部分のアンサンブルでpublic20.695147くらい。スタッキングを合わせてpublic20.6833303
感想
今回の他の参加者のソリューションを見るとまだまだ特徴量でどうにかできたみたいです。ポツポツとモデルを改善できる特徴量は作れていましたがまだまだ足りなかったということで少し追加で実験してみようと思います。題材に関してもせっかくだからpm2.5についてもう少し勉強していい特徴量を作ってみたかったと公開しています。
また、今回参加した理由は商品もありますがテーブルデータのコード遺産を増やすという目標がありました。現状散らかった状態ですがそれなりに色々実装したのこっち進捗はあったので整理して今後のコンペに活用していけるようにしたいと思います。
また次のコンペ頑張ります!