12th place solution

参加者の皆様お疲れ様でした。また、運営の方々、本コンペを開催して下さりありがとうございました。
簡単ではございますが、私の解法の概要について共有します。

特徴量

各特徴量に対して行ったことは以下のとおりです。

  • カテゴリデータ
    • 'ORIGINAL_LANGUAGE', 'ACTIVITY_NAME', 'COUNTRY_CODE', 'SECTOR_NAME'に対してTarget Encoding
    • CatBoostの場合はcat_featuresとしてモデルに渡す
  • 文章データ
    • 文章の長さや単語数などの基礎統計量
    • TF-IDF -> TruncatedSVD
    • CountVectorizer -> TruncatedSVD
    • BERT(roberta-base) -> PCA
    • Universal Sentence Encoder
    • 'DESCRIPTION_TRANSLATED'から年齢および年の抽出
  • 画像データ
    • Swin Transformer -> PCA
  • タグ
    • One-Hotベクトル化
    • タグ数のカウント

Universal Sentence Encoderは異なる言語でも同じベクトル空間で表現できることから、'DESCRIPTION'に対して適用しました。精度向上に少しは貢献していました。それ以外に関しては基本的に'DESCRIPTION_TRANSLATED'に適用しています。
おそらく'DESCRIPTION_TRANSLATED'に対してもっと色々な情報を抽出しなければいけなかったと思うのですが、あまりアイデアは浮かばず断念してしまいました。

Cross Validation

目的変数が連続値ということだったので、以下の記事を参考に連続値のStratifiedKFoldで5分割しました。
https://www.guruguru.science/competitions/16/discussions/092c2925-6a63-4e65-8057-6ea50fc660dd/

Model

以下のモデルでアンサンブルしました。

  • LightGBM
  • CatBoost
  • TabNet

シングルモデルでは、CatBoost > TabNet > LightGBMという精度でした。ハイパーパラメータは手動でのみ調整したため、チューニングすればもしかしたら順番は変わるかもしれません。

後処理

後処理では以下の2つを実施しました。

  • テストデータで学習データと同じ'IMAGE_ID'のレコードは学習データの'LOAN_AMOUNT'で上書きする
  • 予測値を0〜10000でクリッピングし、25の倍数となるようにする

最後に

本コンペでは、Universal Sentence EncoderやTabNetなど今までに試したことなかった手法を試すことができました。ただ上位の方にはまだまだ及ばないのでもっと精進せねばと思いました!上位の方の解法共有楽しみにしています。

Icon2
newduck

お疲れさまでした。また、BERTの利用法のトピック公開ありがとうございました。 2点、良ければ教えて欲しいのですが、 (1)(私はTOWN_NAME絡みの特徴量がスコア改善に効いた認識なのですが)、上記では触れられていませんが如何だったでしょうか? (2)画像データ(Swin Transformer -> PCA)は、スコア改善に効いたでしょうか?

Aws4 request&x amz signedheaders=host&x amz signature=6c3d3f49d1243c6d5fda3882184f749aa1abe086802a0ba777df4825ca92ef51
yshr10ic

お疲れ様でした。

(1)(私はTOWN_NAME絡みの特徴量がスコア改善に効いた認識なのですが)、上記では触れられていませんが如何だったでしょうか?

→理由はなんでだか忘れましたが私はTOWN_NAMEは特徴量に使ってないですね。スコア改善に効いたということですので、なぜ使わなかったのかと後悔してます。

(2)画像データ(Swin Transformer -> PCA)は、スコア改善に効いたでしょうか?

→Publicスコアが295→287くらいになったので、多少なりとも効いたと思っています。

Icon2
newduck

回答ありがとうございました!

Favicon
new user
コメントするには 新規登録 もしくは ログイン が必要です。