5th Place Solution (Team: ImaiChannel | nozomi & sooooma yabea& sngyo)
Overview
シンプルなタスクながら,マルチモーダルで面白いコンペの開催をありがとうございました.また,参加者の皆様およびチームメイトとして励んできたnozomi, sooooma, yabeaに感謝申し上げます.以下,箇条書きにて失礼します.
public 9th (PublicLB: 0.722, PrivateLB: 0.709, CV: 0.706), private 5th (PublicLB: 0.725, PrivateLB: 0.706, CV: 0.704)
- publicLBがCVとどんどん乖離していくのがコンペ中かなり苦しかったが Trust your CV できてよかった.
コードにつきましては後日アップするかもしれませんが,かなり煩雑になってしまっているので現在のところ公開予定はありません.
Feature Engineering
likes
* dislikes
系の特徴量がかなり強く効いていたので積を中心にlogをとったりその他の特徴量 (e.x. comment_count
)と混ぜるなどして色々と作成
channelId
, categoryId
, 分割したtag
ごとに1で作成した特徴量を集計した統計特徴量を大量に生成
description
の長さなどをモデルがよく利用していたため,クリーニングをかけて余計な記号・絵文字・リンクを消す,日本語の場合実際の文字数を2.5倍した値を用いて英語との差を埋めるなどの工夫が効いた
title
をトークンに分割してトークンごとに1で作成した特徴量を集計した特徴量を最終日に追加してCV・LBともに約0.003伸びた.もっと早く思いついていれば更に特徴量を生成することができたのでスコアをより伸ばせた可能性がある.(日本語と英語が基本的に多かったのでその他の言語については無視した.)
Feature Selection
- Permutation Importance
- 総計2000以上の特徴量から逐次絞りつつ進め,最終モデルではPermutaion Importance上位300個を使用
- null importanceも試したが,CVが悪化したため却下
- Adversarial Validationを調べても特に悪影響を及ぼしているような特徴量は見られなかった
Modeling
- 再生回数に対するStartified-10-Fold -> 5 Random Seed Average
- 最終的には LGB 60% Catboost 40%モデル, LGB 50% Catboost 50%モデル,LGB 30% Catboost 45% XGB 25%モデルの異なる特徴量を使用した3モデルをCVベースでアンサンブルしたものが最も良かった
- 画像特徴量の作成や,NNの学習にかなり時間を割いたが,残念ながらあまり精度に寄与するものは生成できず,結果として比較的通常のテーブルデータ特徴量を勾配Boosting木モデルで扱う結果となってしまいました.特に画像特徴量で成功されている方がいらっしゃればぜひ知見を共有してもらえるとありがたいです.
- 試した画像特徴量例: ResNetを用いたクラスタリング,
likes
系の特徴量予測モデル --> PCAなどによる次元削減
- NN: 50個の特徴量を読み込ませる多層パーセプトロンモデルを作成したがLGB系とのCV差が大きすぎて断念
- TargetEncode系は全く上手くいかなかった
- meta情報になると考え使用しなかったが,動画の長さなどは再生回数に影響しそう
詳細が気になる箇所や,不明瞭な箇所がございましたらコメントいただければと思います.