DSB2019 7th solution まとめ

はじめに

DSB2019の7th place solutionまとめました。

結論

  • 情報が少ない感じするけど、かなり王道のやり方をしている気がする。
    • ドメインを調べて、それにあった特徴量作成を頑張っている。
    • 特徴量数が少なく、かなりシンプルにしている感じがする。(そう心掛けているよう)

以下、solutionまとめ

  • 一時ソース
  • * 以下、拙訳ですので気になるところは1次ソースを見てね。

Approach

  • 自分にとって最もよかったのは、feature engineeringでした。最終的に、150から削り、51 featuresを用いました。
  • 効果の高かったfeaturesはそれぞれのAssessmentの分布を基にしたものです。しかし、これらはみなが用いていました。small dataが与えられた個々のfeatureは、それほど重要でないが、これらが勝敗を決めたと考えます。
  • 最終的なensembleモデル: 0.3 LGB, 0.3 CATB, 0.4 NN
  • 全てのモデルで20 fold-baggingをしました。NNでは加えて、seed averagingもしました。

    • *20 foldもすることあるんだな...。
  • 学習時に、サンプルとして、test setから、assessment を用いた。

    • training sampleの数を増やす方法を探した。
    • 特に、private LBにあるchildren(install_id)のdataを追加しました。

Results

  • Truncated CV: 0.575
  • Private LB: 0.559
  • Public LB: 0.559

Validation setup

  • test setの構造を反映するために、ランダムに assessment を一つ選択します。

Update 1: Features

Motivation:

  • On the measure of intelligenceの論文によって衝撃を受けました。
    • そこには興味深く、強力な考えがたくさんあります。
    • 私は、知性の測定の仕方を論じることによって刺激を受けた。
      • A/ by overall-skill-level(全体的なスキルレベル)
      • B/ by skill-acquisition-tempo(スキル習得テンポ)
  • 今回は、A/を測定することになります。それは、2つの能力に分割できます。
    • experience.
      • すなわち、ある子はどのくらいの時間をgame中に活動に費やしたのか。
      • これは、初めのfeatureのグループです。
    • accuracy
      • その子がどのくらい正解したか。
      • これは、二番目のfeatureのグループです。
  • 一方で、どのくらいはやく子供たちが学習するかを表す方法としてskill-acquisition-tempoはとても興味深い。
    • minutes per level, events per level, etc.
    • これが、三番目のfeatureのグループです。
  • 私は、手作業でのfeature engineeringをするコンペが大好きです。
    • 人間と機械の組み合わせは良い結果をもたらします。
      • それは、AIが世界に与える影響の仕方についての私の見解を表しています。
  • *なんかすごくドメインを重要にしているんだなっていう感じがする。
    • *けど、具体的な内容が少ないから、いまいちピンとこない。

Update 2: Feature selection

  • featureをdropした後cvを計算した。
    • 150feature、すべて個別おこないました。
      • *これって1個づつ、消してスコアを確認してっていうのをやってたってことかな?
      • *相互作用とかどうなってんだろ。
  • ドロップされたすべてのfeatureが、QWKの減少が0.0001より小さければノイズとみなした。
    • この方法で100のfeatureをノイズとみなした。
  • 100 のノイズfeatureを取り除いたあと、CVを再度計算したところ、わずかにスコアが上昇した。