[問題] 在SVM取得分類界線(decision boundary)

看板R_Language作者時間8年前 (2017/01/11 11:43), 8年前編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/1
[問題類型]: 程式諮詢(我想用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
用predict(svm_model, dt) 其中 dt 中先放很密的數列
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
我覺得是這樣。和你一樣在str(svm_model)找不到解。
01/11 15:51, 3F

01/18 18:00, , 4F
用mds降維,然後把4類結果用不同顏色標上去,再把sv畫上去
01/18 18:00, 4F

01/18 18:00, , 5F
。試試……
01/18 18:00, 5F
文章代碼(AID): #1OTQdpAD (R_Language)
文章代碼(AID): #1OTQdpAD (R_Language)