例如,我在这个答案中读到: GBM 方法的性能是否受益于特征缩放?
缩放不会影响任何基于树的方法的性能,而不是 lightgbm、xgboost、catboost 甚至决策树。
当我进行特征缩放并比较没有和使用 minmax 缩放的 xgboost 模型的 rmse 时,我通过特征缩放得到了更好的 rmse 值。这是代码:
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error as MSE
import math
from math import sqrt
import pandas as pd
import numpy as np
from xgboost import XGBRegressor
import xgboost as xgb
data = pd.read_excel(r'C:...path.xlsx')
X = data.drop(['colA'], axis=1)
y = data['colA']
scaler = MinMaxScaler()
scaler.fit(X)
minmax_scaled_X = scaler.transform(X)
minmax_scaled_X
y = np.array(y).reshape(-1, 1)
scaler.fit(y)
minmax_scaled_y = scaler.transform(y)
from sklearn.model_selection import train_test_split
xtrain, xtest, ytrain, ytest = train_test_split(minmax_scaled_X, minmax_scaled_y, test_size =0.3, random_state=0, shuffle=True)
xg_reg = xgb.XGBRegressor(objective ='reg:squarederror', colsample_bytree = 0.7, learning_rate = 0.05,
max_depth = 8, min_child_weight = 4, n_estimators = 600, subsample = 0.7)
xg_reg.fit(xtrain,ytrain)
preds = xg_reg.predict(xtest)
rmse = sqrt(MSE(ytest, preds))
print(rmse)
最小最大缩放的结果是 0.003,而没有 rmse 的结果约为 3.8。我对简单的决策树做了同样的事情,并且通过 minmax 缩放总是得到更好的结果。
我的错误在哪里?在上面链接等其他帖子中,答案是关于使用树时缩放不好。我可以说,最小最大缩放确实对我的数据上的 rmse 有积极影响吗?