因此,我在創建的多標籤數據集(約20000個樣本)上訓練了一個深度神經網絡。我切換SOFTMAX乙狀結腸和嘗試(使用亞當優化器),以儘量減少:用於多標籤分類的不平衡數據集
tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(labels=y_, logits=y_pred)
我結束了與這位國王預測(漂亮「恆」):
Prediction for Im1 : [ 0.59275776 0.08751075 0.37567005 0.1636796 0.42361438 0.08701646 0.38991812 0.54468459 0.34593087 0.82790571]
Prediction for Im2 : [ 0.52609032 0.07885984 0.45780018 0.04995904 0.32828355 0.07349177 0.35400775 0.36479294 0.30002621 0.84438241]
Prediction for Im3 : [ 0.58714485 0.03258472 0.3349618 0.03199361 0.54665488 0.02271551 0.43719986 0.54638696 0.20344526 0.88144571]
起初,我還以爲我只需要爲每個班級找到一個門檻值。
但我注意到,例如,在我的20000個樣本中,第一類出現約10800,所以是0.54的比率,它是我每次預測的值。所以我認爲我需要找到解決tuis「不平衡數據集」問題的方法。
我想減少我的數據集(Undersampling)每個班級的發生次數相同,但只有26個樣本對應我的一個班級...這會讓我失去很多樣本...
我讀過關於過度取樣或關於更多的懲罰更少的類是罕見的,但沒有真正理解它是如何工作的。
有人可以分享一些關於這些方法的解釋嗎?
在實踐中,在Tensorflow上,是否有函數可以幫助實現這個功能?
其他建議?
謝謝:)
PS:Neural Network for Imbalanced Multi-Class Multi-Label Classification這篇文章提出了同樣的問題,但沒有答案!
爲什麼不使用您擁有的所有樣本,並使用該不平衡數據來使用異常檢測算法? – Gabriel
如果我理解的很好,你的建議是在我的(9)班(在我的數據集中「很好」代表)上訓練我的網絡,然後在我的「代表性很差」的班級上訓練另一個網絡(就像在這個二進制分類上做的那樣類)? –
不,我建議使用算法來檢測非常小的數字,這對於絕大多數數據來說是不同的。他們通常被稱爲異常檢測算法,因爲通常當您嘗試檢測異常時,您有很多「好」樣本但很少「異常」樣本。然而,這些算法通常用於在兩個類別之間進行分類。所以也許這對你不好,但可能是更復雜的分類過程的一部分 – Gabriel