Первая часть собрала хорошую «кассу» в виде рейтинга и кармы, но самое главное вызвала интерес аудитории. Последний факт стал решающим критерием для написания продолжения. Очень часто, 2-я часть хуже первой, но я все же решил рискнуть. Представлюсь снова, меня зовут Александр и я врач-гематолог. Я работаю над приложением по интерпретации общего анализа крови (ОАК) с помощью алгоритмов машинного обучения (МО). После публикации первой заметки о проекте я внимательно изучил комментарии своих читателей. Сразу скажу — практически все из них были конструктивными и понятными. Спасибо всем! Это подстягнуло перенести проект в список приоритетных и поработать над обновлением. Кому не терпится, могут сразу переходить по ссылке. Бот работает в тестовом режиме. Ниже я кратко и подробно расскажу, что изменилось.
Кратко
-
Руссифицированный интерфейс
-
Совершенно новые алгоритмы МО
-
Сокращен список входных параметров ОАК без потери точности моделей
-
Исправлены технические неточности, улучшен юзабилити
-
Изменены сообщения бота для пользователя
Подробно
Текущий функционал сервиса направлен на скрининг возможных заболеваний крови взрослого человека (>=18 лет) по ОАК. Приложение не является медицинским, не заменяет врача и представляет собой больше информационно-аналитический инструмент работы с данными. Вся информация на сервисе не является медицинским советом или рекомендацией. В случае необходимости получения медицинского совета или тем более консультации следует связываться с врачом в рамках очной консультации или по телемедицинской связи.
Технически проект решает задачу классификации с применением технологий МО. В текущей версии работают 4 алгоритма XGBoost (в прошлой версии был Random Forest), количество входных параметров 20. Три из четырех моделей, назовем их А, В, С классифицируют данные поэтапно, 4-я — модель D является «контрольной» и универсальной. Общий объем данных, на которых произведено обучение — ОАК более 23 тысяч пациентов, обратившихся к врачу-терапевту и врачу-гематологу.
Этап 1 — модель А (классификация ОАК на 3 класса: нормальный анализ, «несущественные» отклонения, значимые отклонения). Если выявлены значимые отклонения выполняется переход на этап 2.
Метрики на тестовой выборке (сплит 80/20), Accuracy 0.966, 95% CI : (0.9576, 0.9731):
![](https://habrastorage.org/getpro/habr/upload_files/4db/4ca/f84/4db4caf843cba639c1821d62dc3831f8.png)
Этап 2 — модель B (классификация ОАК на 4 класса: «острое» заболевание крови (ОЗК), хроническое миелопролиферативное заболевание крови (ХМПЗ), хроническое лимфопролиферативное заболевание крови (ХЛПЗ), анемия). Каждый из эти классов представляет собой группу возможных заболеваний, объединенных между собой общими отклонениями в ОАК. Более точный диагноз не пишется по причине, что это практически мало возможно на текущих данных (требуются специализированное обследование), а также просто запрещено. Тем не менее определение любого из этих классов является прямым показанием для консультации не просто врачом, а врачом-гематологом (специалистом по заболеваниям крови). В случае подозрения на класс «анемия» выполняется переход на 3-й этап.
Метрики на тестовой выборке (сплит 80/20), Accuracy 0.9879, 95% CI (0.9822, 0.9922):
![](https://habrastorage.org/getpro/habr/upload_files/31f/81e/143/31f81e143a3ffb2ccf114362517734fc.png)
Этап 3 — модель С, бинарный классификатор выявляющий случаи похожие на железодефицитную анемию (ЖДА) — самую частую анемию человека.
Метрики на тестовой выборке (сплит 80/20), Accuracy 0.9829, 95% CI (0.9748, 0.9889)
![](https://habrastorage.org/getpro/habr/upload_files/23e/775/0bd/23e7750bd6609bef61504727ca3e4b7d.png)
Модель D является универсальной моделью для всех названных выше классов. Ее прогноз согласуется с прогнозом остальных моделей для принятия «коллегиального» решения по настроенным вручную правилам с учетом вычисляемых коэффициентов уверенности. Последний тем больше, чем больше вероятность отдельно взятого класса, по отношениию к остальным.
Метрики на тестовой выборке (сплит 80/20), Accuracy 0.949, 95% CI (0.9408, 0.9563)
![](https://habrastorage.org/getpro/habr/upload_files/607/ee1/ed3/607ee1ed386c1c5a2eb3868787b54667.png)
Количество входных параметров было сокращено как в угоду юзабилити (часть данных высчитывается из введенных исходных), так и ввиду частого их отсутствия в анализах. При этом качество моделей снизилось не сильно и компенсируется за счет новых алгоритмов и условий для принятия окончательных решений.
Максимально постарался исправить технические баги, где это было возможно и насколько хватает моих программистких скилов.
Общая концепция сообщений бота также была изменена. Теперь более четко очерчивается предсказанный класс. Описание класса можно расширить, но в большинстве случаев это не требуется, так как на этапе выявленных отклонений должен уже подключаться врач-специалист. Для врачей заключения могут быть более профессиональными с перечислением списка конкретных заболеваний по международной классификации и рекомендаций по дополнительному обследованию.
Бот работает в тестовом режиме и не собирает никакую информацию самостоятельно. Я даже не знаю как это сделать, если бы захотел :). Дальнейшие планы могут включать в себя:
-
Постепенное дообучение с новыми данными;
-
Использованием логики, основанной на правилах для коррекции некоторых заключений или проверки общепринятых критериев тех или иных заболеваний;
-
Внешняя валидация на больших размеченных выборках данных.
Спасибо, что дочитали до конца!
ссылка на оригинал статьи https://habr.com/ru/articles/710154/
Добавить комментарий