機器學習 SVM分類資料偏斜問題

2022-09-17 02:48:11 字數 688 閱讀 3296

引言

問題描述

參與分類的兩個類別樣本數量差異很大,比如說正類有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多分類。常見的方法...