physyuki
使用したモデルはLightGBMのみです。
この方法で作った約600の特徴をimportance上位50位、100位とかで切ってもあまりスコアは伸びなかったです。 チームメイトのtakoiさんと、ある程度お互い作業してから情報交換を行いました。そこで
との情報をいただき、上記の作業で「各特徴量を組み合わせてaggregationして他の特徴量の統計量を計算」をやっていなかったことに思い至りました。そこで
で特徴量を作りました。importanceで切るのはうまくいかなかったので、いくつかのかたまりで特徴量を追加してCVが改善すれば採用、という特徴選択方法でCVが大きく伸びました。 さらに色んな組み合わせのaggregation系特徴量や、大きく予測を外しているデータを確認してそれらを改善してくれそうと考えた特徴量を増やしましたが、CV改善には繋がりませんでした。 最後にあるオンサイトコンペで学んだ、重要な特徴量のかけ算・割り算などの特徴量は絶対に作り忘れない、というの思い出して
の特徴量を作り、CVが少し改善しました。
先に要点をまとめておきます。
まず、targetを予測するモデルと、targetとpositionごとのtarget平均との差分を予測するモデルの2つに取り組みました。これも先ほど言及したオンサイトコンペで得た知見です。後者は最初スコアが伸びずに使っていなかったのですが、takoiさんと情報交換してから作ったchildフラグまわりの特徴量で大きく改善したので使うことにしました。
さらに上記の各モデルに対して、targetを0~1に収まるように変換しobjectiveをxentropyとして分類問題のように学習したモデルも作りました。つまり、全部で4つのモデルを作成しました。あと、targetの分布が歪んでいるのでlogで変換しました。 使用した特徴量の数は
です。
EDAからsexとtargetだけに注目すると2変数間に関係がなさそうだったので、試しにtrainのsexだけを反転させたデータを元のtrainにくっつけてデータ量を2倍にして学習しました。CVはほぼ変化なしでしたが、LBが0.4ぐらい改善しました。これはかなり初期の段階の実験なので、最後の方のモデルではどれくらい効いてたか分からないです。本腰入れて取り組み始めたのが終了1週間ぐらい前なので、残されたサブミットに限りがあったからです。
大きく予測を外しているtest側のデータも学習に使ってしまうことになりますが、こういうデータはもう良い予測をするのを諦めて、今ある程度良い予測をできているデータを全力で予測しにいくというお気持ちでやりました。これも初期段階ではLB: 0.2ぐらい改善しましたが、終盤にはどれくらいの寄与があったか分かりません。