Как классификатор дерева решений может работать с глобальными ограничениями? - PullRequest
0 голосов
/ 19 января 2019

Я сгенерировал классификатор дерева решений с помощью sklearn в Python, который хорошо работает с точки зрения точности.Я обучаю классификатор оптимальному решению линейной программы, которая возвращает оптимальное назначение элементов классам, в то время как с учетом глобального ограничения затрат (т. Е. Назначение элемента 1 классу A обойдется в x. Общие итоговые затраты по всемэлементы и классы должны быть меньше значения y).

После переклассификации всех элементов с помощью классификатора, в то время как точность является приемлемой, глобальное ценовое ограничение нарушается в большинстве прогонов классификации.Естественно, так как стандартное дерево решений от sklearn в python не учитывает ограничение.

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

1 Ответ

0 голосов
/ 23 января 2019

Деревья решений, реализованные в sklearn, строятся только на основе критериев расщепления, учитывающих коэффициент Джини, энтропию или выигрыш в информации.Пользовательские функции потерь невозможны.

Однако деревья с градиентным усилением, такие как XGboost, LightGBM и CatBoost, позволяют указывать ваши собственные функции потерь.Учебное пособие можно найти здесь: https://towardsdatascience.com/custom-loss-functions-for-gradient-boosting-f79c1b40466d

Затем вы должны включить штрафной термин за нарушение вашего ограничения в функцию потерь.

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