Почему (rf) clf feature_importance придает важность функции, в которой все значения одинаковы? - PullRequest
0 голосов
/ 27 марта 2019

Я сравниваю мульти-классификацию со случайными лесами и CART в scikit-learn.

Две мои функции (функция 4 и функция 6) не имеют отношения к классификации, поскольку все значения одинаковы. Но выходные данные feature_importances для RandomForestClassifier следующие:

Рейтинг функций:

  1. функция 3 (0.437165)
  2. функция 2 (0.216415)
  3. функция 6 (0.102238)
  4. функция 5 (0,084897)
  5. функция 1 (0.064624)
  6. функция 4 (0,059332)
  7. функция 0 (0.035328)

Вывод функции CART feature_importance:

Рейтинг функций:

  1. функция 3 (0,954666)
  2. функция 6 (0,014117)
  3. функция 0 (0,011529)
  4. функция 1 (0,010586)
  5. функция 2 (0,006785)
  6. функция 4 (0,002204)
  7. функция 5 (0,000112)

В каждом ряду функция 4 имеет одинаковое значение. То же самое для функции 6.

Вот код

Случайный лес

importances = rfclf.feature_importances_
std = np.std([tree.feature_importances_ for tree in rfclf.estimators_],
             axis=0)
indices = np.argsort(importances)[::-1]

# Print the feature ranking
print("Feature ranking:")

for f in range(x.shape[1]):
    print("%d. feature %d (%f)" % (f + 1, indices[f], importances[indices[f]]))

CART

importances = clf.feature_importances_
std = np.std([tree.feature_importances_ for tree in rfclf.estimators_],
             axis=0)
indices = np.argsort(importances)[::-1]

# Print the feature ranking
print("Feature ranking:")

for f in range(x.shape[1]):
    print("%d. feature %d (%f)" % (f + 1, indices[f], importances[indices[f]]))

Я бы, за исключением того, что важность как:

  1. функция 6 (0,000000)
  2. функция 4 (0,000000)

Когда я просто не использую эти две функции, мои модели переодеваются.

1 Ответ

0 голосов
/ 29 марта 2019

Вам нужно установить ограничение на глубину ваших деревьев. Я рекомендую выполнять поиск по сетке над min_samples_leaf = [0,001, 0,1] - пробуя от 0,1% до 10% в каждом листе.

Любой вид расчета важности признаков должен быть выполнен на надежной модели, чтобы иметь смысл.

...