初めに
pycaret
よりも早く多くの機械学習手法を比較・選定してくれる
Lazypredict
をご存知でしょうか?
Lazy・・・怠け者
名前の通り、怠け者が予測するには打って付けの手段になりそうだ!!
まずはインストール
pip install lazypredict
準備
前提:データの外れ値処理は実施済みであること
👆ここは怠けてはいけない!ここがエンジニアの腕の見せ所だ!
この記事では怠けますが、
下記の過去の記事からtrain.csv,test.csvを取得してください
Lazypredictは入・出力因子の変数分けが必要なので
X_train,Y_train,X_test,Y_testと設定しておく
# データインポート
data_train = pd.read_csv('train.csv')
data_test = pd.read_csv('test.csv')
X_train=data_train.iloc[:,1:9]
Y_train=data_train.iloc[:,9]
X_test=data_test.iloc[:,1:9]
Y_test=data_test.iloc[:,9]
手法選定を実行する
# lazypredict
import lazypredict
# 回帰予測の場合は下記のライブラリをインポート
from lazypredict.Supervised import LazyRegressor
# 分類問題の場合は下記をインポートしてください
# from lazypredict.Supervised import LazyClassifier
reg=LazyRegressor(verbose=1,ignore_warnings=True,predictions=True)
models, predictions=reg.fit(X_train,X_test,Y_train,Y_test)
これで終了!はやい!!怠けられます!!
結果の確認はdataframeなので下記を実行するだけ
models
予測結果は下記を実行
predictions
Pycaret vs Lazypredict
モデルの種類の比較
pycaretの18種、LazyPredictはなんと41種を比較してくれる!!
精度の比較
pycaretには無いHistGradientBoostingRegressorを
LazyPredictは選定している点は異なるが、精度は同等かな!?
ベスト手法 | RMSE | 計算時間(sec) | |
---|---|---|---|
LazyPredict | HistGradientBoostingRegressor | 0.09 | 1.36 |
Pycaret | LightGBM | 0.0916 | 0.2283 |
LazyPredictの結果は下記の折りたたみ参照。
折りたたんでます
Model | Adjusted R-Squared | R-Squared | RMSE | Time Taken |
---|---|---|---|---|
HistGradientBoostingRegressor | 0.83 | 0.83 | 0.09 | 1.36 |
LGBMRegressor | 0.82 | 0.83 | 0.09 | 0.29 |
XGBRegressor | 0.82 | 0.82 | 0.09 | 0.45 |
GradientBoostingRegressor | 0.78 | 0.78 | 0.10 | 0.93 |
RandomForestRegressor | 0.78 | 0.78 | 0.10 | 2.48 |
ExtraTreesRegressor | 0.78 | 0.78 | 0.10 | 1.09 |
BaggingRegressor | 0.76 | 0.76 | 0.11 | 0.22 |
NuSVR | 0.75 | 0.75 | 0.11 | 1.51 |
SVR | 0.74 | 0.74 | 0.11 | 0.40 |
MLPRegressor | 0.70 | 0.70 | 0.12 | 0.74 |
KNeighborsRegressor | 0.65 | 0.65 | 0.13 | 0.07 |
BayesianRidge | 0.64 | 0.65 | 0.13 | 0.02 |
Ridge | 0.64 | 0.65 | 0.13 | 0.02 |
RidgeCV | 0.64 | 0.65 | 0.13 | 0.03 |
TransformedTargetRegressor | 0.64 | 0.65 | 0.13 | 0.03 |
LinearRegression | 0.64 | 0.65 | 0.13 | 0.02 |
LassoLarsIC | 0.64 | 0.65 | 0.13 | 0.02 |
Lars | 0.64 | 0.65 | 0.13 | 0.04 |
LarsCV | 0.64 | 0.65 | 0.13 | 0.05 |
LassoLarsCV | 0.64 | 0.65 | 0.13 | 0.05 |
ElasticNetCV | 0.64 | 0.65 | 0.13 | 0.09 |
LassoCV | 0.64 | 0.65 | 0.13 | 0.16 |
SGDRegressor | 0.64 | 0.65 | 0.13 | 0.02 |
ExtraTreeRegressor | 0.64 | 0.64 | 0.13 | 0.03 |
HuberRegressor | 0.62 | 0.62 | 0.14 | 0.06 |
LinearSVR | 0.61 | 0.62 | 0.14 | 0.13 |
RANSACRegressor | 0.61 | 0.61 | 0.14 | 0.13 |
DecisionTreeRegressor | 0.60 | 0.61 | 0.14 | 0.03 |
OrthogonalMatchingPursuitCV | 0.60 | 0.61 | 0.14 | 0.02 |
AdaBoostRegressor | 0.60 | 0.60 | 0.14 | 0.47 |
PassiveAggressiveRegressor | 0.48 | 0.48 | 0.16 | 0.03 |
OrthogonalMatchingPursuit | 0.44 | 0.44 | 0.16 | 0.02 |
GeneralizedLinearRegressor | 0.44 | 0.44 | 0.16 | 0.02 |
TweedieRegressor | 0.44 | 0.44 | 0.16 | 0.02 |
GaussianProcessRegressor | 0.29 | 0.29 | 0.19 | 1.86 |
PoissonRegressor | 0.27 | 0.27 | 0.19 | 0.02 |
Lasso | -0.01 | -0.00 | 0.22 | 0.02 |
ElasticNet | -0.01 | -0.00 | 0.22 | 0.01 |
DummyRegressor | -0.01 | -0.00 | 0.22 | 0.02 |
LassoLars | -0.01 | -0.00 | 0.22 | 0.02 |
KernelRidge | -1.82 | -1.80 | 0.37 | 0.85 |
Pycaretの結果は下記の折りたたみ参照
折りたたんでます
Model | MAE | MSE | RMSE | R2 | RMSLE | MAPE | TT (Sec) | |
---|---|---|---|---|---|---|---|---|
lightgbm | Light Gradient Boosting Machine | 0.0623 | 0.0084 | 0.0916 | 0.8183 | 0.0622 | 0.2283 | 0.3500 |
gbr | Gradient Boosting Regressor | 0.0698 | 0.0098 | 0.0989 | 0.7886 | 0.0676 | 0.2600 | 0.2125 |
et | Extra Trees Regressor | 0.0708 | 0.0104 | 0.1017 | 0.7765 | 0.0692 | 0.2687 | 0.3900 |
rf | Random Forest Regressor | 0.0710 | 0.0108 | 0.1041 | 0.7662 | 0.0709 | 0.2681 | 0.6450 |
lr | Linear Regression | 0.0952 | 0.0159 | 0.1262 | 0.6559 | 0.0875 | 0.4072 | 1.5550 |
lar | Least Angle Regression | 0.0952 | 0.0159 | 0.1262 | 0.6559 | 0.0875 | 0.4072 | 0.0125 |
br | Bayesian Ridge | 0.0951 | 0.0159 | 0.1262 | 0.6559 | 0.0875 | 0.4069 | 0.0125 |
ridge | Ridge Regression | 0.0949 | 0.0160 | 0.1264 | 0.6551 | 0.0876 | 0.4035 | 0.0125 |
huber | Huber Regressor | 0.0929 | 0.0165 | 0.1285 | 0.6434 | 0.0875 | 0.3721 | 0.0325 |
knn | K Neighbors Regressor | 0.0963 | 0.0184 | 0.1356 | 0.6028 | 0.0935 | 0.3897 | 0.0275 |
ada | AdaBoost Regressor | 0.1160 | 0.0194 | 0.1391 | 0.5818 | 0.1006 | 0.5839 | 0.1125 |
dt | Decision Tree Regressor | 0.0964 | 0.0220 | 0.1482 | 0.5257 | 0.1002 | 0.3411 | 0.0175 |
par | Passive Aggressive Regressor | 0.1223 | 0.0248 | 0.1562 | 0.4660 | 0.1056 | 0.5507 | 0.0125 |
omp | Orthogonal Matching Pursuit | 0.1167 | 0.0247 | 0.1573 | 0.4662 | 0.1088 | 0.4622 | 0.0100 |
llar | Lasso Least Angle Regression | 0.1680 | 0.0464 | 0.2154 | -0.0008 | 0.1525 | 0.8630 | 0.0100 |
lasso | Lasso Regression | 0.1680 | 0.0464 | 0.2154 | -0.0008 | 0.1525 | 0.8630 | 0.0125 |
en | Elastic Net | 0.1680 | 0.0464 | 0.2154 | -0.0008 | 0.1525 | 0.8630 | 0.0100 |
dummy | Dummy Regressor | 0.1680 | 0.0464 | 0.2154 | -0.0008 | 0.1525 | 0.8630 | 0.0100 |
まとめ
LazyPredictの強みは
たった2行のコードで実行できる点と
モデル種類が41種類と豊富である点だと考えます
※分類問題では何種類かは調査してませんのでご了承ください
日々の予測では
データ分析・データ前処理
⇒ LazyPredict
⇒ 手法決定
⇒ ハイパーパラメータチューニング
⇒ 予測
といったフローで効率化を図っていこうと思ってます
最後までお読みいただきありがとうございました