Існують різні методи прогнозування порядкових та категоричних змінних.
Я не розумію, як це має значення ця відмінність. Чи є простий приклад, який може зрозуміти, що піде не так, якщо я скасую замовлення? За яких обставин це не має значення? Наприклад, якщо всі незалежні змінні також будуть категоричними / порядковими, чи не буде різниці?
Це пов'язане питання зосереджується на типі незалежних змінних. Тут я запитую про змінні результатів.
Редагувати: Я бачу сенс, що використання структури замовлення зменшує кількість параметрів моделі, але я все ще не дуже переконаний.
Ось приклад (взятий із вступу до упорядкованої логістичної регресії, де, наскільки я бачу, порядкова логістична регресія не працює краще, ніж багаточленна логістична регресія:
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 все ще виглядає погано, тобто сюжет вище не сильно змінюється.
ordered factor
, що покращило б результати: gradapply$apply <-factor(gradapply$apply, levels= c('unlikely', 'somewhat likely', 'very likely') , ordered = TRUE)
але це не має ніякої різниці. Якщо ви подивитеся на точність, вони в значній мірі схожі. Точність не є хорошим показником, на який можна покладатися лише.