2010-07-19 58 views
1

嗨,我嘗試分類爲R中不平衡數據集中使用kernlab包,作爲類的分佈不是1:1。我正在使用的ksvm()函數調用class.weights的選項,但我不明白的分類有什麼區別當我添加權重或刪除權重的情況?所以問題是聲明類權重的正確語法是什麼?Kernlab中的類重量語法?

我使用下面的函數調用:

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

你的語法是好的,但不是-工人階級平衡的問題是機器學習相當普遍;在某種程度上,從大類中移除一些對象是唯一可以保證正常工作的方法,但它可能是錯誤增加的來源,並且必須小心地以智能的方式進行(在SVM中,潛在的支持向量應該有優先權 - 當然現在有一個問題如何找到他們)。
你也可以嘗試在簡單的長度比率上增加權重,讓我們說十倍,並檢查它是否有助於甚至是幸運的,而不是過度失衡到對方。

+0

同意您提供的解決方案!將嘗試這種方法。 – 2010-07-20 13:09:19