Восстание против меточного шума
В этом открытом длиннопосте поговорим о меточном шуме и о том, как с ним бороться. Код приложен к посту.
В прикладном машинном обучении, особенно в высоконаучных приложениях вроде той же биоинформатики, иногда возникают интересные задачи эпистемиологического характера в духе "А как мы можем понять, что из этих данных вообще можно узнать, и насколько они правильные?".
Предположим, что существует некий датасет (X, y_gathered), где X -- данные, а y_gathered -- метки. (Бусти, втф, добавь латех в редактор!)
Этот датасет был, например, собран людьми, у которых руки растут не из того места -- реальные метки y_real и собранные метки y_gathered отличаются так, что y_gathered = y_real + N, где N -- некий шум неизвестной природы. Также мы можем предположить, что сама метка y_real -- какая-то сложноопределимая хрень, насчет которой спорят эксперты (ТМ) и никак не могут определиться с результатом.
Для нас эти две постановки эквивалентны.
Есть интерес в том, чтобы:
1. Попытаться понять, какие из меток в y_gathered неправильные и соответствующие примеры выкинуть из датасета;
2. Насколько реальный диапазон y_real отличается от диапазона y_gathered, или, если говорить о классификации, насколько классы из y_real соответствуют классам в y_gathered;
3. Какой может быть модель шума -- какие классы проще всего между собой перепутать?
В общем виде этим заннимается теория уверенного обучения (confident learning), которая предлагает свою формализацию понятия меточного шума и общие подходы к этим вопросам. Сегодня мы попробуем поиграться с решением задачи 1, и посмотреть на примере, а можно ли тем же самым подходом решить задачу 2. Про задачу 3 поговорим как-нибудь в другой раз.