LightGBMで回帰問題のモデルを構築する
前回はLightGBMで二値分類モデルを構築しました。
今回は、回帰問題のモデルを構築してみたいと思います。
環境はGoogle Corabです。
データセットの用意
今回はscikit-learnに組み込まれているカリフォルニアの住宅価格データセットを利用して回帰問題のモデルを構築していきます。このデータセットは、地域の世帯収入や築年数、部屋数などを説明変数とし、住宅価格を予測します。
import pandas as pd
from sklearn.datasets import fetch_california_housing
housing = fetch_california_housing()
data = pd.DataFrame(housing.data, columns=housing.feature_names)
data['Target'] = housing.target
![](https://assets.st-note.com/img/1719192283551-R3KILqKv1G.png?width=1200)
目的変数の設定
X = data.drop('Target', axis=1)
y = data['Target']
学習用にデータを分割
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
モデルの構築
LightGBMのデータセットを作成し、回帰モデルを構築します。
ハイパーパラメーターには下記を指定しています。
objective: モデルの目的を指定します。ここでは回帰問題なので 'regression' を指定しています。
metric: モデルの評価指標を指定します。ここでは RMSE(Root Mean Squared Error、二乗平均平方根誤差)を使用しています。
boosting_type: ブースティングの種類を指定します。
import lightgbm as lgb
lgb_train = lgb.Dataset(X_train, label=y_train)
lgb_eval = lgb.Dataset(X_test, label=y_test, reference=lgb_train)
params = {
'objective': 'regression',
'metric': 'rmse',
'boosting_type': 'gbdt'
}
gbm = lgb.train(params, lgb_train)
評価
モデルの性能を評価するために、RMSEを計算します。
from sklearn.metrics import mean_squared_error
y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration)
rmse = mean_squared_error(y_test, y_pred, squared=False)
print(f'RMSE: {rmse}')
RMSE: 0.46351720797890145