catboostを使い、boston住宅価格の回帰予測を行いました。
catboostアルゴリズムの結果は、同様なアルゴリズムであるxgboost
より、mse値が大きく出てきます。
Xgboostのmse値:trainが0.68、testが16.64(パラメータ調整後)
catboostのmse値:trainが0.01、testが22.11(パラメータ調整後、
iterations=2000, learning_rate=0.05, depth=4が最適値)
ご助言等をお願いいたします。
1.該当コード
#python3 %matplotlib inline import matplotlib.pyplot as plt import numpy as np from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error from sklearn.metrics import r2_score !pip install catboost -U from catboost import CatBoostRegressor import pandas as pd from sklearn.datasets import load_boston X, y = load_boston(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.8,random_state=0) model = CatBoostRegressor(iterations=2000, learning_rate=0.05, depth=4) model.fit(X_train, y_train) # 訓練データ、テストデータの予測 y_train_pred = model.predict(X_train) y_test_pred = model.predict(X_test) # 正解と予測のMSEを計算 print('MSE train: %.2f, test: %.2f' % ( mean_squared_error(y_train, y_train_pred), mean_squared_error(y_test, y_test_pred))) # 残差プロット plt.figure(figsize=(8,4)) #プロットのサイズ指定 plt.scatter(y_train_pred, y_train_pred - y_train, c='red', marker='o', edgecolor='white', label='Training data') plt.scatter(y_test_pred, y_test_pred - y_test, c='blue', marker='s', edgecolor='white', label='Test data') plt.xlabel('Predicted values') plt.ylabel('Residuals') plt.legend(loc='upper left') plt.hlines(y=0, xmin=-10, xmax=50, color='black', lw=2) plt.xlim([-10, 50]) plt.tight_layout() plt.show()
2.自分で試したこと
iterations=2000, learning_rate=0.05, depth=4については、
パラメータ調整し、以下のmse値を得た。
catboostのmse値:trainが0.01、testが22.11
しかし、質問内容でもあるように、同様なアルゴリズムであるxgboost
より、mse値が大きく出てきます。
Xgboostのmse値:trainが0.68、testが16.64(パラメータ調整後)
catboostではtrain値が小さく出てきており、過学習しているのではと感じます。
こういった過学習対策するcatboostに効果的なパラメータ調整が必要
と感じます。ご指導をお願いいたします。
3.補足情報(FW/ツールのバージョンなど)
開発環境:Google Colaboratory
プログラム言語:python3
OS:windows10 Home
CPU:Intel(R) Core(TM) i7-7500U CPU@2.70GHz 2.90GHz
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/28 22:15
2021/03/01 09:38
2021/03/01 15:09
2021/03/01 22:42