Классификация пациентов. Часть 1. Задача


ПРОБЛЕМА

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

Человеческий организм - невероятно сложная система, описать которую достаточно точно ,даже на уровне модели черного ящика, удастся, видимо, пока не скоро. Другими словами, мы не всегда понимаем, как конретный организм бедет реагировать на воздействия в каждый конкретный момент.

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

И диагностика - это только одна сторона. Вторая сторона - о это лечение. При одинаковом диагнозе и одинаковом лечении одна группа пациентов пазывает положительную динамику выздоравления, а другая нет. Для кого-то лечение может не работать и вовсе, хотя для другого "такого же" пациента оно помогло.

Мы не будем искать ответ на вопрос почему. Мы ставим своей целью искать ответ на вопрос:  "как определить действительно "такого же" пациента?". То есть не просто пациента с таким же диагнозом или симптомами, но и того, кому поможет это же лечение.

Конечно, сразу же приходит на ум взять во внимание возраст, пол, вес и прочие демографические факторы. И в ряде случаев это работает. Например, почти всегда при назначении препарата и дозировки учитывается возраст и вес пациента. Мы можем трактовать это как Patien Similarity. Пациентам с одинаковым весом нужно одинаковое количество препарата.

Рассмотрим другой пример. Пацинеты старше возраста X образуют группу пациентов А и для них назначатеся препарат Q1, а пациенты младше возраста X обазут группу B и им назначают препарат Q2. Здесь мы выделили две группы пациентов и считаем, что все пацинеты внутри группы похожи.

Это очень простое разделение. Мы взяли всего один параметр и ввели простое условие сравнения с какой-то константой.

if indexPatietn.age < X 
indexPatient.class = A 
else indexPatient.class = B


Но таких параметров, очевидно, больше. И мы не знаем ни эти параметры, ни условия, которые нужно применять к параметрам. Именно в таких случаях могут эффективно себя показать методы интеллектуального анализа. Такие методы позволяют выявлять паттерны скрытые в данных и использовать их для классификации, кластеризации или регрессии. Зачастую интрепретируемость таких методов оказывается очень низкой. То есть нам, вероятно, не удастся понять какие параметры имеют значение для определения классов, однако, мы можем построить систему, которая будет на основе множества данных о пациенте определять его принадлежность к классу максимально похожих. 


Как это сделать и что для этого нужно. 
Первое - данные. 
Второе - модель. 

КАК ЕЩЕ МОЖНО РЕШИТЬ ЭТУ ЗАДАЧУ И КАК ЕЁ РЕШИЛИ ДО НАС? 

Более традицинный способ заключается в том, чтобы представить каждого пациента в виде вектора, размерность которого равна количеству рассматриваемых признаков, а затем посчитать растояние между двумя векторами, используя одну из метрик, например, косинусное расстояние. 
Мы можем посчитать расстояние между всеми парами или если нам нужно классифицировать нового пациента, то посчитать расстояние от его вектора до векторов всех остальных пациентов. В результате мы получим рейтинг "самых похожих" пациентов и сможем подробно изучить их. Один из серьезных минусов таких методов в том, что вклад в определение расстояния а значит "похожести" одинаковый для каждого определенного нами параметра. То есть, такая модель не может определить, что какие-то параметры менее важны, чем другие и наоборот. Мы можем добавить весовые коэффициенты, но откуда мы знаем, какие коэффициенты мы должны использовать. 

Еще более простой способ попытаться аккумулировать весь экспертный опыт и выразить его в системе правил с обычной или нечеткой логикой. Но как уже говорилсь выше, мы не знаем всех особенностей, поэтому даже самые точные экспертные знания не отражают всей картины. Кроме того, задача сбора и формализации экспертных знаний представляется крайне трудно реализуемой, а знания порой оказываются не точными, не формализуемыми или противоречивыми. Также не понятно, как измерить и оценить качество выполнения этого этапа. Если я не могу это померить, то как с этим работать. И наконец, практика показывает, что применение интеллектуальных алгоритмов, в частности на основе нейронных сетей, превосходит системы, построенные на основе "ручного" выделения признаков. Это касается как систем распозования изображений, речи, так и обработки естестенного языка. Есть основания пологать, что это же окажется справедливым для задач медицинской диагностики.

БАЗА ДАННЫХ

Лаборатория Вычислительной Физиологии MIT (MIT Lab for Computational Physiology) собрала огромное количество медицинских данных пациентов из отделения неотложной помощи. В безе данных накоплены данные порядка 58 000 обращений, которые включают демографические данные, результаты различных измерений, лабораторных тестов и др. Основная публикация расположенна по ссылке https://www.nature.com/articles/sdata201635. Обратите внимание, это Nature.

Что еще круче, они не просто собрали эти данные и оформили в реляционную базу, но и разработали документацию, и предоставили ко всему этому богатсву доступ. https://mimic.physionet.org/ Довольно большие данные, да еще и в удобном формате это то, что нужно.


MIMIC III насчитывает 330 000 000 записей в таблице chartevents, где фиксируются ивенты происходязщие с пациентом. В частности нас будут интересовать измерения (такие как температура, сатурация кислорода и др). Таблица d_items это справочник для chartevents и он содрежит 12 487 записей определяющих тип каждого ивента. 

То есть у нас есть данные о 330 млн ивентов, каждый из которых относится к одному из 12,5 тыс типов ивентов и случался в течение одного из 58 000 обращений. И это только малая часть того, что есть в этой базе и может быть использовано для анализа. Конечно, она содержит демографические данные, такие как пол, возраст и прочее, диагноз при обращении и список ICD9-кодов для каждого пациента. 












Комментарии

Популярные сообщения из этого блога

Как узнать день недели для любой даты н.э.

Начало

Complete move of remote Git repository