我正在嘗試使用tensorflow(V.1.1.0)對輸出層中的單個神經元執行二進制分類。下面的代碼片段對應於我目前使用的損失函數和優化器(靈感來自答案here)。然而Tensorflow中的非平衡二元分類
ratio=.034 #minority/population ratio
learning_rate=0.001
class_weight=tf.constant([[ratio,1.0-ratio]],name='unbalanced_ratio') #weight vector, (lab_feed is one_hot labels)
weight_per_label=tf.transpose(tf.matmul(lab_feed,tf.transpose(class_weight)),name='weights_per_label')
xent=tf.multiply(weight_per_label,tf.nn.sigmoid_cross_entropy_with_logits(labels=lab_feed,logits=output),name='loss')
loss=tf.reduce_mean(xent)
optimizer = tf.train.GradientDescentOptimizer(learning_rate = learning_rate,name='GradientDescent').minimize(loss)
我的問題是,由於某種原因,所有實例被列爲時代的進展後同一類。我是否必須在中途停止訓練,或者是否有損失功能出現問題?
我是否正確理解您的培訓混淆矩陣:1800個屬於0類的訓練樣本,只有130個屬於1類? – B1T0
@ B1T0是的,這是正確的。 – mamafoku
這是一個問題。你將不得不平衡你的數據集。有關該主題的互聯網上有很多信息。 [This](http://machinelearningmastery.com/tactics-to-combat-imbalanced-classes-in-your-machine-learning-dataset/)是一個很好的介紹。 – Flomp