Использует ли реализация случайного леса в scikit-learn среднюю точность в качестве метода оценки для оценки ошибки обобщения с выборками из пакета? Это не упоминается в документации, но метод Score () сообщает о средней точности.
У меня очень несбалансированный набор данных, и я использую AUC ROC в качестве метрики оценки в поиске по сетке. Есть ли способ указать классификатору использовать тот же метод оценки и на выборках OOB?
random-forest
scikit-learn
darXider
источник
источник
oob_score
сообщить точность. Мне нужно еще раз взглянуть на исходный код.Ответы:
В целом, производительность классификаторов сравнивается с использованием точности, это мера количества правильно классифицированных экземпляров, деленная на общее количество экземпляров. Тем не менее, из данных обучения мы можем получить лучшее приближение ожидаемой ошибки от нашего классификатора, когда мы используем ансамблевое обучение или методы упаковки.
Ошибка вне пакета
Этот показатель является точностью примеров использующих все деревья в ансамбле случайных лесов, для которых он был опущен во время обучения. Таким образом, он действует как пример полу-тестирования. Вы можете понять, насколько хорошо ваш классификатор может обобщать, используя эту метрику.Икся
Чтобы реализовать oob в sklearn, вам нужно указать его при создании объекта Random Forests как
Тогда мы можем обучить модель
Как и следовало ожидать, точность модели при оценке тренировочного набора очень высока. Тем не менее, это бессмысленно, потому что вы вполне можете перегружать свои данные и, следовательно, ваша модель является мусором. Тем не менее, мы можем использовать счет «из сумки» как
Это точность при оценке наших экземпляров в обучающем наборе с использованием только деревьев, для которых они были опущены. Теперь давайте посчитаем оценку на тестовом наборе как
Мы видим, что точность, измеренная oob, очень похожа на точность, полученную с помощью тестового набора. Таким образом, из теории следует, что точность oob является лучшим показателем, с помощью которого можно оценить производительность вашей модели, а не просто оценку. Это является следствием моделей мешков и не может быть сделано с другими типами классификаторов.
Расчет работы с использованием различных метрик
Да, ты можешь это сделать! Однако это зависит от того, как именно ваш код структурирован. Я не уверен, как вы можете включить OOB и AUC вместе с
cross_val_score
функцией. Однако, если вы выполняете перекрестную сверку вручную, вы можете сделать следующее, алгоритм случайных лесов в sklearn предоставляет вам функцию решения oob какКласс может быть получен с помощью
Затем мы можем рассчитать AUC с помощью следующего
источник
RandomForestClassifier
можно ли вернуть оценку OOB, которая НЕ является точной, и вторая часть вашего ответа дает очень хороший совет о том, как решить эту проблему. Тем не менее, я должен подчеркнуть, что не следует использовать метки классов для расчета AUC кривой ROC; скорее, вероятности класса должны использоваться непосредственно. Итак, правильное определение будетpred_train = forest.oob_decision_function_[:, 1]
.