2

Есть ли способ ввести «неизвестную» категорию в случайном лесу или сделать двоичную классификацию?Двоичная классификация или неизвестный класс в случайном лесу в R

Я хотел бы подать данные в случайный лес, который я бы хотел только классифицировать, если процент голосов составляет более 70%. У меня всего 6 категорий, поэтому я сначала создал один случайный лес, а значения отсечения автоматически по умолчанию равны c(16.6, 16.6, 16.6, 16.6, 16.6, 16.6). Это довольно низкое, так что вместо этого, я хотел бы либо:

  • Создать один случайный лес для каждой категории (6 в общей сложности), который использует бинарную классификацию (либо он относится к категории или нет - так его неизвестно), затем подают неизвестные данные в следующее дерево и так далее.
  • Или я хотел бы иметь возможность придерживаться одного случайного леса, но вводить новые значения отсечения, которые позволяют мне указать, что класс «выигрыш» должен иметь долю голосов более 70%, а любой данные, которые не обозначены как «неизвестные».

Второй способ в настоящее время представляет собой проблему, как отрезанные значения необходимо подвести к 1, а первое предложение является проблемой, поскольку я не могу показаться, чтобы выяснить, как сделать бинарную классификацию R.

Есть ли в любом случае, что любой из них можно преодолеть, и ввести «неизвестную» категорию? Спасибо

ответ

4

Я бы посоветовал вам сохранить его простым и не создавать несколько взаимосвязанных двоичных моделей RF. Вы можете принять другое правило агрегации, чем «большинство голосов». Вы можете извлечь распределение голосов из каждого прогнозируемого образца и отсюда реализовать, например. Значения правило 70% большинство

enter image description here

@ «Второй способ в настоящее время представляет собой проблему, как отрезанные значения необходимо подвести к 1» -Technically, отрезанные не нужно подводить к одному. В randomForest предсказания класса делятся на отсечение соответствующего класса, и наибольшее число является победителем большинства.

library(randomForest) 
library(plotrix) 
set.seed(1234) 
data(iris) 
#iris is too easy and therefore applying jitter 
iris[1:4] = lapply(iris[1:4],jitter,amount=2) 
plot(iris,col=iris$Species) 
test = sample(150,25) #reserve a test set 
rf = randomForest(Species~.,data=iris[-test,]) 

#predict test, use type=prob to extract vote fractions 
preds = predict(rf,iris[test,],type="prob") 

#make 70% rule 
class.winner = apply(preds,1,function(aPred) c(which(aPred>=.7),NA)[1]) 

#plot prediction in probability simplex 
triax.plot(preds,col.symbols=iris$Species[test],main="col is true class, o is all pred, x is >=70% preds") 
triax.points(preds,col.symbols=unlist(class.winner),pch=4)