1

嗨,我正在尝试使用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=Tksvm则会返回错误!

4

1 回答 1

0

你的语法没问题,但是非工作类平衡的问题在机器学习中相当普遍;在某种程度上,从较大的类中删除一些对象是唯一保证有效的方法,但它仍然可能是错误增加的来源,并且必须小心以一种智能的方式(在 SVM 中,潜在的支持向量应该有优先权 - 当然现在有一个问题如何找到它们)。
你也可以尝试通过简单的长度比来增加重量,比如说十倍,并检查它是否有帮助甚至一点点,或者幸运的是,它是否超过了另一侧的不平衡。

于 2010-07-19T20:15:20.710 回答