繁体   English   中英

randomForest [R]不接受逻辑变量作为响应,但接受它作为预测器吗?

[英]does randomForest [R] not accept logical variable as response, but accept it as predictor?

嗨我在R中使用randomForest并且它不接受逻辑变量作为响应(Y),但似乎接受它作为预测器(X)。 我有点惊讶b / c我认为逻辑基本上是2级因素......

我的问题是:randomForest是否接受逻辑作为预测器,而不是响应? 为什么会这样? 其他常见模型(glmnet,svm,...)是否接受逻辑变量?

任何解释/讨论都表示赞赏。 谢谢

N = 100

data1 = data.frame(age = sample(1:80, N, replace=T),
                   sex = sample(c('M', 'F'), N, replace=T),
                   veteran = sample(c(T, F), N, replace=T),
                   exercise = sample(c(T, F), N, replace=T))

sapply(data1, class)
#       age       sex   veteran  exercise 
# "integer"  "factor" "logical" "logical" 

# this doesnt work b/c exercise is logical
rf = randomForest(exercise ~ ., data = data1, importance = T)
# Warning message:
#         In randomForest.default(m, y, ...) :
#         The response has five or fewer unique values.  Are you sure you want to do regression?

# this works, and veteran and exercise (logical) work as predictors
rf = randomForest(sex ~ ., data = data1, importance = T)
importance(rf)
#                   F         M MeanDecreaseAccuracy MeanDecreaseGini
# age      -2.0214486 -7.584637            -6.242150         6.956147
# veteran   4.6509542  3.168551             4.605862         1.846428
# exercise -0.1205806 -6.226174            -3.924871         1.013030

# convert it to factor and it works
rf = randomForest(as.factor(exercise) ~ ., data = data1, importance = T)

这种行为的原因是randomForest也能够进行回归(除了分类)。 您还可以在获得的警告消息中观察它:

响应具有五个或更少的唯一值。 你确定要做回归吗?

该函数根据给定响应向量的类型决定回归和分类。 如果它是一个因子分类完成,否则回归(这是有道理的,因为回归响应向量永远不会是因子/分类变量)。

关于你的问题:在输入数据集(预测器)中使用逻辑变量没有问题,randomForest能够像你期望的那样完美地处理它。

training_data <- data.frame(x = rep(c(T,F), times = 1000)) # training data with logical
response <- as.factor(rep(c(F,T), times = 1000)) # inverse of training data
randomForest(response ~ ., data = training_data) # returns 100% accurate classifier

编辑:

为什么他们不在源代码中包含这种强制(逻辑因素)?

这是猜测,但它可能是为了一致性和简单性。 他们将不得不改变文档

如果假设一个因子,则假设为回归

如果是因子或逻辑向量,则假定分类,否则假设回归

然后人们可能会出现要求角色......如果您的逻辑响应向量仅包含TRUE或FALSE值,则可能会出现问题。 如果你强迫这样的向量因子,它将只有一个级别。 (虽然在结果始终为FALSE的数据集上训练模型并不合理)

但如果作者包括这种更“智能”的强制,他们就必须处理这些问题并定义这些边界案件中的行为,并将其记录下来。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM