Поворот сюжета: Моя базовая нейронная сеть достигла точности 82 %. Но после запуска теста на перестановку меток (случайное перемешивание меток) он все еще достиг 82%. Я понял, что 95% моих тестовых данных попали в категорию «Другое/Инди», поэтому модель просто лениво предсказывала класс большинства. Точность была полной ложью.
Опора: Я понял, что человеческие жанровые ярлыки ошибочны: песни могут быть как поп-музыкой, так и электронными. Я запустил неконтролируемый автоэнкодер (сжимающий 12 аудиофункций в узкое место 4D) и кластеризацию K-Means. Естественные аудиокластеры сильно переплетались друг с другом и не соответствовали человеческим ярлыкам. По этой причине я переключил свою архитектуру на подход с несколькими метками (сигмоидная активация + двоичная перекрестная энтропия), чтобы модель могла предсказывать перекрывающиеся жанры.
Там, где мне нужны ваши мысли:
- Я применил веса классов, чтобы наказать модель за отсутствие жанров меньшинств. Мой Macro F1 сейчас составляет около 0,20-0,36, и отзыв для таких жанров, как рок/хип-хоп, ужасен. Есть ли какие-нибудь дополнительные советы по устранению этого крайнего дисбаланса, помимо весов базовых классов?
- Кто-нибудь добился успеха в настройке порогов принятия решений для каждого класса, чтобы повысить запоминаемость классов меньшинств? Ссылка на мой код на данный момент