Quvotha / aiquest2021-assesment

1 stars 0 forks source link

Exp02: How to predict > middle price? #8

Closed Quvotha closed 3 years ago

Quvotha commented 3 years ago

仮に y = 200 をミドルプライス未満/以上のしきりとするならば、しきりを超える要素は何かを探り、モデルに教え込むことを次の方針とする。

Originally posted by @Quvotha in https://github.com/Quvotha/aiquest2021-assesment/issues/5#issuecomment-891202022

Quvotha commented 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

今までの特徴エンジニアリングに同様の処理を追加することで性能を改善できないか?

Quvotha commented 3 years ago

全然ダメ。 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
Quvotha commented 3 years ago

どうしても過小評価してしまう

どうしてもモデルの過小評価バイアスが消えない。02-07 の y と予測値の散布図が以下の通り。

image

引き続き対処方法を検討する。

Quvotha commented 3 years ago

誤差の予測を行う

誤差と特徴量の相関や feature_importances_ (予測誤差を目的値とした LGBMRegressor にて計算)を見るに特定の特徴量と予測誤差に相関が見られる。ということは誤差自体をある程度予測できるのでは?という発想。

Quvotha commented 3 years ago

y > N の確率を求める

閾値の条件を満たすかどうかを判定するモデルを訓練する(モデル①)。 閾値の条件を満たすデータだけで訓練するモデル(モデル②)と満たさないデータだけで訓練するモデル(モデル③)を開発する。モデル②③の予測値を①の確率を使って加重平均する。

Quvotha commented 3 years ago

1つ上のコメントにある『y > N の確率を求める』は効果あり。今回はエイやで y>N の N=200 とし、モデル①にはロジスティック回帰を用い、②③のモデルはそれぞれ枝番で示した回帰器を用いたが Local/PB どちらもロスが減少した。なお、これまで GBDT では CatBoost が当てはまりがよさそうだったが 02-12 で LightGBM が現時点の最良モデルとなった。なお、相変わらず一定額以上の民泊は予測できていない点に注意。以下、現時点で最もいい感じの 02-12 の Actual vs Prediction のグラフ。 image

残念ながら 2 つ上のコメントにある『誤差の予測を行う』はろくな結果にならなかった。

誤って issue を分けてしまったが #9 で試した sample_weight も効果があった。

限られた残り時間で性能を高めるため、以下の 5 点を色々試していく。