Xgboost: La normalisation est-elle nécessaire ?

Créé le 17 juin 2015  ·  3Commentaires  ·  Source: dmlc/xgboost

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 ?

Commentaire le plus utile

non vous n'avez pas à normaliser les fonctionnalités

Tous les 3 commentaires

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.

Cette page vous a été utile?
0 / 5 - 0 notes