[振り返り]効いた・効かなかった解法について
皆様、お疲れさまでした。
今回、私のベストスコアはLB 312.95360で、解法は、
A. 公開したLightGBM(LB338前後)をベース
https://comp.probspace.com/competitions/kiva2021/discussions/newduck-Postf5ea4dab7f098d55daa8
B. TAGSをone-hotエンコーディング(空白等を除くと29列に)、DESCRIPTION_TRANSLATEDとLOAN_USEはyshr10icさん公開のBERTを利用した方法で数値化、更にCURRENCY_EXCHANGE_COVERAGE_RATEはfillnaで補完
C. その上で各種エンコーディングを行い、上記のLBに1月4日に到達したようです。
CV(MAE)は260前後、importaceを見てみるとTOWN_NAMEが一番効いていると言う状態でした。
--
この時点でLBで300を切っている人が多くいて、差が大きいなあと思っていたのですが、その後、スコアを全く改善できなかったので、是非、効いた解法をこの場で議論して/教えていただければと思っています。
--
私の場合を少しまとめてみますと、、、
■今回一番効いたと思うもの(最終スコアは良くなかったですが、、、)
TOWN_NAMEのターゲットエンコーディング
■やったけどスコアに効かなかったもの(実装が悪かった?)
①時系列データとのことで(恐らく時系列順の?)LOAN_IDで後半(例:通貨交換レートに0.0が出た以降)を切り出し学習
⇒過学習で?スコアは大きく悪化
②特徴量作成
今回の訓練データは、(前述の)数値化されるテキストの2つ及び重複分等を除いては、10種全てカテゴリ形式でしたので、xfeatを用い組合せを10C2, 10C3,10C4,10C5まで作りラベルエンコーディングして特徴量として利用
⇒特徴量は最大で677列でしたが、今回はサンプル数が少な目ですので、colab proで問題なく学習できました
⇒TOWN_NAME絡みは若干効いていたのと、3つ以上組合せてくるといろいろimportanceには響いてくるようでしたが、肝心のCVとLBはあまり改善しませんでした
⇒xfeatを調べている際にAutoGluonと組み合わせると言う記事を見つけ試しましたがAuoGluon部分はパラメーター等含め20行程度で9モデルの評価が可能でしたので「初手LightGBM」は正しいと思っていますが、例えば超短時間コンペ等であれば「初手AutoGluon」で様子見も良いかと思いました(因みに訓練ファイルを少し整形したものを入力してLB353.14450相当のスコアでした)
③モデルの追加
CatBoost⇒カテゴリ型に効くのかと思い実装しましたが、スコア改善出来ませんでした
RFR⇒TutorialのコードがRFRでしたので時折②で作った特徴量を入力する等しましたがベストスコアでLB346.85254でした
④NLTK(token/stem/lemmatize化等)や正規表現の利用、tf-idfやLDAを使った処理
⇒「pythonではじめる機械学習」の7章にある内容で勉強にはなりましたが、yshr10icさんのコードの方がスコアには効いたようでした。
⑤回帰から分類へのすり替え(もしくは外れ値としての検討)
LOAN_AMOUNTを見てみると50刻みや100,500,1000刻みに集中しており、回帰ではなくて分類へすり替えられないか検討しましたが、うまく実装できませんでした。
また、外れ値と考える(例えばKaggleのElo Merchant Category Recommendationのような)事が出来ないかと、例えばLOAN_AMOUNTで2000以下の値のみを切り出し学習等しましたが、MAEは大幅に改善しますが、それは2000以下の値に適合しているだけで、LB改善に効果はありませんでした。
⑥アンサンブル
(どうも、ここが今回、差がついたところなのかと思っていますが)、
・②で作った特徴量を10C3まで3つ加えたものと、10C5まで5つ加えたもの
・⑤で作った2000以下の切り出し
等を単純な加重平均や、2値分類で作った2000以上のLOAN_AMOUTになりそうな部分の予測に基づき置き換え等してみましたが、時間切れで、あまり深く検討できませんでした。
■やりたかったけど出来なかったこととして、
・NNでのモデル構築
・TOWN_NAMEの欠損値の補完(これはとりあえず国名でfillnaすると言うのは少しだけ効くようでした)
・DESCRIPTION_TRANSLATEDからの情報の収拾(希望金額、性別、年齢等)
・DESCRIPTIONの利用(翻訳して等が効くか、、、)
・画像処理(手作業で処理してもスコア改善に役立つのか確信がもてなかったのですが、、、、)
・(そしてこのコンペの最大の目的、、、、)Kivaへの投資、、、、、⇒まだ間に合うかw
思い出したら追記しますが、まずはこの位です。
それでは皆様、効いた解法、効かなかった解法、コメント・アドバイス、是非教えて頂ければと思います。