簡體   English   中英

在libsvm中訓練不平衡數據

[英]training unbalanced data in libsvm

我有25個班級,班級0包含了所有其他24個班級的所有負樣本,因此該班級的樣本數量比其他班級要大得多(例如,大10倍,因為它應包括來自24個班級的所有否定樣本其他班)

現在我的問題是,當我想訓練該數據集時該怎么辦?

是否必須使用libsvm普遍存在的無平衡訓練選項? -w0 1 -w1 ....

我的意思是必須使用此選項嗎?

因為當我在不使用此選項的情況下訓練數據時它提供了99.8%的准確度來分離類,並且在我測試此准確的模型時! 對於某些班級,我獲得了100%的准確性,對於某些班級,我得到了0.0%!!!

我的意思是,對於某些班級,它不會丟失任何樣本,但對於其他班級,它將始終返回0! 這意味着它是陰性樣品!

我想使用此選項,但我不知道它的規則。 我的意思是我應該如何使用該選項為類設置值?

假設每個類別中的樣本數量為:

等級0-> 3433

1級-> 745

2級-> 232

3級-> 53

等級23-> 975

我應該如何為每個班級設置wi?我應該在[0,1]或[-1 1]或(-inf + inf)之間縮放它們還是什么?

摘要>

1)。 我的數據集必須使用-wi選項嗎?

2)。 我應該如何設定這個值

謝謝

無法發表評論,因此我將其寫為答案:

兩個建議:

  1. 減少class0的權重
  2. 或采用兩步法:
    • 合並其他24個類別的所有示例,將它們視為一個類別,並構建一個二進制分類器
    • 僅針對正面示例構建24路分類器。 如果最后一步的分類結果為肯定,則使用它。

由於每個類都有+ ve和-ve數據,因此應該訓練24個二進制分類器。 然后,當您放入一個測試用例時,如果有多個具有肯定預測的SVM,請選擇分類器具有最高輸出概率的類別。

如果使用LIBSVM設置多類SVM,則在內部它無論如何都會訓練多個二進制SVM。 因此,自己明確設置24個SVM並不奇怪。

它不是強制性的,取決於您的數據。 如果您的班級容易分開,則沒有必要。 從沒有體重開始,看看混亂矩陣 如果您的錯誤是在擁擠的班級和稀疏的班級之間進行的,則可能需要對權重進行一些調整。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM