3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

2019 Data Science Bowl まとめ

3
Posted at

はじめに

やっとテストが終わったので、DataScienceBowl2019の簡単なアウトプットでもしようと思います。今更だとは思いますが、初めてのコンペで、せっかく参加したので復習しようと思いました。

正直な話、初めてのコンペで手も足も出なかったので、上位入賞者の手法を簡単にまとめていきます。
まだまだ若輩者でおかしなところもあると思いますが、何かございましたら是非ご指摘お願いします。

※現在は2位までしかまとめていませんが、時間があればもう少し追加でまとめたいと思ってます。

コンペの詳細

  • 10/24-1/23の間に開催されたコンペ
  • 児童用教育ゲームのログデータの分析
  • ゲームの最後にテストが用意されており、何回目の思考でそれをクリアするかを予測

1st place solution

summary

マルチシードの5Foldに基づくLightGBMのシングルモデル
private score: 0.568
public score: 0.563

Validation

初期の段階で、LBが不安定で local cv との相関が小さかったため local cv のみに着目することにした。
以下の2つの validation set を使用

  • GroupK CV
    • installation_idを5分割を5回
    • 格分割で異なる列順序とseed値を使用
    • qwkは安定しなかったので重み付きrmseを使用
  • Nested CV
    • GroupK CV が直感に反するような結果の時に使用
    • 全データを使用した1400のユーザデータをtrainに、一部のデータを打ち切った2200のユーザデータをtest に使用
    • 50〜100回繰り返して平均スコアをとる

Feature Engineering

およそ2万個の特徴量を作成して、null importancesを利用して500個の特徴量を選択。

  1. 多くの統計量。おなじassessmentか似たようなゲームに基づくものが特に重要だった。(ゲームが対応する同様のassessmentにマッピング)
  2. 履歴データを部分的に取り出して特徴量を作成。
    1. 全履歴
    2. 最後の5/12/48時間
    3. 前回のassessmentから現在まで
  3. 現在のイベントと次のイベントのインターバル。mean/lastをeventid/eventcodeでグルーピングして算出。いくつかはとても有効であった。
  4. clip event interval / clip length により算出した video skip 特徴量。
  5. event data に関する特徴量。eventid / eventcode の組み合わせの統計量から作成。

Feature Selection

  1. 重複した特徴量の削除
  2. adversarial AUC が0.5になるように adversarial validation
  3. null importances

Model

  1. すべてのデータを使って学習
  2. trainにはrmseを、validationには加重平均rmseを使用
  3. Optimizer Rounderを使って weighted qwk の閾値を調整
  4. 08lightgbm+0.2catboost の簡単なブレンディングを行ったが、local cv がよくなかったので最終モデルには使用していない

2nd place splution

summary

LightGBM, CatBoost, NN のアンサンブルモデル
public score: 0.563
private score: 0.563

Feature Engineering

  • Word2Vec の利用
    • assessment までの title の流れを文章と捉えて Word2Vec でベクトル化
    • 各統計量を計算
  • Historical feature
    • session, world, types, title, event_id, event_code の履歴データをワールド別、または全ワールドごとにカウント
    • event_round, game_time, event_count の履歴データの Count, mean, max を計算
  • Decayed historical feature
    • title, type, world, event_id, event_code について履歴データの減衰してカウント
    • session ごとに半減
  • Density of historical feature
    • title, type, world, event_id, event_code の履歴データの密度を計算
    • 各カウントを初起動日からの経過に数で割る
  • Lagged Assessment
    • num_correct, num_incorrect, accuracy, accuracy_group の統計量を計算
    • 過去のassessmentからの経過時間を計算
  • Meta Features
    • 各titleのassessmentごとの評価を特徴量として追加
    • それを予測して、その結果を新たに特徴量として追加
    inbox_1846168_f8052d17308d8f21c32d010382ae1150_2020-01-24 0.07.44.png

Feature Selection

  • 重複したカラムを削除
  • 相関がつよい特徴量を削除(0.99以上)
  • 最終的に null importance で上位300のものを選択

Model

  • validation用に1ユーザー辺り、1サンプルになるようにリサンプリング
  • StratifiedGroupKFold(5Fold)
  • RSA (5 random seed) of LGB, CB, and NN
  • 0.5 * LGB + 0.2 * CB + 0.3 * NN でアンサンブル
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?