python - importance - ¿Cómo se calcula la puntuación de la característica(/ importancia) en el paquete XGBoost?
xgboost python (2)
Encontré esta respuesta correcta y completa. Muestra la implementación de las feature_importances.
https://stats.stackexchange.com/questions/162162/relative-variable-importance-for-boosting
Esta es una métrica que simplemente resume cuántas veces se divide cada característica. Es análogo a la métrica de frecuencia en la versión R. https://cran.r-project.org/web/packages/xgboost/xgboost.pdf
Se trata de una métrica tan importante como la característica que puede obtener.
¿Cuántas veces se dividió esta variable?
El código para este método muestra que es simplemente agregar la presencia de una característica dada en todos los árboles.
[aquí .. https://github.com/dmlc/xgboost/blob/master/python-package/xgboost/core.py#L953][1]
def get_fscore(self, fmap=''''):
"""Get feature importance of each feature.
Parameters
----------
fmap: str (optional)
The name of feature map file
"""
trees = self.get_dump(fmap) ## dump all the trees to text
fmap = {}
for tree in trees: ## loop through the trees
for line in tree.split(''/n''): # text processing
arr = line.split(''['')
if len(arr) == 1: # text processing
continue
fid = arr[1].split('']'')[0] # text processing
fid = fid.split(''<'')[0] # split on the greater/less(find variable name)
if fid not in fmap: # if the feature id hasn''t been seen yet
fmap[fid] = 1 # add it
else:
fmap[fid] += 1 # else increment it
return fmap # return the fmap, which has the counts of each time a variable was split on