Pull to refresh

Comments 11

Garbage in - garbage out, к ML это тоже применимо. А вот что делать если данные противоречивые по своей природе, что часто бывает в биомедицинских данных?

Искать разделяющую фичу... может синтетически как-то, если даже медицине она неизвестна. На правах гипотезы.

Спасибо. Простой пример, чтобы понимать в чем сложность - то, что мед сообществом понимается как одна нохологическая единица (болезнь) может быть соверщенно разными болезями по этиологии и патогенезу, но с общим деталями. Просто на уровне научного понимания или медицинского консенсуса их считают за одну. При включении их в обучающую выборку под одним лейблом получается каша. Интересно есть ли можно ли надежно понять, что модель плохо учится не из-за криворукой разметки данных, а потому что изначально данные гетерогенные по лейблам?

а) кластеризовывать со своей метрикой и смотреть статистику кластеров, в том числе по признакам. кластеры (и расстояния до центроид) можно подавать в классификаторы,

б) интерпретировать модели локально (то есть смотреть что дало вклад в конкретный предикт, shap values например), и смотреть как группируются интерпретации в датасете. объявлять группы чем-то различным.

это все достаточно искусственно. то что вы описали текстом - то что различает эти самые единицы - и есть хорошие разделяющие фичи. так что может сначала научиться выделять их наличие/различие... а там дальше стэкинг.

но я с мед. данными не работал, так что все это навскидку.

Интересно есть ли можно ли надежно понять, что модель плохо учится не из-за криворукой разметки данных, а потому что изначально данные гетерогенные по лейблам?

знал бы прикуп, жил бы в Сочи)) считайте, если достаточно толстая двух-трехслойная нейросеть без переобучения даёт какую-то метрику, если нет каких-то проблем с предобработками и дефектами в коде... больше не выжмете из данных.

Думаю вам знаком датасет breast cancer. что там можно выжать больше, чем выжали?.. а да наверное ничего.

ну и мой коммент ниже, про неустранимую ошибку, так же в силе...

Нозологическую единицу полагают единственным диагнозом только в той терминологической формулировке, в которой его можно перевести в международный статистический код (МКБ). Статистика помогает врачам не путаться в ситуациях когда из-за многокомпонентной сложности диагноза приходится лечить в одном эпизоде по основному заболеванию, а в другом обследовать по сопутствующему синдрому.

А никто не пробовал использовать модель для поиска ошибок в данных? Например, если у нас есть N образцов, то мы можем тренировать на N-1 образце и смотреть, насколько N'ы образец соответствует N-1 модели. Если не соответствует, привлекать оператора для сурового "да" или переразметки.

В целом, если из миллиона образцов 200 будет отмечено как "странные", то над ними уже можно подумать и обсудить человекам...

У моделей есть не просто да/нет, а некоторое "подобие" вероятности (можно калибровать).

Так вот сэмплы, где модель на грани сомнения, не мешает подвергать пристальному взгляду. Но это имеет смысл для не переобученных (overfitted) моделей.

Еще, на Хабре была статья про разные распределения трэйна и теста. Есть также "просто" поиск аномалий, который разными способами проверяет на соответствие распределению (local outlier factor например).

И предложенный метод тоже применялся и для imagenet вроде, уже не вспомню статью. Докинуло скора после переразметки.

Но есть проблематичное с этим подходом в том, что если в природе существует ненулевая вероятность ошибки, то есть шанс не отличить собаку от кошки, то ошибка модели будет не нулевой, и можно пропустить все же плохие сэмплы (и кроссвалидация не отработает). Особенно на малых датасетах. А миллионные учить долго, особенно с leave one out (проверять на N+1 отложенном сэмпле). Если есть еще и дисбаланс в датасете, то еще сложнее будет ловить отличия моделью.

В итоге, все классификаторы не дотягивают до идеального, да и тот работает с ошибкой (на не детерминированных данных).

Да, хорошая идея, она много где используется. Больше всего мне реализация у https://hasty.ai/quality-control понравилась. Но мы у себя в компании на базе CVAT такую штуку реализовали и нам скрипт скидывает ссылки на таски разметчиков, у которых ответ с обученной неронкой не сошелся.

Устранения этих 30 ошибок было достаточно для того, чтобы система ИИ достигла уровня человека.

Можно узнать как именно устраняли и вообще как устраняются подобные ошибки? Занова перучивать?

Sign up to leave a comment.

Articles