您好我正在尝试使用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
函数会返回错误!
答案 0 :(得分:0)
你的语法还可以,但是非工作级平衡的问题在机器学习中很常见;在某种程度上,从较大的类中删除一些对象是唯一可以保证工作的方法,但它仍然可能是错误增加的来源,并且必须小心谨慎地以智能方式进行(在SVM中潜在的支持向量)应该有优先权 - 当然现在有一个问题如何找到它们 你也可以尝试在简单的长度比率上增加重量,比方说十倍,并检查它是否有助于甚至一点点或幸运地反过来超过另一方的不平衡。