在機器學習中,我們獲取的數據往往存在一個問題,就是樣本不均勻。比如你有一個樣本集合,正例有9900個,負例100個,訓練的結果往往是很差的,因為這個模型總趨近於是正例的。
就算全是正那么,也有99%的准確率,看起來挺不錯的,但是我們要預測的負樣本很可能一個都預測不出來。
這種情況,在機器學習中有三個處理辦法,過采樣、欠采樣、再平衡(再縮放)
過采樣:增加一些數據數據,使得正反例數量一致,比如這里,我們增加負例9800個,若單純復制這100個負例,則很可能會導致多重共線性問題,所以實際的處理方法一般根據原始數據進行一些處理。
比如常用的SMOTE算法,通過差值的方法增加樣本數量。
欠采樣:減少一些樣本使得正反例數量一致,比如這里減少9800個正例,但這樣一來就損失了很多數據資源,實際常用的做法是將多的樣本分成很多份,用N個訓練器來訓練,最后去平均。
比如這里,我們可以將正例分成99份100個的集合,99份分別和100個負例組合成訓練集來進行訓練。當然如果正負例的數量差距太大的話可能會有很多個訓練器了。
再平衡:一般的分類算法訓練出來是一個0-1的值,一般大於等於0.5的就是正,小於0.5的為負例。再平衡的思想就是根據正負樣本數量的比例對訓練結果判定的調整。
通用的算法是:>=正例數量/總數量,則為正;<正例數量/總數量為負
在這里我們的判定改為9900/(9900+100)=0.99
所以預測結果當大於等於0.99時候我們判定為是正例。