Closed Quvotha closed 3 years ago
amenities
で何かわからないかamenities
を one-hot 形式にし scikit-learn の PCA で次元削減&白色化し y
>200 であることを示す二値フラグとの関係を sweetviz で可視化。多少見込みありそうか?
https://github.com/Quvotha/aiquest2021-assesment/blob/main/eda/over200_or_not_amenities.html
今までの特徴エンジニアリングに同様の処理を追加することで性能を改善できないか?
全然ダメ。
amenities
を次元削減した後に元の amenities
を削除したのが良くなかったのかもしれない。なので次元削減後の amenities
を特徴量に追加し元の amenities
は残すパターンを試す。
微妙に改善した模様。
experiment | valid_loss | valid_losses_avg | valid_losses_std | rmse |
---|---|---|---|---|
01-01 | 199.964769 | 108.884375 | 2.360160 | 156.223821 |
01-02 | 199.099051 | 106.999095 | 3.006433 | 153.679678 |
01-03 | 203.720097 | 122.039748 | 2.513364 | NaN |
02-01 | 199.499959 | 108.459800 | 2.652697 | NaN |
02-02 | 199.275750 | 106.721206 | 2.897792 | 154.514020 |
02-03 | 199.886414 | 108.494788 | 2.910522 | NaN |
02-04 | 203.776117 | 122.235166 | 2.598303 | NaN |
02-05 | 207.915460 | 136.179659 | 2.624863 | NaN |
02-06 | 199.394564 | 108.022102 | 2.810462 | NaN |
02-07 | 199.303432 | 106.417679 | 2.734128 | 154.0467766 |
02-08 | 199.659219 | 107.800440 | 2.728564 | NaN |
どうしてもモデルの過小評価バイアスが消えない。02-07 の y
と予測値の散布図が以下の通り。
引き続き対処方法を検討する。
誤差と特徴量の相関や feature_importances_
(予測誤差を目的値とした LGBMRegressor にて計算)を見るに特定の特徴量と予測誤差に相関が見られる。ということは誤差自体をある程度予測できるのでは?という発想。
回帰器1を訓練する
訓練誤差を計算する
訓練誤差を予測する回帰器2を作る
回帰器2を訓練する
回帰器2の予測値を回機器1の予測値に足した値を予測値とする
[x] 9. LightGBM, 誤差予測版
[x] 10. CatBoost, 誤差予測版
[x] 11.XGBoost, 誤差予測版
y
> N の確率を求める閾値の条件を満たすかどうかを判定するモデルを訓練する(モデル①)。 閾値の条件を満たすデータだけで訓練するモデル(モデル②)と満たさないデータだけで訓練するモデル(モデル③)を開発する。モデル②③の予測値を①の確率を使って加重平均する。
1つ上のコメントにある『y > N の確率を求める』は効果あり。今回はエイやで y
>N の N=200 とし、モデル①にはロジスティック回帰を用い、②③のモデルはそれぞれ枝番で示した回帰器を用いたが Local/PB どちらもロスが減少した。なお、これまで GBDT では CatBoost が当てはまりがよさそうだったが 02-12 で LightGBM が現時点の最良モデルとなった。なお、相変わらず一定額以上の民泊は予測できていない点に注意。以下、現時点で最もいい感じの 02-12 の Actual vs Prediction のグラフ。
残念ながら 2 つ上のコメントにある『誤差の予測を行う』はろくな結果にならなかった。
誤って issue を分けてしまったが #9 で試した sample_weight も効果があった。
限られた残り時間で性能を高めるため、以下の 5 点を色々試していく。
y
>N のN)name
, description
も特徴量に組み込んでみる。
今までの submission を見るに Local の valid_loss
は信頼できそうな気がするのでこれを改善していくことを目標にする。
仮に
y
= 200 をミドルプライス未満/以上のしきりとするならば、しきりを超える要素は何かを探り、モデルに教え込むことを次の方針とする。Originally posted by @Quvotha in https://github.com/Quvotha/aiquest2021-assesment/issues/5#issuecomment-891202022