Сначала несколько фактов, касающихся сценария: я пытаюсь предсказать некоторые классы, используя 28 функций (разработка функций завершена) в scikit-learn.У меня был огромный набор данных, который мне пришлось разбить на 7 наборов данных в зависимости от одной конкретной особенности, которая оказала огромное влияние на процесс принятия решений моделями.
Наконец, у меня было X наборов данных и я использовал GridSearch для каждого из них, чтобы найти лучший / хороший набор гиперпараметров.Для этого я использовал 4 модели (Decision Stump как Baseline, DecisionTree, RandomForest, GradientBoostedTrees).После этого я хотел проанализировать лучшие оценщики, чтобы извлечь важные значения и сделать дальнейшую разработку конкретных функций для каждого набора данных независимо.
Первые 4 значения функций набора данных показались мне вполне подходящими.Однако, начиная с 5-го набора данных, обученный GBDT присваивает нулевую важность всем функциям.Другие классификаторы ведут себя, как и ожидалось.
Для некоторого контекста приведен конкретный пример:
Важность функции одного набора данных:
Точность модели:
Я искал в Интернете это и нашел только одну соответствующую тему, ответы на которую были, кроме "дайте больше контекста, пожалуйста "и" может быть, некоторые ошибки? ", тот факт, что обученный классификатор мог выучить что-то тривиальное.Тем не менее, я проанализировал все деревья GBDT и, действительно, кажется, что никакая функция не используется, каждое дерево имеет один слой и выглядит так:
digraph Tree {
node [shape=box];
0 [label = friedman_mse = 0.135
samples = 106
values = 0.054
];
}
Кто-нибудь объяснил это?большое спасибо:)