순서 변수와 범주 변수를 예측하는 방법에는 여러 가지가 있습니다.
내가 이해하지 못하는 것은이 구별이 어떻게 중요한지입니다. 주문을 취소하면 무엇이 잘못되었는지 분명히 알 수있는 간단한 예가 있습니까? 어떤 상황에서 중요하지 않습니까? 예를 들어, 독립 변수가 모두 범주 형 / 소수 형인 경우 차이가 있습니까?
이 관련 질문 은 독립 변수의 유형에 중점을 둡니다. 여기서는 결과 변수에 대해 묻습니다.
편집 : 순서 구조를 사용하면 모델 매개 변수의 수가 줄어 듭니다. 그러나 여전히 확신하지는 않습니다.
다음은 순서 로지스틱 회귀 분석이 다항 로지스틱 회귀 분석보다 성능이 좋지 않은 것을 볼 수있는 순서화 된 로지스틱 회귀에 대한 소개 에서 가져온 예입니다 .
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 개 중)의 분포를 보여줍니다.
편집 2 : 스코어링 방법으로 사용할 때 다음은
return(sum(abs(as.numeric(pred)-as.numeric(test_data$apply)))
"매우 잘못된"예측에 불이익을 주면 polr은 여전히 나빠 보입니다. 즉, 위의 도표는 크게 변하지 않습니다.
ordered factor
결과를 향상시킬 수 있다고 가정 gradapply$apply <-factor(gradapply$apply, levels= c('unlikely', 'somewhat likely', 'very likely') , ordered = TRUE)
했지만 차이는 없습니다. 정확성을 보면 두 가지가 거의 비슷합니다. 하지만 정확도는 전적으로 의존하기에 좋은 지표는 아닙니다.