Описанная формулировка задачи совпадает с формулировкой первых 2 работ в главе, посвященной обзору литературы. Тем не менее, в этой главе также был описан другой подход с использованием модели ARIMA. Данный подход оказался неприменим к имеющимся данным, т.к. количество пациентов со временем не имеет ни трендовой, ни сезонной компоненты.
Рисунок 15. Количество посещений на каждые 2 недели
В результате, после обработки данных, была составлена таблица со следующими признаками.
Таблица 5. Признаки после обработки данных
|
|
Признак |
Кол. уникальный значений |
Тип данных |
|
|
1 |
id |
656 |
int64 |
|
|
2 |
age |
72 |
int64 |
|
|
3 |
diag |
79 |
object |
|
|
4 |
code |
7 |
object |
|
|
5 |
int_spec |
4 |
object |
|
|
6 |
int_diag |
6 |
object |
|
|
7 |
int_treat |
39 |
object |
|
|
8 |
disease |
19 |
object |
|
|
9 |
group_1-4 |
30 |
object |
|
|
10 |
code_activ_1-4 |
17 |
object |
|
|
11 |
code_spec_1-4 |
20 |
object |
|
|
12 |
producer_1-4 |
96 |
object |
|
|
13 |
section_1-4 |
8 |
object |
|
|
14 |
concept_1-4 |
384 |
object |
|
|
15 |
dt_diff_1-4 |
590 |
timedelta64[ns] |
|
|
16 |
activity_num_1-4 |
6 |
object |
|
|
17 |
activity_letter_1-4 |
18 |
object |
|
|
18 |
num_of_rep_visit |
134 |
int64 |
|
|
19 |
num_of_visit |
359 |
int64 |
|
|
20 |
num_from_prev_days |
414 |
float64 |
|
|
21 |
dt_mean |
13180 |
float64 |
|
|
22 |
dt_std |
25425 |
float64 |
|
|
23 |
cum_days |
19242 |
float64 |
|
|
24 |
var_class_target |
44 |
object |
|
|
25 |
var_reg_target |
590 |
timedelta64[ns] |
Красным цветом обозначена базовая информация о пациенте, голубым - лаговые переменные с лагом 4, желтым - скользящие переменные, зеленым - целевые переменные.
3.4 Сжатие признакового пространства
Таблица пар X-Y готова, но в ней все еще существуют категориальные признаки. Количество уникальных значений для некоторых полей слишком большое, примерно до 400 значений, а работать с категориальными признаками могут только деревья. Таким образом было использовано 2 подхода для обработка категориальных признаков.
Таблица 6. Сравнение алгоритмов кодирования категориальных признаков
|
Dummy encoding |
Word2Vec |
||
|
Алгоритм кодирования |
Создания уникального флага для каждого значения в поле |
Перевод последовательности категориальных признаков в слова и последующие векторное представление |
|
|
Кол. новых полей |
Кол. уникальных значений в поле |
Задается пользователем |
После перевода категориальных признаков в вещественные размер признакового пространства все еще может быть слишком большой. Для сокращения количества признаков использовался алгоритма PCA.
Ниже представлены доли кумулятивной объясненной дисперсии для dummy и w2v кодирования.
Рисунок 16. Кумулятивный процент объясненной дисперсии для Dummy кодирования
Рисунок 17. Кумулятивный процент объясненной дисперсии для W2V кодирования
Для сокращения признакового пространства было выбрано количество компонента, дающая 70% объясненной дисперсии.
В итоге вышло 5 датасетов для обучения со следующими размерностями:
Dummy: 2357 признаков
Dummy + PCA: 859 признаков
W2V: 273 признака
W2V + PCA: 55 признаков
Без обработки (для градиентного бустинга): 51 признак
3.5 Инструменты разработки
Обработка данных и обучение моделей проводились с использование языка Python и дополнительных библиотек, которые представлены в таблице 6.
Таблица 7. Список используемых библиотек
|
Тип работы |
Название библиотеки |
|
|
Работа с данными |
||
|
Работа с JSON |
json |
|
|
Работа с таблицами и препроцессинг |
Pandas |
|
|
Визуализация данных |
Matplotlib |
|
|
Word2Vec |
gensim |
|
|
Алгоритмы |
||
|
Линейная регрессия |
Sklearn |
|
|
Логистическая регрессия |
Sklearn |
|
|
Случайный лес |
Sklearn |
|
|
Нейронные сети |
Keras |
|
|
Градиентный бустинг |
CatBoost |
3.6 Результаты
Для задач регрессии и классификации использовались следующие алгоритмы: Случайный лес, Градиентный бустинг и нейронные сети. Также для регрессии использовалось Lasso, а для классификации логистическая регрессия.
Параметрические методы и Случайный лес обучались на данных обработанные 4 способами: PCA + W2V, PCA + Dummy, W2V, Dummy. Для гранентного бустинга это не нужно, т.к. библиотека CatBoost умеет работать с категориальными признаками.
Ниже представлены результаты каждого алгоритма для соответствующих метрик и учет кодирования и сжатия признакового пространства.
Регрессия:
Таблица 8. Результаты регрессии.
|
TEST |
|||||
|
Алгоритм |
Сжатие и кодирование |
MSE |
MAE |
R2 |
|
|
Lasso |
Dummy |
572 |
9.6 |
0.32 |
|
|
Random Forest |
Dummy |
571 |
7.1 |
0.42 |
|
|
Neural Network |
Dummy |
890 |
14.6 |
0.19 |
|
|
Lasso |
PCA + Dummy |
660 |
10.9 |
0.27 |
|
|
Random Forest |
PCA + Dummy |
683 |
10.1 |
0.25 |
|
|
Neural Network |
PCA + Dummy |
493 |
7.9 |
0.36 |
|
|
Lasso |
W2V |
764 |
11.2 |
0.17 |
|
|
Random Forest |
W2V |
553 |
7.6 |
0.4 |
|
|
Neural Network |
W2V |
807 |
14 |
0.21 |
|
|
Lasso |
PCA + W2V |
711 |
11.9 |
0.27 |
|
|
Random Forest |
PCA + W2V |
612 |
8.7 |
0.39 |
|
|
Neural Network |
PCA + W2V |
633 |
8.4 |
0.41 |
|
|
Gradient Boosting |
- |
546 |
7.6 |
0.49 |
Классификация:
Таблица 9. Результаты классификации.
|
TEST |
|||||
|
Алгоритм |
Сжатие и кодирование |
Accuracy |
F1 weight |
F1 mean |
|
|
Logistic Reg. |
Dummy |
0.31 |
0.25 |
0.04 |
|
|
Random Forest |
Dummy |
0.63 |
0.65 |
0.31 |
|
|
Neural Network |
Dummy |
0.11 |
0.025 |
0.08 |
|
|
Logistic Reg. |
PCA + Dummy |
0.59 |
0.54 |
0.25 |
|
|
Random Forest |
PCA + Dummy |
0.54 |
0.5 |
0.22 |
|
|
Neural Network |
PCA + Dummy |
0.52 |
0.52 |
0.26 |
|
|
Logistic Reg. |
W2V |
0.31 |
0.25 |
0.04 |
|
|
Random Forest |
W2V |
0.63 |
0.61 |
0.34 |
|
|
Neural Network |
W2V |
0.06 |
0.09 |
0.05 |
|
|
Logistic Reg. |
PCA + W2V |
0.55 |
0.51 |
0.2 |
|
|
Random Forest |
PCA + W2V |
0.59 |
0.55 |
0.21 |
|
|
Neural Network |
PCA + W2V |
0.58 |
0.55 |
0.26 |
|
|
Gradient Boosting |
- |
0.66 |
0.62 |
0.315 |
Таким образом лучшим алгоритмом для всех типов задач оказался градиентный бустинг. Стоит также отметить, что нейронные сети показывает хорошие показатели метрик для малых размерностей, но для большого количества признаков результат может быть хуже чем у линейных моделей, т.к. процесс обучения у нейронных сетей очень сложный.
Результаты работы алгоритмов будут анализироваться для результатов градиентного бустинга.
3.7 Вывод по предсказательным моделям
Рисунок 18 Распределение ошибки регрессии
Распределение ошибки имеет среднее 0.17 дней и стандартной отклонение 21.8. У распределения есть очень тяжелый хвост справа, можно сделать очевидный вывод, что распределение не нормально.
Рисунок 19. Зависимость предсказания от целевой переменной
Если же посмотреть на график реальных значений и ответов, можно увидеть, что предсказанные концентрируются в районе 0-150, можно сделать вывод о неоднородности целевой переменной.
Понять качество работы алгоритмов поможет Confusion matrix. В данной матрице на одной оси изображены ответы, а на другой реальные значения. В каждой ячейке находится количество кейсов, которые соответствует данным координатам. У идеального алгоритма будет диагональная матрица. Однако данная матрица выглядит диагональной только с абсолютными числами. Если же отнормировать значения, поделить на сумму оси реальных ответов, можно увидеть, что матрица совсем не диагональная. Данное явление объясняется несбалансированностью классов по количество образцов и сложности классификации.
Дальнейшие исследования:
Градиентный бустинг показал 0.66 для Accuracy по мультиклассификации и 0.49 для R2 - очевидно, что это не случайные результаты. Данные пригодны для предиктивного анализа и по ним можно предсказывать поток пациентов, однако для применения на практике такой точности может быть мало. Таким образом, можно выделить 2 инициативы для дальнейших исследований. С одной стороны, это поиск и проверка алгоритмов для предсказания, оптимизация гиперпараметров и генерация новых признаков, с другой стороны - обучения моделей на новых данных или добавление новой информации к существующему датасету.
Рисунок 20. Confusion matrix
Рисунок 21. Confusion matrix с нормирование по столбцам
Заключение
С помощью библиотек Python была проведение обработка данных - перевод из логов JSON в табличный формат CSV. Также, с использование лаговых переменных, агрегирующих статистик, методов кодирования категориальный переменных и сжатия признакового пространства, удалось привести данные в вид, который является пригодным для алгоритмов предиктивной аналитики.
В частности, благодаря библиотеки CatBoost была обучена модель градиентного бустинга, которая может предсказывать информацию о следующем посещении пациента. Лучшие модели показали следующие результаты - Accuracy = 0.66 для 25 классов, R2 = 0.49. Можно сделать вывод, что у обученных моделей есть предиктивные способности, и они уловили определенные закономерности, однако для решения практической задачи этой точности может быть недостаточно.
Данная проблема может объясняться тем, что текущий датасет хранит только ограниченный набор общедоступной информации 2005-2008 года. Сейчас медицинские учреждения собирают в несколько раз больше данных и это позволило бы значительно уменьшить ошибки моделей.
Основную гипотезу о способностях машинного обучения к предиктивной аналитике потока пациентов можно считать верной, а поставленную цель достигнутой.
Есть 2 направления по дальнейшему исследованию: во-первых, можно улучшать уже имеющиеся модели путем пробы новых архитектур, генерации признаков и оптимизации гиперпараметров, во-вторых - обучение моделей на новых данных и последующая оптимизация моделей. Второй вариант является предпочтительным, однако, в силу приватности медицинской информации, существует проблема с наличием данных в открытом доступе.
Список используемой литературы
1. Kovalchuk, S. V., Funkner, A. A., Metsker, O. G., & Yakovlev, A. N. (2018). Simulation of patient flow in multiple healthcare units using process and data mining techniques for model identification // Journal of Biomedical Informatics. - 2018, № 82. - C. 128-142.
2. Xu, H., Wu, W., Nemati, S., & Zha, H. Patient flow prediction via discriminative learning of mutually-correcting processes // 2017 IEEE 33rd International Conference on Data Engineering (ICDE).
3. Zhang, Y., Luo, L., Zhang, F., Kong, R., Yang, J., Feng, Y.& Guo, H. Emergency patient flow forecasting in the radiology department // Health Informatics Journal - 2020 Feb 19.
4. Dagliati, A., Marini, S., Sacchi, L., Cogni, G., Teliti, M., Tibollo, V., Bellazzi, R. Machine Learning Methods to Predict Diabetes Complications // Journal of Diabetes Science and Technology - 2017 №12(2), - С. 295-302.
5. Tighe, P. J., Lucas, S. D., Edwards, D. A., Boezaart, A. P., Aytug, H., & Bihorac, A. Use of Machine-Learning Classifiers to Predict Requests for Preoperative Acute Pain Service Consultation // Pain Medicine - 2012 №13(10), - С. 1347-1357.
6. Stekhoven, D. J., & Buhlmann, P. MissForest--non-parametric missing value imputation for mixed-type data // Bioinformatics - 2011 №28(1), - С. 112-118.
7. Breiman, L. Random Forests // Machine Learning - 2001 №45, - С. 5-32.
8. Friedman, J. Greedy function approximation: A gradient boosting machine. // The Annals of Statistics. - 2001 №29, - С.1189-1232.
9. Kingma, D., &; Ba, J. Adam: A Method for Stochastic Optimization // ICLR 2015 - 2017.
10. Grathwohl, W., Choi, D., Wu, Y., Roeder, G., &; Duvenaud, D. Backpropagation through the Void: Optimizing control variates for black-box gradient estimation // ICLR 2018 - 2020
11. Milkov T., Ilya S., Kai C., Greg C. & Jeffrey D. Representations of Words and Phrases And their Compositionality // эNIPS 2013 - 2013
12. Ian T., Jorge C. Principal component analysis: a review and recent developments // Philosophical Transactions of The Royal Society Journal - 2016 №374