您好,我正在尝试使用kernlab
包对R中的不平衡数据集进行分类,因为类分布不是1:1。我在ksvm()
函数调用中使用class.weights选项,但是当我添加或删除权重时,在分类场景中没有得到任何差异?所以问题是声明类权重的正确语法是什么?
我正在使用以下函数调用:
model = ksvm(dummy[1:466], lab_tr,type='C-svc',kernel=pre,cross=10,C=10,prob.model=F,class.weights=c("Negative"=0.7,"Positive"=0.3))
#this is the function call with class weights
model = ksvm(dummy[1:466], lab_tr,type='C-svc',kernel=pre,cross=10,C=10,prob.model=F)
有没有人能对此发表评论,我是否遵循了添加权重的正确语法?我还发现,如果我们将权重与prob.model=T
一起使用,ksvm
函数将返回错误!
发布于 2010-07-20 04:15:21
你的语法是正确的,但在机器学习中,不工作类平衡的问题是相当普遍的;在某种程度上,从更大的类中删除一些对象是唯一保证有效的方法,但它仍然可能是错误增加的来源,并且必须小心以智能的方式这样做(在SVM中,潜在的支持向量应该具有优先级--当然,现在存在如何定位它们的问题)。
你也可以尝试将重量提高到简单的长度比,比如说十倍,并检查它是否有一点帮助,或者幸运的是,它对另一边的不平衡有一定的帮助。
https://stackoverflow.com/questions/3282916
复制相似问题