[英]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)。 我應該如何設定這個值
謝謝
無法發表評論,因此我將其寫為答案:
兩個建議:
由於每個類都有+ ve和-ve數據,因此應該訓練24個二進制分類器。 然后,當您放入一個測試用例時,如果有多個具有肯定預測的SVM,請選擇分類器具有最高輸出概率的類別。
如果使用LIBSVM設置多類SVM,則在內部它無論如何都會訓練多個二進制SVM。 因此,自己明確設置24個SVM並不奇怪。
它不是強制性的,取決於您的數據。 如果您的班級容易分開,則沒有必要。 從沒有體重開始,看看混亂矩陣 。 如果您的錯誤是在擁擠的班級和稀疏的班級之間進行的,則可能需要對權重進行一些調整。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.