[問題] 在SVM取得分類界線(decision boundary)
[問題類型]:
程式諮詢(我想用R做某件事情,但是我不知道要怎麼用R寫出來)
[軟體熟悉度]:
使用者(已經有用R做過不少作品)
[問題敘述]:
我有一個類別變數,有四個levels,
表達該列的受試者為年輕或老年、男性或女性。(YM、YF、OM、OF)
另有六個從0到8的測驗九點量表分數(可以想成是同一個測驗裡的不同題)。
我想達到的目的是讓SVM學習如何分辨這四個群體的表現,
進而告訴我這四個群體的差別(decision boundary)在哪。
更精確地說,我希望有個東西可以量化這四個群組的表現,
例如老年男性在這六題較其它三組給出較高的分數,
老年女性只在第一題稍高但其他都偏低,等等。
原本MANOVA再做事後分析應該就能解決這個問題,
但是六題每一題的分數在受試者間給出的都不是常態分佈,
所以目前嘗試用SVM解決...
或是大家有更好的辦法嗎?
gamma和cost的選擇已經調整過,選擇表現最佳者,
cross-validation也有做,
機器學習的結果已經確認是有效的,但我即使用str去看做出來的模型,
還是不知道decision boundary放在哪裡。
[程式範例]:
svm.model <- svm(Subject_AgeSex ~ X1 + X2 + X3 + X4 + X5 + X6,
data = train.data,
scale = FALSE, cost = 64, gamma = 0.05, cross = 10)
[環境敘述]:
R version 3.3.2 (2016-10-31)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X El Capitan 10.11.6
locale:
[1] zh_TW.UTF-8/zh_TW.UTF-8/zh_TW.UTF-8/C/zh_TW.UTF-8/zh_TW.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] ggplot2_2.2.0 e1071_1.6-7
loaded via a namespace (and not attached):
[1] colorspace_1.3-2 scales_0.4.1 assertthat_0.1 lazyeval_0.2.0
[5] plyr_1.8.4 class_7.3-14 tools_3.3.2 gtable_0.2.0
[9] tibble_1.2 Rcpp_0.12.8 grid_3.3.2 munsell_0.4.3
[關鍵字]:
SVM
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.121.113
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1484106227.A.28D.html
※ 編輯: clsmbstu (140.112.121.113), 01/11/2017 13:22:26
※ 編輯: clsmbstu (140.112.121.113), 01/11/2017 13:24:49
→
01/11 13:25, , 1F
01/11 13:25, 1F
→
01/11 15:10, , 2F
01/11 15:10, 2F
這樣的話,我只能不斷透過嘗試去尋找它在每一種狀況下的邊界囉?
例如說:
newdata <- as.data.frame(matrix(rep(seq(0, 8, 0.01), times = 6),
nrow = length(seq(0, 8, 0.01)), ncol = 6))
names(newdata) <- paste("X", 1:6, sep = "")
predict(svm.model, newdata)
這種狀況是X1 ~ X6同步變動,
如果想看其中之一/之二比較高的狀況,
就要自行調整newdata的內容,我有理解錯嗎?謝謝!
※ 編輯: clsmbstu (140.112.121.113), 01/11/2017 15:50:18
→
01/11 15:51, , 3F
01/11 15:51, 3F
推
01/18 18:00, , 4F
01/18 18:00, 4F
→
01/18 18:00, , 5F
01/18 18:00, 5F
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章