引言
問題描述
參與分類的兩個類別樣本數量差異很大,比如說正類有10,000個,負類只有100個
由於負類樣本較少,算出的分類面會偏向於負類方向
解決方法
我們可以對正類的樣本用乙個c+,也就是懲罰因子,對負類的樣本用另乙個c-
c+:c-=1:100
表示我們重視負類的犯錯
有時候好需要考慮以下原因
但是還存在另外乙個造成資料偏移的原因,而且是真實的原因,即負類的樣本分佈不夠廣,沒有擴充到負類本應該有的區域。
比如在想給政治類和體育類的文章做分類,政治文章很多,也很廣,而體育類只提供了幾篇關於籃球的文章,這時分類會明顯偏向於政治類
如果要給體育類文章增加樣本,但增加的樣本仍然全都是關於籃球的,那結果就是雖然體育類文章在數量上可以達到與政治類的一樣多,但過於集中,結果仍然會偏向政治類
所以確定c+和c-比例更好的方法應該是衡量他們分布的情況
具體做法可以是給負類找乙個高維空間中的超球體,它包含了所有負類的樣本,再給正類找乙個,比一比兩個球的半徑
半徑大的分布廣,懲罰因子小
除此之外,還有類別本身的特徵區別,比如有些話題涉及的面很窄,如計算機類的文章就不如文學類的文章那麼天馬行空,這個時候即便超球的半徑差異很大,也不應該賦予不同的懲罰因子
所以一般的做法是根據需要,選擇簡單合用的就行,例如libsvm就直接只用樣本數量的比
機器學習 SVM做多分類問題
引言 svm做二分類問題很簡單明瞭,但是如何用二分類構建多分類問題,自己查詢了部分資料,發現普遍分為兩種,一種是直接法,直接求解多目標函式優化問題,但這種方法計算量很大,不實用,另外一種是間接法,通過多個二分類來實現多分類,常見的有一對多和一對一兩種 最後針對一對一要構建n平方個二分類器,如果n過大...
機器學習之線性分類SVM
coding utf 8 created on fri nov 30 21 05 40 2018 author muli import matplotlib.pyplot as plt import numpy as np from sklearn import datasets,cross val...
機器學習之SVM多分類
以下內容參考 王正海 基於決策樹多分類支援向量機岩性波譜分類 svm本身是應用於二分類的,所以在處理多分類並且想應用svm有必要進行改進svm如果直接在目標函式上進行修改的話,就是將多個分類面的引數合併到乙個最優化問題上,顯然難度太大。但是對於lr的話,可以直接拓展為softmax多分類。常見的方法...