![見出し画像](https://assets.st-note.com/production/uploads/images/71127246/rectangle_large_type_2_fc902f963ccd67cea7b9ced4c3fb7342.png?width=800)
Pythonで機械学習『Iowa 家の販売価格予測 with PyCaret』002/100
先日勉強したPyCaretでIowa HousePriceチャレンジ。
欠損処理したcsvがあるのでやってみる。
PyCaretは簡単だけど、待ち時間が長いなー。
前処理
![](https://assets.st-note.com/img/1643357138967-nICONoplJp.png?width=1200)
モデルの比較
![](https://assets.st-note.com/img/1643520497421-QEq4C0mHmz.png?width=1200)
RMSLEって、IOWAの評価指標と同じだよね?
だとすると、Pycaretデフォルトだと、前やったLightGBMのチューニング前(ベースラインのパラメーター)の方がスコアいい。
原因は、
PyCaretだと、fold数は10になってることと、パラメータが、
LGBMRegressor(boosting_type='gbdt', class_weight=None, colsample_bytree=1.0,
importance_type='split', learning_rate=0.1, max_depth=-1,
min_child_samples=20, min_child_weight=0.001, min_split_gain=0.0,
n_estimators=100, n_jobs=-1, num_leaves=31, objective=None,
random_state=777, reg_alpha=0.0, reg_lambda=0.0, silent='warn',
subsample=1.0, subsample_for_bin=200000, subsample_freq=0)
であることかな。
Pycaretで自動チューニングをしてみると、パラメータはこんな感じに。
![](https://assets.st-note.com/img/1643521567612-x66Nl0TqSK.png?width=1200)
Lightgbmのベースラインのパラメータは
lgbm_params = {
'learning_rate' : 0.1,
'num_leaves' : 31,
'max_depth' : 5,
'min_data_in_leaf' : 20,
'min_sum_hessian_in_leaf' : 1.0,
'bagging_fraction' : 0.8,
'bagging_freq' : 5,
'feature_fraction' : 0.8,
'lambda_l1' : 0,
'lambda_l2' : 1.0,
'max_bin' : 255
}
にしてる。
念の為Kaggleに投稿してみても、スコアは、0.143
![](https://assets.st-note.com/img/1643522361255-HDoVsQojB2.png?width=1200)
fold数が原因かと思い、fold数4にしてやってみたけど、決定係数もRSMLEも少し下がった。うー、変な特徴量を生成しているのかな。
納得感はないが、次に進もう。
なぜならSHAPというものが気になっているので。
SHAPとは、XAI(説明可能なAI)ライブラリの一つで、機械学習モデルを説明するためのもの。元々のアルゴリズムは前からあるらしいんだけど、Pythonライブラリになったのはここ数年みたい。この動画で知った。
!pip install shap
した後に、
interpret_model()
すると、
![](https://assets.st-note.com/img/1643602667959-nxWh7vT5GP.png?width=1200)
![](https://assets.st-note.com/img/1643603874650-eCNGPuJF4x.png?width=1200)
こんな図が出力できる。
Iowaの例で言うと、
GrLivArea(地上の居住面積)が広ければ価格が高い、狭ければ安い。と言うことがわかる。しかも数値付きで。すごーいね。
ちなみに、pycaretでは決定木ベースのアルゴリズムの場合のみ、これができるみたい。
と言うわけで、Pycaret触ってみた。
初手としてガンガン使えそう。
この記事が気に入ったらサポートをしてみませんか?