今回はauto-sklearnを試してみたいと思います。
バージョンは0.14.7でまだ22年8月現在は最新版をインストール済みですので、アップグレードはしません。
MacでAutoMLの環境をする方法は下記記事にまとめています。pipでインストールしているのがほとんどですので、Linuxでも同じようなコードでインストールできるかと思います。
※ brew install しているのは yum や apt に置き換える必要はあります。
(MLJAR) Pythonで3つのAutoML環境を用意してみた
(AutoGluon) Pythonで3つのAutoML環境を用意してみた
(auto-sklearn) Pythonで3つのAutoML環境を用意してみた
それではやってみます。
評価指標
住宅IdごとのSalePrice(販売価格)を予測するコンペです。
評価指標は予測SalePriceと実測SalePriceの対数を取ったRoot-Mean-Squared-Error(RMSE)の値のようです。
auto-sklearn
分析用データの準備
事前に欠損値処理や特徴量エンジニアリングを実施してデータをエクスポートしています。
本記事と同じ結果にするためには事前に下記記事を確認してデータを用意してください。
(その3-2) エイムズの住宅価格のデータセットのデータ加工①
(その3-3) エイムズの住宅価格のデータセットのデータ加工②
学習用データとスコア付与用データの読み込み
auto-sklearnでモデルの作成
AutoSklearnRegressor(per_run_time_limit=30, time_left_for_this_task=120, tmp_folder='autosklearn_regression_ames')
train 0.9487616655929721
rank ensemble_weight type cost duration model_id 2 1 0.92 random_forest 0.090034 11.974992 6 2 0.06 ard_regression 0.160411 2.643135 8 3 0.02 liblinear_svr 0.168951 1.088582
Id SalePrice 0 1461 124727.860840 1 1462 166993.297119 2 1463 184823.295898 3 1464 184942.644531 4 1465 205705.609375 ... ... ... 1454 2915 90049.703369 1455 2916 91061.872314 1456 2917 165485.618164 1457 2918 119376.864990 1458 2919 241576.075684 1459 rows × 2 columns
Kaggleにスコア付与結果をアップロード
100%|██████████████████████████████████████| 33.3k/33.3k [00:04<00:00, 7.10kB/s] Successfully submitted to House Prices - Advanced Regression Techniques #8 automl auto-sklearn Score: 0.15174
ランダムフォーレストやXGBoostよりは悪い結果になってしまいました。autogluonと同じように学習時間を伸ばせば精度はあがるかもしれません。
使用ライブラリのバージョン
pandas Version: 1.4.2
numpy Version: 1.22.4
scikit-learn Version: 0.24.2
seaborn Version: 0.11.2
matplotlib Version: 3.5.2
auto-sklearn: 0.14.7
まとめ
これで3種類すべてのautomlライブラリを試しました。mljarが一番精度がよかったです。(その分学習時間も一番かかったように思えます)
catboostとかも試してみたかったですが、一旦次の機会にすることにします。
これまで分類問題(タイタニックの生存)と回帰問題(エイムズの住宅価格)をやったので、次回からは時系列予測に入ろうかと思います。
時系列のデータは実業務でも使う機会が多いのではないでしょうか?
ARモデル、ARIMAモデル、SARIMAモデルなど分類や回帰とは少し異なる時系列用のモデルが存在するのでどういう結果になるのか楽しみです。