Использование пакета случайного леса: -
#install.packages("randomForest")
library(randomForest)
Я использовал сетевой код для запуска случайного леса в моей системе.Я получил модель с матрицей путаницы, точностью и т. Д. Теперь мои данные представлены в виде наборов для обучения и проверки.Я получил данные отсюда: - https://archive.ics.uci.edu/ml/machine-learning-databases/car/ Я разделил их в соотношении 70% -30% (обучение - проверка, соответственно).Затем я запустил модель на нем.Результаты модели дали мне ответ, что около 30 наблюдений были ошибочно классифицированы для одного конкретного значения переменной, по которой запускался случайный лес.Ниже приведены примеры данных: -
BuyingPrice Maintenance NumDoors NumPersons Bootspace Safety Condition
vhigh low 4 4 med low unacc
vhigh med 2 4 med high acc
vhigh med 2 more small high unacc
vhigh high 3 4 big high unacc
vhigh med 4 more small med unacc
low low 2 more med med acc
RandomForest был запущен при прогнозировании последней переменной «Condition».Ниже приведена сводка модели
Call:
randomForest(formula = Condition ~ ., data = TrainSet, ntree = 500,
mtry = 6, importance = TRUE)
Type of random forest: classification
Number of trees: 500
No. of variables tried at each split: 6
OOB estimate of error rate: 2.48%
Confusion matrix:
acc good unacc vgood class.error
acc 244 4 6 2 0.04687500
good 3 44 1 0 0.08333333
unacc 11 1 843 0 0.01403509
vgood 2 0 0 47 0.04081633
Если мы возьмем первый ряд таблицы (тот, что чуть выше нас), мы увидим, что значение «acc» имело 244 правильных прогноза (95%) и 12неправильные прогнозы.Аналогично, у «хорошего» было 44 правильных прогноза (91%) и 4 неправильных прогноза.И так далее для двух других.Общее количество ошибочных прогнозов равно 30 (12 + 4 + 12 + 2). Технически прогнозируемые значения этой модели должны отличаться от фактических на 30 неправильно классифицированных значений.Теперь я попытался получить прогнозируемые значения двумя методами: -
1. First method :- model2$predicted.
2. Second method :- predTrain <- predict(model2, TrainSet, type = "class")
Первый метод дает мне набор прогнозируемых значений, который отличается от фактического в 30 местах, тогда как второй метод дает мне набор данных, который точно равенк фактическим значениям.Я думаю, что первый метод правильный, но парень по ссылке использовал второй.
https://www.r-bloggers.com/how-to-implement-random-forests-in-r/
Не уверен, где мои концепции ошибочны Пожалуйста, помогите.PS: - Я знаю, что был задан похожий вопрос, но я чувствую, что и вопрос, и ответы ниже не были достаточно сложными или легко объяснимыми для меня.Вот почему я задал новый вопрос.
ОБРАЗЕЦ КОДА
set.seed(100)
train <- sample(nrow(data1),0.7*nrow(data1),replace=FALSE)
TrainSet <- data1[train,]
ValidSet <- data1[-train,]
model2 <- randomForest(Condition ~ ., data = TrainSet, ntree = 500, mtry=6,
importance = TRUE)
predTrain <- predict(model2, TrainSet, type = "class")
new1 <- data.frame(actual = TrainSet$Condition, predicted = predTrain)
new2 <- data.frame(actual = TrainSet$Condition, predicted =
model2$predicted)
new1$third <- 0
for(i in 1:nrow(new1))
{
if(new1[i,1] == new1[i,2])
{
new1[i,3] = 1
}else{
new1[i,3] = 0
}
}
new2$third <- 0
for(i in 1:nrow(new2))
{
if(new2[i,1] == new2[i,2])
{
new2[i,3] = 1
}else{
new2[i,3] = 0
}
}
Спасибо, Абхай