склеарн калиброванный классификатор со случайным лесом - PullRequest
0 голосов
/ 13 мая 2018

Scikit имеет очень полезные обертки классификатора, называемые CalibratedClassifer и CalibratedClassifierCV, которые пытаются удостовериться, что функция predict_proba классификатора действительно предсказывает вероятность, а не просто произвольное число (хотя, возможно, и с хорошим рейтингом) от нуля до единицы.

Тем не менее, при использовании случайных лесов обычно используется oob_decision_function_ для определения производительности по обучающим данным, но это больше недоступно при использовании калиброванных моделей. Поэтому калибровка должна хорошо работать для новых данных, но не для данных обучения. Как мы можем оценить эффективность тренировочных данных, чтобы определить, например, переобучение?

1 Ответ

0 голосов
/ 10 июля 2018

По-видимому, решения на самом деле не было, и поэтому я сделал запрос на включение в scikit-learn.

Проблема заключалась в том, что прогнозы «вне пакета» создаются во время обучения. Следовательно, в CalibratedClassifierCV каждый из подклассификаторов имеет свою собственную функцию принятия решения oob. Тем не менее, эта решающая функция рассчитывается на основе данных. Следовательно, необходимо сохранить каждое предсказание oob (сохраняя значения nan для выборок, которые не находятся в сгибе), затем преобразовать все предсказания, используя калибровочное преобразование, а затем усреднить калиброванные предсказания oob для создания обновленного предсказания oob.

Как уже упоминалось, я создал запрос на получение в https://github.com/scikit-learn/scikit-learn/pull/11175. Однако, возможно, пройдет некоторое время, прежде чем он будет объединен с пакетом, поэтому, если кому-то действительно нужно его использовать, не стесняйтесь использовать мой форк scikit-learn at https://github.com/yishaishimoni/scikit-learn.

...