2015-02-23 7 views
3

Я создал random forest из моих данных:Получить точность случайного леса в R

fit=randomForest(churn~., data=data_churn[3:17], ntree=1, 
       importance=TRUE, proximity=TRUE) 

Я могу легко увидеть мой confusion matrix:

conf <- fit$confusion 
> conf 
    No Yes class.error 
No 945 80 0.07804878 
Yes 84 101 0.45405405 

Теперь мне нужно знать, точность для случайного леса. Я обыскал и понял, что библиотека caret имеет метод confusionMatrix, который получает матрицу путаницы и возвращает точность (наряду со многими другими значениями). Однако для этого метода нужен еще один параметр: "reference". Мой вопрос в том, как я могу предоставить ссылку на метод для получения точности моего случайного леса? И ... это правильный способ получить точность случайного леса?

+3

Если вы просто наберите 'fit' в командной строке, как спутанность матрицы и из мешка (OOB) ошибка будет распечатать. Ошибка OOB - общая ошибка классификации. Вы также можете вычислить ошибку OOB из матрицы путаницы. В вашем случае это 164/1210 (количество ошибочных наблюдений за общее количество наблюдений). Однако, если вы действительно хотите знать, насколько хороша ваша модель, у вас должны быть отдельные данные обучения для создания модели и тестовых данных (которые не использовались в процессе построения модели) для проверки производительности модели. – eipi10

+0

@ eipi10 Спасибо! Поэтому я предполагаю, что точность будет ошибкой 1-OOB. Я прав? –

+1

Да. Правильно. – eipi10

ответ

5

Используйте randomForest(..., do.trace=T), чтобы увидеть ошибку OOB во время обучения, как по классу, так и по ntree.

(FYI вы выбрали ntree = 1, так что вы получите только одно дерево rpart, а не лес, этот вид поражает цель использования RF и случайного выбора подмножества обеих функций и образцов. . варьировать ntrees)

И после тренировки, вы можете получить в-класс ошибки из крайнего правого столбца матрицы неточностей, как вы уже нашли:

> fit$confusion[, 'class.error'] 
class.error 
No   Yes 
0.07804878 0.45405405 

(также вы, вероятно, хотите установить options('digits'=3) не см. эти избыточные значени после запятой)

Что касается преобразования этого списка ошибок класса (exactacies = 1 - errors) на один общий номер точности, это легко сделать. Вы можете использовать среднее значение, средневзвешенное по весу, гармоническое среднее (точности, а не ошибок) и т. Д. Это зависит от вашего приложения и относительного штрафа за неправильную классификацию. Ваш пример прост, это всего лишь двухклассный.

(или, например, существует более сложные меры согласованности между показателями)