keras中處理樣本不平衡

2021-09-14 06:36:14 字數 1029 閱讀 9209

參考文獻:

兩者的區別為:

class_weight—主要針對的上資料不均衡問題,比如:異常檢測的二項分類問題,異常資料僅佔1%,正常資料佔99%; 此時就要設定不同類對loss的影響。

sample_weight—主要解決的是樣本質量不同的問題,比如前1000個樣本的可信度,那麼它的權重就要高,後1000個樣本可能有錯、不可信,那麼權重就要調低。

class_weight的使用:

cw = 

model.fit(x_train, y_train,batch_size=batch_size,epochs=epochs,verbose=1,callbacks=cbks,validation_data=(x_test, y_test), shuffle=true,class_weight=cw)

sample_weight的使用:

from sklearn.utils import class_weight

list_classes = ["toxic", "severe_toxic", "obscene", "threat", "insult", "identity_hate"]

y = train[list_classes].values

sample_weights = class_weight.compute_sample_weight('balanced', y)

model.fit(x_t, y, batch_size=batch_size, epochs=epochs,validation_split=0.1,sample_weight=sample_weights, callbacks=callbacks_list)

其中,如何確定權重呢?

訓練時,設定的權重:

class_weight=

t也是權重0-1,根據需要自己設定,就是正負樣本權重1:t,如t=1,則二者loss的權重是1:1

參考  (sklearn.utils.class_weight來計算權重)

樣本不平衡問題

樣本不平衡是指 不同類別的樣本差別比較大,比如說正類和負類的樣本比例為50 1。處理樣本不平衡的原因 一般而已,如果類別不平衡比例超過4 1,那麼其分類器會大大地因為資料不平衡性而無法滿足分類要求的。因此在構建分類模型之前,需要對分類不均衡性問題進行處理。在前面,我們使用準確度這個指標來評價分類質量...

樣本不平衡的處理方法

樣本不平衡其實的主要思想就是過取樣和欠取樣,但是由於在複製少量標籤的樣本或者篩選大量標籤的樣本方法不同衍生出了不同的處理手段 1.隨機過取樣 複製標籤少的樣本使得好壞比滿足建模需要 2.隨機欠取樣 抽取標籤多的樣本使得好壞比滿足建模需要 會丟失樣本資訊 3.easyensemble 標籤多的樣本進行...

樣本不平衡問題小記

來準備用vgg來做些fine tuning快速交個差,結果半天卡在0.3公升不上去 入行沒多久,不能肯定是方向有問題,找了個pascal voc跑跑分類 結果發現總是卡在0.2左右,在metric.py裡改了幾行 草根就該用mxnet 把predict label和ground truth打出來,發...