ฉันมีปัญหาการจำแนกข้อมูลที่มีความไม่สมดุลสูง ฉันได้อ่านแล้วการสุ่มตัวอย่างเกินจริงและการเปลี่ยนแปลงค่าใช้จ่ายสำหรับผลลัพธ์ที่เป็นหมวดหมู่ที่ต่ำกว่าจะนำไปสู่การปรับที่ดีขึ้น ก่อนที่สิ่งนี้จะทำเสร็จแล้วก็จะแบ่งออกเป็นแต่ละกลุ่มส่วนใหญ่เทนเซอร์กระแส (และได้รับความแม่นยำมากกว่า 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)