मुझे अत्यधिक असंतुलित डेटा के साथ एक वर्गीकरण समस्या है। मैंने पढ़ा है कि ओवररिप्टर्ड श्रेणीबद्ध आउटपुट के लिए लागत को बदलने के साथ-साथ अंडरसम्पलिंग बेहतर फिटिंग की ओर ले जाएगा। इससे पहले कि यह किया जाता था कि टेंसरफ़्लो प्रत्येक इनपुट को बहुमत समूह के रूप में वर्गीकृत करेगा (और 90% से अधिक सटीकता प्राप्त करेगा, जैसा कि अर्थहीन है)।
मैंने देखा है कि प्रत्येक समूह के व्युत्क्रम प्रतिशत के लॉग ने सबसे अच्छा गुणक बनाया है जो मैंने कोशिश की है। क्या लागत समारोह के लिए अधिक मानक हेरफेर है? क्या यह सही ढंग से लागू किया गया है?
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)