Ich habe einen Datensatz mit 3 Klassen mit folgenden Elementen:
- Klasse 1: 900 Elemente
- Klasse 2: 15000 Elemente
- Klasse 3: 800 Elemente
Ich muss Klasse 1 und Klasse 3 vorhersagen, die wichtige Abweichungen von der Norm signalisieren. Klasse 2 ist der Standardfall, der mir egal ist.
Welche Art von Verlustfunktion würde ich hier verwenden? Ich habe überlegt, CrossEntropyLoss zu verwenden, aber da es ein Klassenungleichgewicht gibt, müsste dies wohl gewichtet werden? Wie funktioniert das in der Praxis? So (mit PyTorch)?
summed = 900 + 15000 + 800
weight = torch.tensor([900, 15000, 800]) / summed
crit = nn.CrossEntropyLoss(weight=weight)
Oder sollte das Gewicht umgekehrt werden? dh 1 / Gewicht?
Ist dies der richtige Ansatz oder gibt es andere / bessere Methoden, die ich verwenden könnte?
Vielen Dank