Eloコンペの振り返り・上位解法まとめこの広告は、90日以上更新していないブログに表示しています。Recommendationコンペに参加しました。僕は@kasuminkoさん、@hirokasさんとチームを組んで、ラスト2週間だけ参加しました。2220位という乱高下で儚く散りました。手元に銀メダル相当のスコアを持っていたにもかかわらず、間違ったサブミットを選んでしまっており、とても悔しいです。Scoreという値を予測するコンペです。データとしては各カードの属性を書いたtrain.csv/test.csvと、それぞれのカードに紐付いた購買履歴(transaction)を表すhistorical_transactions.csv/new_merchant_transactions.csvの4ファイルが与えられていました。タスクの種類は値を当てる回帰で、targetの分布は0を中心とした分布に加え、-33付近に外れ値が存在するというものでした。評価指標はRMSEで、外れ値の影響を受けやすい指標です。今回は-33.22付近とかなり外れた位置にサンプルが存在するため、外れ値をどう捌くかが大きな論点のひとつでした。https://www.kaggle.com/c/elo-merchant-category-recommendation/discussion/82036解法のコアはシンプルで、外れ値を予測する2値分類モデルを使って、外れ値(-33.22)と外れ値抜きで学習した予測値を加重平均するというものです。Kernelにも分類モデルで外れ値の確率を出すという手法が投稿されていました。そのアプローチは「外れ値の確率が低いものについては、外れ値抜きで学習させたモデルでの予測値と差し替える」というものでした。1位解法はKernelの手法をよりシンプルにしたバージョンと言えるでしょう。この手法の肝は、外れ値予測モデルが十分精度が高いことです。0.914とだいぶ差があります。solutionで書かれていたものです。transactionのテーブルにtrainのテーブルをマージしてモデルを作り、予測値を得ることでtransactionの各行に対して予測値を得ます。featureとしてmin、max、meanなどで集約して特徴量にします。lossを使うことで分類問題のように扱うことができます。lossで訓練した分類モデルの方が良い精度を出しています。layerにもLightGBMとニューラルネットワークを用いてスタッキングを行った後、平均を取った。Regression]でカリブレーションを行った。CVは上がったが、PublicとPrivateは両方落ちた。Ridgeでスタッキングした。外れ値かを当てる分類モデルを4つ作り、各モデルで100個ずつ外れ値を予測した。4つのモデルが全て外れ値だとしたものを-33に置き換えた。importanceのランキングで、上位90%、80%、......と切って検証コルモゴロフ-スミルノフ検定はライブラリに加えておきます。Ridgeを利用してブレンドした。Vector、NMFを行ったものを特徴量に加えました。importanceに基づいて特徴量選択をしました。最終的に200特徴量ほどになりました。モデルLightGBMとXGBoostを重み4:1でアンサンブルしました。全データで学習した回帰モデルのうち、外れ値の確率が低いものを外れ値抜きで学習したものに差し替えました。外れ値の確率が十分高いものを-33.22で置き換えました。して僕たちが銀メダルを逃したか予測値を-33.22で置き換えるのはリスクの大きい賭けであることは分かっていたので、最終サブミットは後処理を行ったものと行っていないものの2つを提出する予定でした。最終日の朝8:00に起きた僕はKernelを確認し、ハイスコアなKernelが上がっていないことを確認して一安心しました。慌ててページを開いたところ、どうやら上位ソリューションがフライングで公開されていたそうです。念のためついていたコメントを全部読んだところ、その消された上位ソリューションの要約が貼られていました。大まかに言うと、外れ値を当てるときは2値分類でやるんじゃなくてランキング学習的にやるといいよー、みたいな感じでした。このコンペでは外れ値の扱いが大事だと思っていた僕は慌ててLightGBMを利用したランキング学習の方法をググり、コードを書き、実験を回しはじめました。動悸がヤバかったのを覚えています。その実験は終わるわけもなく、9:00を迎えました。蓋をあけてみるとどうでしょう。最終提出に選ばれていたのは、どちらも後処理を行ったサブミットだったのです。ナイアガラの滝の如く落ちた順位。選ぶはずだったサブミットは銀メダル相当でした。これが僕たちが銀メダルを逃した一部始終です。Submissions」のタブを更新し、正しいサブミットが選ばれているかどうかを確認しましょう。Classificationコンペに参...2019-01-10決定木は本当に変換に依存しないのか?決定木をベースとしたモデル(RandomForestやXGBoost、LightGBM...2018-12-20コピペで使える。2018の20日目の記事です。»プロフィールえじといいます。渋谷でデータサイエンティストとして働いています。Masterになりました。