Dengesiz verilerle bir sınıflandırma problemim var. Aşırı ve yetersiz örneklemenin yanı sıra yeterince temsil edilmeyen kategorik çıktıların maliyetini değiştirmenin daha iyi uyuma yol açacağını okudum. Bu yapılmadan önce tensorflow her girdiyi çoğunluk grubu olarak sınıflandırır (ve anlamsız olduğu gibi% 90'ın üzerinde doğruluk kazanır).
Her grubun ters yüzdesinin günlüğünün, denediğim en iyi çarpanı yaptığını fark ettim. Maliyet fonksiyonu için daha standart bir manipülasyon var mı? Bu doğru bir şekilde uygulandı mı?
from collections import Counter
counts = Counter(category_train)
weightsArray =[]
for i in range(n_classes):
weightsArray.append(math.log(category_train.shape[0]/max(counts[i],1))+1)
class_weight = tf.constant(weightsArray)
weighted_logits = tf.mul(pred, class_weight)
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(weighted_logits, y))
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)