Как применить веса классов к использованию Pytorch CrossEntropyLoss для решения проблемы несбалансированной классификациPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как применить веса классов к использованию Pytorch CrossEntropyLoss для решения проблемы несбалансированной классификаци

Сообщение Anonymous »

Я пытаюсь использовать функцию взвешенных потерь для устранения дисбаланса классов в моих данных. Моя проблема - это проблема с несколькими классами и несколькими выходами. Например (мои данные имеют пять столбцов вывода/цели (выход_1, вывод_2, вывод_3), и у меня есть три класса (класс_0, класс_1 и класс_2) в каждом целевом столбце. В настоящее время я использую функцию потери перекрестной энтропии pytorch https://pytorch .org/docs/stable/generated/torch.nn.CrossEntropyLoss.html, и я вижу, что у него есть параметр веса, но я понимаю, что один и тот же вес будет применяться равномерно к каждому выходу/цели, но я хочу применить отдельный веса для каждого класса в каждом выходе/цели.
Для конкретности я мог бы иметь данные, которые выглядят так



A
B
C
D
E
OUTPUT_1
OUTPUT_2
OUTPUT_3



< tr>
5,65
3,56
0,94
9,23
6,43
0
2
1


7,43
3,95
1,247,22
2,66
0
0
0


9,31
2,42
2,91
2,64
6,28
2
0
2


8,19
5,12
1,32
3,12
8,41
< td>0
2
0


9,35
1,92
3,12
4,13
3.14
0
1
1


8,43
9,72
7,23
8,29
9,18
1
0
2< /td>


4,32
2,12
3,84
9,42
8,19
0
1
0


3,92
3,91< /td>
2,90
8,19
8,41
2
0
2


7,89
1,92
4,12
8,19
7,28
0
1
2


5,21
2,42
3,10
0,311.31
2
0
0



при этом

Код: Выделить всё

     the proportion in output 1 is : 0 = 0.6, 1 = 0.1, 2 = 0.3
the proportion in output 2 is : 0 = 0.4, 1 = 0.3, 2 = 0.3
the proportion in output 3 is : 0 = 0.4, 1 = 0.2, 2 = 0.4
Я хочу применить вес класса на основе распределения классов в каждом выходном столбце, чтобы он перенормировал (или перебалансировал? не уверен, какую терминологию здесь использовать) класс 1 до 0,15. а класс 0 и класс 2 — по 0,425 каждый (поэтому для выхода_1 веса будут [0,425/0,6, 0,15/0,1, 0,425/0,3], для выхода 2 — [0,425/0,4, 0,15/0,3, 0,425/0,3). ] и т. д). Скорее, то, что я понимаю, что параметр веса в функции кроссэнтропийной потери pytorch в настоящее время делает, заключается в том, что он применяет один вес класса к каждому выходному столбцу. Мне интересно, не упускаю ли я что-то, и есть ли способ сделать это с помощью функции кроссэнтропилоссии pytorch?

Подробнее здесь: https://stackoverflow.com/questions/788 ... e-an-imbal
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»