Функция за загуба за небалансиран двоичен класификатор на клас в потока Tensor

Опитвам се да приложа дълбоки учения за бинарен класификационен проблем с висок клас дисбаланс между целевите класове (500 000, 31 000). Искам да напиша персонализирана функция за загуби, която трябва да бъде: минимизиране (100 - ((предсказан_малък клас)/(общ_малък клас)) * 100)

класификатор

Оценявам всички намеци за това как мога да изградя тази логика.

6 отговора

Кодът, който предложихте, ми се струва грешен. Отслабването трябва да се умножи по тегло, съгласен съм.

Но ако умножите дневника по теглото на класа, завършете с:

вторият мандат не е равно на:

За да покажем това, можем да пренапишем последния като:

Ето кода, който предлагам:

Можете да добавяте тежести на класа към функцията за загуби, като умножавате регистрационните файлове. Редовната загуба на кръстосана ентропия е както следва:

По този начин, като умножавате регистрационните файлове, предефинирайте прогнозите за всеки клас по теглото на класа.

Има стандартна функция за загуби, която поддържа тежести на партиди:

Ако тежестите трябва да бъдат преобразувани от теглата на класа в тегло например (с формата [lot_size]). Вижте документацията тук .

Въпреки че посочването на скаларна загуба намалява загубата за цялата партида, понякога искаме да променим размера на пробата за загуба на партида. Например, ако имаме определени примери, които са по-важни, за да ни направят правилни, може да искаме да имаме по-голяма загуба от други проби, чиито грешки имат по-малко значение. В този случай можем да осигурим вектор на тегло с дължина lot_size, което води до загуба за всяка проба в партидата, която се мащабира от съответния елемент на теглото. Например, разгледайте случая на проблем с класификацията, при който искаме да увеличим максимално точността, но сме особено заинтересовани от получаването на висока точност за определен клас:

Трябваше да работя с подобен небалансиран набор от данни с няколко класа и затова работих през него, надявам се да помогне на някой, който търси подобно решение:

Това е вярно във вашия модул за обучение:

Това отговаря на вашата дефиниция за клас модел: