作者clsmbstu ()
看板R_Language
标题[问题] 在SVM取得分类界线(decision boundary)
时间Wed Jan 11 11:43:45 2017
[问题类型]:
程式谘询(我想用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://webptt.com/cn.aspx?n=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
1F:→ clsmbstu: 编辑内容:补充问题叙述与分析目的 01/11 13:25
2F:→ andrew43: 用predict(svm_model, dt) 其中 dt 中先放很密的数列 01/11 15:10
这样的话,我只能不断透过尝试去寻找它在每一种状况下的边界罗?
例如说:
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
3F:→ andrew43: 我觉得是这样。和你一样在str(svm_model)找不到解。 01/11 15:51
4F:推 vennu: 用mds降维,然後把4类结果用不同颜色标上去,再把sv画上去 01/18 18:00
5F:→ vennu: 。试试…… 01/18 18:00