Первая часть собрала хорошую "кассу" в виде рейтинга и кармы, но самое главное вызвала интерес аудитории. Последний факт стал решающим критерием для написания продолжения. Очень часто, 2-я часть хуже первой, но я все же решил рискнуть. Представлюсь снова, меня зовут Александр и я врач-гематолог. Я работаю над приложением по интерпретации общего анализа крови (ОАК) с помощью алгоритмов машинного обучения (МО). После публикации первой заметки о проекте я внимательно изучил комментарии своих читателей. Сразу скажу - практически все из них были конструктивными и понятными. Спасибо всем! Это подстягнуло перенести проект в список приоритетных и поработать над обновлением. Кому не терпится, могут сразу переходить по ссылке. Бот работает в тестовом режиме. Ниже я кратко и подробно расскажу, что изменилось.

Кратко

  1. Руссифицированный интерфейс

  2. Совершенно новые алгоритмы МО

  3. Сокращен список входных параметров ОАК без потери точности моделей

  4. Исправлены технические неточности, улучшен юзабилити

  5. Изменены сообщения бота для пользователя

Подробно

Текущий функционал сервиса направлен на скрининг возможных заболеваний крови взрослого человека (>=18 лет) по ОАК. Приложение не является медицинским, не заменяет врача и представляет собой больше информационно-аналитический инструмент работы с данными. Вся информация на сервисе не является медицинским советом или рекомендацией. В случае необходимости получения медицинского совета или тем более консультации следует связываться с врачом в рамках очной консультации или по телемедицинской связи.

Технически проект решает задачу классификации с применением технологий МО. В текущей версии работают 4 алгоритма XGBoost (в прошлой версии был Random Forest), количество входных параметров 20. Три из четырех моделей, назовем их А, В, С классифицируют данные поэтапно, 4-я - модель D является "контрольной" и универсальной. Общий объем данных, на которых произведено обучение - ОАК более 23 тысяч пациентов, обратившихся к врачу-терапевту и врачу-гематологу.

Этап 1 - модель А (классификация ОАК на 3 класса: нормальный анализ, "несущественные" отклонения, значимые отклонения). Если выявлены значимые отклонения выполняется переход на этап 2.

Метрики на тестовой выборке (сплит 80/20), Accuracy 0.966, 95% CI : (0.9576, 0.9731):

Этап 2 - модель B (классификация ОАК на 4 класса: "острое" заболевание крови (ОЗК), хроническое миелопролиферативное заболевание крови (ХМПЗ), хроническое лимфопролиферативное заболевание крови (ХЛПЗ), анемия). Каждый из эти классов представляет собой группу возможных заболеваний, объединенных между собой общими отклонениями в ОАК. Более точный диагноз не пишется по причине, что это практически мало возможно на текущих данных (требуются специализированное обследование), а также просто запрещено. Тем не менее определение любого из этих классов является прямым показанием для консультации не просто врачом, а врачом-гематологом (специалистом по заболеваниям крови). В случае подозрения на класс "анемия" выполняется переход на 3-й этап.

Метрики на тестовой выборке (сплит 80/20), Accuracy 0.9879, 95% CI (0.9822, 0.9922):

Этап 3 - модель С, бинарный классификатор выявляющий случаи похожие на железодефицитную анемию (ЖДА) - самую частую анемию человека.

Метрики на тестовой выборке (сплит 80/20), Accuracy 0.9829, 95% CI (0.9748, 0.9889)

Модель D является универсальной моделью для всех названных выше классов. Ее прогноз согласуется с прогнозом остальных моделей для принятия "коллегиального" решения по настроенным вручную правилам с учетом вычисляемых коэффициентов уверенности. Последний тем больше, чем больше вероятность отдельно взятого класса, по отношениию к остальным.

Метрики на тестовой выборке (сплит 80/20),  Accuracy 0.949, 95% CI (0.9408, 0.9563)

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

Максимально постарался исправить технические баги, где это было возможно и насколько хватает моих программистких скилов.

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

Бот работает в тестовом режиме и не собирает никакую информацию самостоятельно. Я даже не знаю как это сделать, если бы захотел :). Дальнейшие планы могут включать в себя:

  1. Постепенное дообучение с новыми данными;

  2. Использованием логики, основанной на правилах для коррекции некоторых заключений или проверки общепринятых критериев тех или иных заболеваний;

  3. Внешняя валидация на больших размеченных выборках данных.

Спасибо, что дочитали до конца!

Комментарии (8)


  1. radioxoma
    11.01.2023 20:09

    Отлично, третья версия обрела человеческое лицо. Все параметры однозначны и уже могут быть введены пользователем без подготовки. Постоянную ссылку (GET запрос) на результат не хотите сделать? Что-то вроде https://luchinin.shinyapps.io/MD4ME/api/v3.0/?sample_date=2023-01-11&sex=male&dob=1990-01-01&hb=136&rbc=4.7&mcv=86.6&ley=5.2&plt=312&neyp=57&lymphp=32&eosp=2&basp=0&monop=9 где sample_date - дата забора крови, dob - дата рождения пациента. Например, ссылки на внешний PACS (КТ/МРТ) так реализованы.

    Тогда можно будет формировать ссылку в какой-нибудь сторонней мединской информационной системе, на основе данных ОАК из лабораторной базы данных, открывать и сразу переходить на Ваш сайт. Ну или с коллегами делиться результатом.


    1. KirovDoc Автор
      11.01.2023 20:13

      Спасибо. Понимаю о чем вы, но пока не умею.


      1. atikhonov
        12.01.2023 10:41
        +1

        Это делается одной строчкой (как передачей через строку, так и сохранением на сервере)


  1. evoq
    11.01.2023 20:22
    +1

    Не знаю видели ли - объявлен конкурс с грантами от государства как раз по вашей тематике. Точное название и сайт не запомнил, встретил между делом


  1. pharo
    11.01.2023 21:22
    -2

    Бот работает в тестовом режиме и не собирает никакую информацию самостоятельно. Я даже не знаю как это сделать, если бы захотел :). Дальнейшие планы могут включать в себя:

    Постепенное дообучение с новыми данными;

    Так Вы проясните: или не собирает или как дообучиваеся и на основе каких новых данных.

    P.S. Ждёмс статью по содержанию,
    Как врач сделал себе ИИ помощника.
    , а не это всё какое то бессмысленое приведение каких то циферок.
    В научном сообществе результат должен быть повторён независимыми опытами по методикам автора, а не приниматься на веру следуя таким вот публикациям.


    1. d2ab
      11.01.2023 21:51

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


      1. pharo
        11.01.2023 21:55

        Поэтому и не известно что автор хотит получить от публикации своих статей кроме как рекламирование своей поделки в непонятных целях.


        1. DvoiNic
          13.01.2023 15:31

          Почему ж непонятно?
          Человек собрал отзывы аудитории. Причем той, которая заинтересованная в использовании, но сторонняя.
          Услышал отзывы как по юзабилити, так и по «математике»
          Усовершенствовал.
          Ну и да, похвастался сделанным.