Обученный GradientBoostedClassifier придает нулевое значение любой функции - PullRequest
0 голосов
/ 20 октября 2018

Сначала несколько фактов, касающихся сценария: я пытаюсь предсказать некоторые классы, используя 28 функций (разработка функций завершена) в scikit-learn.У меня был огромный набор данных, который мне пришлось разбить на 7 наборов данных в зависимости от одной конкретной особенности, которая оказала огромное влияние на процесс принятия решений моделями.

Наконец, у меня было X наборов данных и я использовал GridSearch для каждого из них, чтобы найти лучший / хороший набор гиперпараметров.Для этого я использовал 4 модели (Decision Stump как Baseline, DecisionTree, RandomForest, GradientBoostedTrees).После этого я хотел проанализировать лучшие оценщики, чтобы извлечь важные значения и сделать дальнейшую разработку конкретных функций для каждого набора данных независимо.

Первые 4 значения функций набора данных показались мне вполне подходящими.Однако, начиная с 5-го набора данных, обученный GBDT присваивает нулевую важность всем функциям.Другие классификаторы ведут себя, как и ожидалось.

Для некоторого контекста приведен конкретный пример:

Важность функции одного набора данных:

feature importance of one dataset

Точность модели:

Model accuracy

Я искал в Интернете это и нашел только одну соответствующую тему, ответы на которую были, кроме "дайте больше контекста, пожалуйста "и" может быть, некоторые ошибки? ", тот факт, что обученный классификатор мог выучить что-то тривиальное.Тем не менее, я проанализировал все деревья GBDT и, действительно, кажется, что никакая функция не используется, каждое дерево имеет один слой и выглядит так:

digraph Tree {
node [shape=box];
0 [label = friedman_mse = 0.135
   samples = 106
   values = 0.054
];
}

Кто-нибудь объяснил это?большое спасибо:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...