Функція збитків для незбалансованого двійкового класифікатора класу в потоці тензора
Я намагаюся застосувати глибокі вчення для проблеми бінарної класифікації з високим дисбалансом класів між цільовими класами (500 тис., 31 тис.). Я хочу написати спеціальну функцію втрат, яка повинна бути: мінімізація (100 - ((прогнозований_менший клас)/(загальний_менший клас)) * 100)

Я ціную будь-які натяки на те, як я можу побудувати цю логіку.
6 відповідей
Код, який ви запропонували, мені здається неправильним. Втрату ваги слід помножити на вагу, я згоден.
Але якщо ви помножуєте журнал на вагу класу, закінчіть:
другий термін не дорівнює:
Щоб показати це, ми можемо переписати останній як:
Отже, ось код, який я пропоную:
Ви можете додати ваги класу до функції втрат, помноживши журнали. Регулярні втрати перехресної ентропії такі:
Таким чином, помноживши журнали, перевизначте прогнози кожного класу на їх вагу класу.
Існує стандартна функція втрат, яка підтримує пакетні ваги:
Якщо ваги слід перетворити з ваг класу на вагу, наприклад (із формою [lot_size]). Дивіться документацію тут .
Хоча вказівка скалярних втрат зменшує втрати протягом усієї партії, іноді ми хочемо змінити розмір вибірки втрат партії. Наприклад, якщо у нас є певні приклади, які важливі для того, щоб виправити нас, ми можемо хотіти мати більші втрати, ніж інші зразки, помилки яких мають менше значення. У цьому випадку ми можемо надати вектор ваги довжиною lot_size, що призводить до втрат для кожного зразка в партії, що масштабується відповідним ваговим елементом. Наприклад, розглянемо випадок класифікаційної задачі, в якій ми хочемо максимізувати точність, але особливо зацікавлені в отриманні високої точності для певного класу:
Мені довелося працювати з подібним незбалансованим набором даних з кількома класами, і тому я пропрацював його, сподіваюся, це допоможе комусь, хто шукає подібне рішення:
Це відповідає вашому навчальному модулю:
Це відповідає вашому визначенню класу моделі: