Logistic

如果我認為結果是有序的而不是分類的,我會得到什麼?

  • June 7, 2011

序數和分類變量的預測有不同的方法。

我不明白的是,這種區別有多麼重要。有沒有一個簡單的例子可以說明如果我放棄訂單會出現什麼問題?什麼情況下不重要?例如,如果自變量也是分類/有序的,會有區別嗎?

這個相關問題側重於自變量的類型。在這裡,我問的是結果變量。

編輯: 我看到使用順序結構減少了模型參數的數量這一點,但我仍然不太相信。

這是一個示例(取自有序邏輯回歸的介紹,據我所知,序數邏輯回歸的性能不如多項邏輯回歸:

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 個)的分佈。

polr_vs_multinom

**Edit2:**當我使用以下評分方法時

return(sum(abs(as.numeric(pred)-as.numeric(test_data$apply)))

並懲罰“非常錯誤”的預測,polr 看起來仍然很糟糕,即上面的情節沒有太大變化。

在適當的情況下將 Y 視為序數可以顯著提高功率和精度。這是因為模型中的參數數量要少得多(乘以 k 倍,其中 k 比 Y 的類別數量小一)。有幾種序數模型。最常用的是比例優勢和延續比序數邏輯模型。

引用自:https://stats.stackexchange.com/questions/11687

comments powered by Disqus