Có các phương pháp khác nhau để dự đoán các biến số thứ tự và phân loại.
Điều tôi không hiểu, là sự khác biệt này quan trọng như thế nào. Có một ví dụ đơn giản nào có thể làm rõ những gì sai nếu tôi bỏ đơn đặt hàng? Trong hoàn cảnh nào nó không quan trọng? Ví dụ, nếu các biến độc lập cũng là tất cả phân loại / thứ tự, liệu có sự khác biệt?
Câu hỏi liên quan này tập trung vào loại biến độc lập. Ở đây tôi hỏi về các biến kết quả.
Chỉnh sửa: Tôi thấy điểm sử dụng cấu trúc đơn hàng làm giảm số lượng tham số mô hình, nhưng tôi vẫn không thực sự bị thuyết phục.
Dưới đây là một ví dụ (được lấy từ phần giới thiệu về hồi quy logistic có trật tự , theo như tôi có thể thấy hồi quy logistic thông thường không hoạt động tốt hơn hồi quy logistic đa phương:
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))
trong đó cho thấy sự phân phối số lượng dự đoán đúng (trong số 40) của cả hai thuật toán.
Edit2: Khi tôi sử dụng làm phương pháp cho điểm như sau
return(sum(abs(as.numeric(pred)-as.numeric(test_data$apply)))
và phạt các dự đoán "rất sai", polr vẫn có vẻ tệ, tức là cốt truyện ở trên không thay đổi nhiều.
ordered factor
, điều này sẽ cải thiện kết quả: gradapply$apply <-factor(gradapply$apply, levels= c('unlikely', 'somewhat likely', 'very likely') , ordered = TRUE)
nhưng nó không có gì khác biệt. Nếu bạn nhìn vào độ chính xác, hai cái này khá giống nhau. Độ chính xác không phải là một số liệu tốt để chỉ dựa vào.