Je ne sais pas trop comment fonctionne xgboost en théorie. Mais étant donné que xgboost est un classificateur basé sur un arbre, est-il correct de supposer qu'aucune normalisation des fonctionnalités n'est nécessaire ?
non vous n'avez pas à normaliser les fonctionnalités
Je pense comprendre qu'en principe, il n'y a pas besoin de normalisation lors du renforcement des arbres.
Cependant, on peut voir un certain impact lors de la mise à l'échelle de la cible y, en particulier avec ' reg:gamma ', mais aussi (dans une moindre mesure) pour ' reg:linear ' (la valeur par défaut). Quelle est la raison pour ça?
Exemple pour l'ensemble de données Boston Housing :
import numpy as np
import xgboost as xgb
from sklearn.metrics import mean_squared_error
from sklearn.datasets import load_boston
boston = load_boston()
y = boston['target']
X = boston['data']
for scale in np.logspace(-6, 6, 7):
xgb_model = xgb.XGBRegressor().fit(X, y / scale)
predictions = xgb_model.predict(X) * scale
print('{} (scale={})'.format(mean_squared_error(y, predictions), scale))
2.3432734454908335 (échelle=1e-06)
2.343273977065266 (échelle=0,0001)
2.3432793874455315 (échelle=0,01)
2.290595204136888 (échelle=1,0)
2.528513393507719 (échelle=100,0)
7.228978353091473 (échelle=1000.0)
272.29640759874474 (échelle=100000.0)
L'impact de la mise à l'échelle de y est vraiment important lors de l'utilisation de ' reg:gamma ' :
for scale in np.logspace(-6, 6, 7):
xgb_model = xgb.XGBRegressor(objective='reg:gamma').fit(X, y / scale)
predictions = xgb_model.predict(X) * scale
print('{} (scale={})'.format(mean_squared_error(y, predictions), scale))
591.6509503519147 (échelle=1e-06)
545,8298971540023 (échelle=0,0001)
37,68688286293508 (échelle=0,01)
4.039819858716935 (échelle=1,0)
2.505477263590776 (échelle=100,0)
198.94093800190453 (échelle=1000.0)
592.1469169959003 (échelle=100000.0)
@tqchen En lisant votre excellente introduction aux arbres boostés, je ne comprends pas pourquoi la mise à l'échelle des fonctionnalités n'est pas nécessaire en termes mathématiques.
Commentaire le plus utile
non vous n'avez pas à normaliser les fonctionnalités