序数和分类变量的预测有不同的方法。
我不明白的是,这种区别有多么重要。有没有一个简单的例子可以说明如果我放弃订单会出现什么问题?什么情况下不重要?例如,如果自变量也是分类/有序的,会有区别吗?
这个相关问题侧重于自变量的类型。在这里,我问的是结果变量。
编辑: 我看到使用顺序结构减少了模型参数的数量这一点,但我仍然不太相信。
这是一个示例(取自有序逻辑回归的介绍,据我所知,序数逻辑回归的性能不如多项逻辑回归:
library(nnet)
library(MASS)
gradapply <- read.csv(url("http://www.ats.ucla.edu/stat/r/dae/ologit.csv"), colClasses=c("factor", "factor", "factor", "numeric"))
ordered_result <- function() {
train_rows <- sample(nrow(gradapply), round(nrow(gradapply)*0.9))
train_data <- gradapply[train_rows,]
test_data <- gradapply[setdiff(1:nrow(gradapply), train_rows),]
m <- polr(apply~pared+gpa, data=train_data)
pred <- predict(m, test_data)
return(sum(pred==test_data$apply))
}
multinomial_result <- function() {
train_rows <- sample(nrow(gradapply), round(nrow(gradapply)*0.9))
train_data <- gradapply[train_rows,]
test_data <- gradapply[setdiff(1:nrow(gradapply), train_rows),]
m <- multinom(apply~pared+gpa, data=train_data)
pred <- predict(m, test_data)
return(sum(pred==test_data$apply))
}
n <- 100
polr_res <- replicate(n, ordered_result())
multinom_res <- replicate(n, multinomial_result())
boxplot(data.frame(polr=polr_res, multinom=multinom_res))
它显示了两种算法的正确猜测数(共 40 个)的分布。
Edit2:当我使用以下评分方法时
return(sum(abs(as.numeric(pred)-as.numeric(test_data$apply)))
并惩罚“非常错误”的预测,polr 看起来仍然很糟糕,即上面的情节没有太大变化。