Saya memiliki dataset dengan 3 kelas dengan item berikut:
- Kelas 1: 900 elemen
- Kelas 2: 15000 elemen
- Kelas 3: 800 elemen
Saya perlu memprediksi kelas 1 dan kelas 3, yang menandakan penyimpangan penting dari norma. Kelas 2 adalah kasus "normal" default yang tidak saya pedulikan.
Fungsi kerugian apa yang akan saya gunakan di sini? Saya berpikir untuk menggunakan CrossEntropyLoss, tetapi karena ada ketidakseimbangan kelas, ini perlu ditimbang, saya kira? Bagaimana cara kerjanya dalam praktik? Suka ini (menggunakan PyTorch)?
summed = 900 + 15000 + 800
weight = torch.tensor([900, 15000, 800]) / summed
crit = nn.CrossEntropyLoss(weight=weight)
Atau haruskah beratnya dibalik? yaitu 1 / berat?
Apakah ini pendekatan yang tepat untuk memulai atau adakah metode lain / lebih baik yang bisa saya gunakan?
Terima kasih
sumber
Ketika Anda mengatakan: Anda juga dapat menggunakan kelas terkecil sebagai nominator, yang memberikan masing-masing 0,889, 0,053, dan 1,0. Ini hanya penskalaan ulang, bobot relatifnya sama.
Tetapi solusi ini bertentangan dengan yang pertama Anda berikan, bagaimana cara kerjanya?
sumber