Saya memiliki masalah klasifikasi dengan data yang sangat tidak seimbang. Saya telah membaca bahwa over dan undersampling serta mengubah biaya untuk output kategoris yang kurang terwakili akan mengarah pada pemasangan yang lebih baik. Sebelum ini dilakukan, tensorflow akan mengategorikan setiap input sebagai kelompok mayoritas (dan mendapatkan akurasi lebih dari 90%, sama tidak berartinya).
Saya perhatikan bahwa log persentase terbalik dari setiap grup telah membuat pengganda terbaik yang saya coba. Apakah ada manipulasi yang lebih standar untuk fungsi biaya? Apakah ini diterapkan dengan benar?
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)