3rd Place Solution
今回のソリューションは@yuuuukiさん、@Oreginさん、@yshr10icさん、@BellTree_0110さんの
トピックを大きく参考にさせていただいています。みなさまありがとうございました。
下記特徴量のうち特に効いたのは、ターゲットエンコーディング、テキスト系と外れ値です。
使用モデル
lightgbm×2
特徴量
日付系
number_of_reviewsとreviews_per_monthを使用し、
・最後のレビューから何か月経っているか
・掲載日
・次回予約されそうな時期
の作成
位置情報系
・混合ベイズガウスモデルによるエリア特徴量の作成
・最寄り駅数
・徒歩を含めた特定駅への所要時間
テキスト系
nameに対して
・tfidf ngram1,2 min_df=20
・上記をSVDしたもの
・huggingfaceを用いた埋め込み表現をSVDしたもの
・BERTからの埋め込み表現をPCAしたもの
※bag of wordsで多かった単語を確認し、(people,minutes,station等)表記ゆれを直しています。
外れ値予測
各roomtype毎の第三四分位+IQR*1.5を外れ値とし、外れ値予測モデルを作成(特徴量は本体のモデルと同一)
予測値を本体のモデルのインプットの一つとしました。
(auc: 0.7914 pr: 0.4422)
ターゲットエンコーディング
位置特徴量中心にavailability_365・last_review等、入れるべきか微妙な特徴量もすべて入れています。
また、smoothingを実施しています。
他に@Oreginさんのターゲットエンコーディング組み合わせ関数をそのまま使用しています。
(なんで二乗したり対数取ったりされたのか、それが勘なのか実験の結果なのか気になっています笑)
バリデーション
StratifiedGroupKFold
層:area*roomtype
グループ:hostid