Введение
Путаница лабораторных образцов или ошибочная идентификация — серьезная проблема в здравоохранении, поскольку это может привести к постановке неправильного диагноза и назначению неподходящего лечения. В связи с этим предложена строгая политика «нулевой терпимости», предусматривающая отбраковку любого потенциально неправильно маркированного или неправильно идентифицированного образца [1]. Кроме того, по имеющимся сведениям, частота ошибок составляет до 1,0%, но и эта оценка, возможно, необъективна, поскольку большинство ошибок идентификации могут оставаться незамеченными [1, 2]. Хотя существуют некоторые рекомендации по процедуре флеботомии для сокращения числа подобных ошибок, уровень соответствия признан неприемлемо низким в процедуре идентификации [3]. Для выявления ошибок, в том числе случаев перепутанных образцов, широко применяется метод дельта-чек, при котором результаты тестирования проб биоматериала сравниваются с предыдущими результатами того же пациента. Для лучшей идентификации подобных случаев предложен метод взвешенного кумулятивного индекса дельта-чек (wCDI). Площадь под кривой операционных характеристик (ROC AUC), как сообщается, составила приблизительно 0,98 [4]. Учитывая малочисленность случаев путаницы, положительная прогностическая ценность (PPV) значительно низкая, а дальнейшее расследование после применения метода дельта-чек — трудоемкий процесс, в связи с большим количеством случаев «ложной тревоги» [5]. Недостатком проверки дельта-чек и метода wCDI является тот факт, что они рассматривают каждый показатель отдельно. Внутрииндивидуальные колебания показателей не являются независимыми и должны непосредственно зависеть друг от друга. Кроме того, время, прошедшее с момента предыдущего анализа, также может оказать значительное влияние на разницу с предыдущими значениями. Рассматривая эту связь между разницей и продолжительностью времени, прошедшего с предыдущего обследования, модель машинного обучения, такая как дерево решений с градиентным усилением (GBDT), как ожидалось, повысит точность обнаружения перепутанных образцов. Мы создали модель GBDT для обучения на симулированном наборе данных, и мы получили высокоточную модель. В настоящей статье подробно описывается и объясняется сама модель.
Материал и методы
Дизайн исследования
Цель данного исследования — создание и оценка модели для выявления случаев перепутанных образцов крови с использованием искусственно смоделированного набора данных. Результаты анализов крови взяты из сформированной ранее анонимной базы данных больницы Токийского университета; база данных соответствует стандартизированному формату Министерства здравоохранения, труда и благосостояния хранения информации, подлежащей обмену: «стандартизированный структурированный обмен медицинской информацией 2 (SS-MIX2)». Мы смоделировали случаи путаницы образцов, используя имеющиеся данные, как описано ниже. Исследование было одобрено Советом по институциональному контролю, и требование письменного информированного согласия было отменено.
Объект исследования
Из анонимной базы данных нашей больницы, содержащей результаты тестирования крови, мы взяли результаты общего и биохимического анализа крови с 2011 по 2017 г. Все показатели с комментариями «гемолиз» или «агрегация» мы считали как отсутствующие значения. Помимо этого, если общий и биохимический анализ крови одного и того же пациента проводился в течение одной минуты (минимальная единица времени в нашей базе данных), мы рассматривали их как одну единицу, исходя из предположения, что перепутывание образцов обычно происходит в целом с теми пробирками, которые поступают одновременно.
Мы выбрали 15 распространенных показателей: лейкоциты (WBC), эритроциты (RBC), гемоглобин (Hb), гематокрит (Hct), средний корпускулярный объем (MCV), среднее содержание гемоглобина (MCH), средняя концентрация гемоглобина (MCHC), тромбоциты (Plt) из общего анализа крови, а также в качестве биохимических тестов альбумин (Alb), аспартатаминотрансферазу (AST), аланинаминотрансферазу (ALT), азот мочевины крови (BUN), креатинин (Cr), натрий и калий. Критерий включения анализа — наличие ≥11 из 15 показателей. Другими словами, только ≤4 показателя могли быть не измерены в каждом из включенных анализов. Из индивидуальных временных рядов данных целевых результатов созданы частичные временные ряды с размером скользящего окна 4. Мы исключили только первые результаты и включили результаты, полученные во второй или третий раз. В случаях, если предыдущих анализов, проведенных во второй и третий раз, не существовало, они рассматривались как отсутствующие значения. Полная схема показана на рис. 1.
Рис. 1. Схема скользящего окна для индивидуальных временных рядов данных результатов обследования.
Результаты обследования одного и того же пациента располагаются по оси времени, чтобы их можно было рассматривать как данные временного ряда. Скользящее окно размером 4 применяется к данным временных рядов для создания частичных данных временных рядов. Результат последнего обследования из четырех последовательных обследований, возможно, перемешивается с результатами других пациентов.
Моделирование путаницы образцов
В дополнение к упомянутому набору данных (естественные данные), мы создали искусственно перемешанные данные. Значения последних результатов тестирования в скользящем окне с размером 4 были перемешаны с результатами тестирования других пациентов (рис. 1). Чтобы смоделировать реальную ситуацию путаницы образцов, мы перетасовали данные образцов из одного отделения. Кроме того, поскольку предполагается, что пропущенные паттерны 15 показателей одного пациента должны быть связаны между собой, мы перетасовали данные с теми, в которых были пропущены те же паттерны. После перемешивания мы не стали включать те данные, которые случайно были изменены, на данные того же пациента. Получившиеся искусственно перемешанные данные были добавлены к естественным. В результате мы получили набор данных, состоящий из серии частичных временных рядов из 15 параметров анализа крови с размером скользящего окна 4. Нашей целью было выяснить: являются ли последние результаты в четырех последовательно проведенных исследованиях результатами одного и того же пациента, или они относятся к другому пациенту?
Разделение набора данных
Мы разделили набор данных на набор разработки с 2011/1 по 2017/10 и набор для валидации с 2017/11 по 2017/12. Набор для разработки тоже был разделен на набор для обучения (dev-train set) с 2010/1 по 2017/7 и набор для тестирования (dev-valid set) с 2017/8 по 2017/10. Данные пациента, включенного в набор для валидации, были исключены из набора для разработки, а данные пациента из набора для тестирования были исключены из набора для обучения. Это было сделано для того, чтобы набор валидации не зависел от набора разработки и, соответственно, чтобы набор для обучения не зависел от набора для тестирования. Хотя набор разработки продемонстрировал небольшое смещение после отбора результатов анализов из-за пропусков, набор валидации не показал смещения после отбора. Набор для обучения использовался для обучения модели, а набор для тестирования — для настройки гиперпараметров и выбора модели. Набор данных для валидации использовался только для оценки окончательной модели. Таким образом, оценка результата с набором для валидации может считаться объективной оценкой результата с неизвестными данными.
Для описанного потока данных мы применили моделирование искусственной путаницы образцов до того, как разделить набор данных. Это могло привести к тому, что результаты тестирования из набора разработки появились бы в наборе для валидации в качестве перепутанных данных, что потенциально могло привести к искажению информации. Однако, учитывая архитектуру модели, маловероятно, что подобное искажение информации повлияет на работу модели. Если применить искусственно смоделированную путаницу образцов после разделения, вероятность перетасовки данных одного и того же пациента увеличивается в наборе для валидации (с 0,24% при применении нашего метода до 1,87%). Это может привести к еще одному искажению, при котором выборки из небольшого отделения или с редкими отсутствующими паттернами будут с большой вероятностью исключены. По этой причине мы решили применить моделирование искусственной путаницы до разделения данных.
Архитектура модели
Дельта-чек. В качестве примера мы использовали пороговое значение, которое используется в нашей больнице. У нас метод дельта-чек применяется не только для обнаружения случаев перепутанных образцов, но и в основном для контроля качества, т.е. для обнаружения таких ошибок, как контаминация или гемолиз. Как показано в табл. 1, пороговые значения установлены для 9 из 15 показателей в нашей больнице. Мы применили эти пороговые значения и подсчитали показатели, их превышающие, для оценки эффективности дельта-чека при выявлении перепутанных образцов.
Таблица 1. Пороговые значения проверки дельта-чек в нашей больнице
Исследуемый показатель | Нижняя граница (%) | Верхняя граница (%) | Тест | Нижняя граница (%) | Верхняя граница (%) |
Plt | 70 | 200 | BUN | 70 | 150 |
MCV | 95 | 105 | Cr | 80 | 120 |
HCT | 85 | 115 | Na | 96 | 104 |
АЛТ | 20 | 350 | K | 81 | 123 |
АСТ | 20 | 350 | — | — | — |
Примечание. Нижние и верхние пороговые значения процентного отношения последнего результата к предыдущему результату. Пороговые значения для лейкоцитов, эритроцитов, гемоглобина, MCH, MCHC и альбумина не установлены. В этой таблице показаны пороговые значения только для 15 показателей, выбранных для исследования. В нашей больнице установлены другие пороговые значения для других показателей. BUN — азот мочевины крови; Plt — тромбоциты; MCV — средний корпускулярный объем; HCT — гематокрит; АЛТ — аланинаминотрансфераза; АСТ — аспартатаминотрансфераза.
wCDI. Распределения всех результатов тестирования преобразованы в нормальное распределение Гаусса с помощью степенного преобразования. Взвешенные средние разницы рассчитаны как индексы перепутанных образцов (wCDI) [6]. Мы повторно реализовали ранее представленный алгоритм с помощью Scikit-learn.
Модель GBDT (предлагаемая модель). GBDT — это множество деревьев решений, которые могут выполнять задачи как регрессии, так и классификации, предсказывая некоторое значение или класс по данным с несколькими признаками. Дерево решений — это структура, похожая на блок-схему, в которой каждый внутренний узел представляет собой правило «ЕСЛИ — ТО» с пороговым значением определенного признака для отнесения данных к одной из последующих ветвей. Каждая единица данных проходит путь от корня до определенного листа через несколько узлов. Каждый лист представляет собой прогностическое значение подгруппы, достигающей листа. Некоторые известные алгоритмы для выбора признака и порога для конкретного узла включают CART, который минимизирует критерий Джини (Gini’s criteria), или C4.5, что минимизирует информационную энтропию. GBDT — это аддитивная модель, которая итеративно добавляет новое дерево решений, которое предсказывает остаток в данной точке. Существует также штраф для предотвращения переобучения модели деревьев.
В модели GBDT мы использовали следующие признаки: результаты последнего исследования крови, разница между последним и предыдущим исследованиями, разница во времени между последним и предыдущим исследованием и время последнего исследования. Время преобразовано в два двухмерных признака в виде синуса и косинуса, чтобы представить его циклическую характеристику. Все признаки введены в модель GBDT, реализованную с помощью XGBoost [7]. Отсутствующие значения обрабатывались с помощью настроек по умолчанию XGBoost, при этом на каждом узле также изучалась ветвь, по которой следует идти с отсутствующим значением. Эти модели обучались на наборе обучения, а набор для тестирования использовался для настройки гиперпараметров. Для дельта-чека и wCDI мы использовали macOS Mojave + Python 3, а для XGBoost — Ubuntu 14.04 LTS + Python3. Поскольку XGBoost является библиотекой общего назначения, которая может использоваться с Python, R или Java независимо от операционной системы, а также с интерфейсами командной строки, этот алгоритм может использоваться на практике тогда и только тогда, когда система может выводить информацию о целевых исследованиях, а также может быть извлечена информация о прошлых исследованиях пациента, например, через интерфейсы прикладного программирования (API), такие как FHIR [8].
Оценка производительности модели
Показатель ROC AUC был рассчитан на основе количества значений, выходящих за пределы по методу дельта-чек, индексу wCDI и «вероятности», выдаваемой моделью GBDT. Бутстреп-доверительные интервалы (bsДИ) ROC AUC рассчитаны с помощью процедуры бутстреппинга (n=20 000) набора данных для валидации. Хотя модель GBDT выдает в качестве выхода «вероятность», не следует интерпретировать эту «вероятность» как истинную вероятность. «Вероятность» зависит от частоты ошибок, составившей примерно 0,5 в нашем смоделированном наборе данных; истинная вероятность зависит от фактической частоты ошибок, которая отличается от 0,5. Поэтому мы не проводили калибровку «вероятности» нашей модели. Более того, мы не строили кривую AUC-PR (precision recall) и не рассчитывали площадь под ней.
Вместо этого мы рассчитали PPV при чувствительности 0,90, исходя из частоты ошибок 0,001. Мы назвали это значение PPV@S0.9E0.001. PPV@S0.9E0.001 расчитан для упрощения работы модели в реальной ситуации, но не для валидации или статистического обоснования модели. Значение чувствительности 0,90 — произвольная оценка, так как не существует установленного стандарта для приемлемого значения чувствительности для обнаружения перепутанных образцов.
Анализ
Поскольку не существует золотого стандарта для измерения разницы между двумя результатами исследования крови, мы сравнили результаты wCDI и выходы нашей модели на диаграммах рассеяния, приняв wCDI за показатель разницы между обследованиями. При использовании модели XGBoost выход описывается значениями SHAP, рассчитанными с помощью алгоритма TreeSHAP [9]. В первоначальной статье эта величина была названа SHAP — сокращение объяснений Шапли (Shapley) — в честь значения Шапли в теории игр. Значение SHAP — это оценка выигрыша при добавлении целевого признака к каждому подмножеству всех признаков, кроме целевого. Значение рассчитывается для каждой выборки, а итоговая значимость признака представлена средним значением абсолютных значений SHAP набора данных. Значение SHAP является для модели XGBoost примерно тем же, чем отношение шансов для логистической регрессии.
Результаты
Участники
На рис. 2 представлена схема включенных исследований. Всего в данной работе использовано 2 159 354 записей, сопряженных с предыдущими записями (как показано на рис. 2: индивидуальные частичные временные ряды данных). Потенциальный охват данной модели составил 66,4%: 2 159 354 тестов из 3 250 457 общего анализа крови и/или биохимических тестов, включая первичное тестирование для каждого пациента. Подробные характеристики приведены в табл. 2.
Рис. 2. Блок-схема объектов исследования.
Таблица 2. Характеристики объектов исследований
Объекты исследований | Все | Dev-train | Dev-valid | Валидация | ||||
Количество уникальных пациентов, n | 114 802 | 75,901 | 13 711 | 25 190 | ||||
Количество исследований, n | 2 159 354 | 930,921 | 23 913 | 50 482 | ||||
Количество предыдущих исследований: | ||||||||
1 | 114 802 | (5,3) | 75 901 | (8,2) | 1761 | (7,4) | 1573 | (3,1) |
2 | 96 827 | (4,5) | 59 711 | (6,4) | 134 | (5,6) | 1337 | (2,6) |
3 или больше | 1 947 725 | (90,2) | 794 628 | (85,4) | 20 806 | (87,0) | 47 527 | (94,1) |
Возраст: | ||||||||
дети (0—1) — N (%) | 25 117 | (1,2) | 15 363 | (1,7) | 352 | (1,5) | 571 | (1,1) |
дети (2—15) — N (%) | 51 535 | (2,4) | 22 444 | (2,4) | 495 | (2,1) | 1347 | (2,7) |
взрослые (16—65) — N (%) | 1 011 603 | (46,8) | 399 363 | (42,9) | 11 177 | (46,7) | 23 165 | (45,9) |
пожилые (66—) — N (%) | 1 071 099 | (49,6) | 493 751 | (53,0) | 11 889 | (49,7) | 25 399 | (50,3) |
Пол: | ||||||||
мужчины — N (%) | 1 173 423 | (54,3) | 519 782 | (55,8) | 12 283 | (51,4) | 26 823 | (53,1) |
женщины — N (%) | 985 931 | (45,7) | 411 139 | (44,2) | 11 630 | (48,6) | 23 659 | (46,9) |
Пациенты: | ||||||||
стационар — N (%) | 876 798 | (40,6) | 500 394 | (53,8) | 9067 | (37,9) | 19 016 | (37,7) |
реанимация — N (%) | 113 077 | (12,9) | 68 568 | (13,7) | 1387 | (15,3) | 2584 | (13,6) |
не реанимация — N (%) | 763 721 | (87,1) | 31 826 | (86,3) | 7680 | (84,7) | 16 432 | (86,4) |
поликлиника — N (%) | 1 282 556 | (59,4) | 430 527 | (46,2) | 14 846 | (62,1) | 31 466 | (62,3) |
Время после прошлого исследования: | ||||||||
~1 день — N (%) | 192 817 | (8,9) | 109 709 | (11,8) | 2003 | (8,4) | 4333 | (8,6) |
~1 нед — N (%) | 624 779 | (28,9) | 351 162 | (37,7) | 5813 | (24,3) | 13 517 | (26,8) |
~1 мес — N (%) | 456 455 | (21,1) | 185 953 | (20,0) | 2302 | (9,6) | 10 387 | (20,6) |
~2 мес — N (%) | 347 808 | (16,1) | 93 355 | (10,0) | 1795 | (7,5) | 7880 | (15,6) |
2 мес ~ — N (%) | 537 495 | (24,9) | 190 742 | (20,5) | 12 000 | (50,2) | 14 365 | (28,5) |
Медиана (интерквартильный размах) | 21 | (2—58) | 7 | (1—42) | 61 | (3—158) | 27 | (2—63) |
Рабоч. время (8—17 ч): | ||||||||
рабочее — N (%) | 1 916 825 | (88,8) | 793 559 | (85,2) | 20 722 | (86,7) | 44 596 | (88,3) |
нерабочее — N (%) | 242 529 | (11,2) | 137 371 | (14,8) | 3191 | (13,3) | 5886 | (11,7) |
День недели: | ||||||||
рабочий — N (%) | 2 033 501 | (94,2) | 857 531 | (92,1) | 22 501 | (94,1) | 47 921 | (94,9) |
выходной — N (%) | 125 853 | (5,8) | 73 390 | (7,9) | 1412 | (5,9) | 2561 | (5,1) |
Кол-во не включенных исследований среди 15 выбранных показателей: | ||||||||
0 — N (%) | 1 210 415 | (56,1) | 598 519 | (64,3) | 14 812 | (61,9) | 31 930 | (63,3) |
1 — N (%) | 280 495 | (13,0) | 113 001 | (12,1) | 2588 | (10,8) | 6047 | (12,0) |
2 — N (%) | 334 885 | (15,5) | 117 585 | (12,6) | 3595 | (15,0) | 7020 | (13,9) |
3 — N (%) | 226 323 | (10,5) | 70 445 | (7,6) | 2011 | (8,4) | 3995 | (7,9) |
4 — N (%) | 106 786 | (4,9) | 31 371 | (3,4) | 907 | (3,8) | 1490 | (3,0) |