Планирование ресурсов играет важную роль в обеспечении качественного медицинского обслуживания. Для медицинских организаций ключевым вопросом эффективного управления ресурсами представляется компромисс между качеством услуг и затратами: существует желание минимизировать затраты, не ухудшив качество медицинских услуг. Данный компромисс можно достигнуть разными способами: за счет улучшение управления персоналом, а также планирование приема пациентов. При этом остается проблема эффективного использования ресурсов: при низком уровне данного показателя деньги налогоплательщиков не используются на должном уровне, а при высокое использования ресурсов может привести к низкому качеству медицинского обслуживания.
Важную роль в определении эффективности использования ресурсов влияет время пребывания пациента в больнице (англ. Length of stay или LOS). Предсказывание данного показателя позволит поликлиникам рассчитывать даты выписки поступающих пациентов, что в свою очередь позволит улучшить планирование приемов пациентов и эффективному использованию больничных коек. Также прогнозирование LOS позволяет планировать ресурсы в долгосрочной перспективе. Таким образом, целью данного исследования является рассмотрение влияния пары метод машинного обучения и метод кодирования категориальных признаков на значение выбранной метрики при различных подходах валидации данных.
Название модели | Параметры |
---|---|
Метод кодирования | 'n_jobs': -1 |
LinearRegression | - |
KNeighborsRegressor | "n_neighbors": 45, 'n_jobs': -1 |
DecisionTreeRegressor | "random_state": 42, 'max_features':'auto' |
RandomForestRegressor | "n_estimators": 100, "random_state": 42, 'n_jobs': -1 |
MLPRegressor (sklearn) | "hidden_layer_sizes": (32, 32, 64), "solver":'adam', "learning_rate_init": 0.02, "random_state": 42,'early_stopping': True |
LGBMRegressor (XGBoost) | "metrics": "MSE", "n_estimators": 5000, "learning_rate": 0.02, "random_state": 42, 'n_jobs':- 1 |
Prediction-of-LOS/
|-- models.py
|-- encoders.py
|-- model.py
|-- experiment.py
|-- Data_preprocessing.ipynb
|-- Experiment_results.ipynb
|-- prep_data/
|||||-- mimic.csv
|-- raw_data/
|||||-- images/
|||||-- mimic-iii-clinical-database-1.4/
- Models.py представляет собой файл с расширением .py и содержит в себе описанные ранее алгоритмы для машинного обучения, которые будут использоваться в эксперименте.
- Методы кодирования и методы кросс-валидации содержатся в файле encoders.py.
- Для того чтобы не писать для каждой пары метод кодирования и метод машинного обучения собственный метод напишем унифицированную функцию. Данная функция принимает название метода машинного обучения, реализацию которого находится в файле models.py, название метода кодирования категориальных признаков, который описан в файле encoders.py, а также название метода кросс-валидации, реализацию которого также находится в файле encoders.py. Данную функцию разместим в файле model.py. Также в этом файле будет находиться реализация обучения (метод fit) и предсказания (predict).
- Перед тем как начать эксперимент данные проходят процесс предобработки в файле Data_preprocessing.ipynb. Данный файл представляет собой интерес с той точки зрения, что можно просматривать анализ и визуализацию данных, проделанный в предыдущей главе.
- Данные, которые участвуют в анализе и визуализации, находятся в папке raw_data, также в этой папке находятся графики, которые были получены в ходе исследования данных. В конце данного файла находится функция, которая приводит данные к единому формату для последующего эксперимента.
- Обработанные данные хранятся в папке prep_data.
- Файл под названием experiment.py содержит эксперимент. Данный файл содержит функцию, позволяющую передать названия моделей и их параметры, название метода кросс-валидации, а также список методов кодирования категориальных признаков, которые будут применены к данным. В результате получается словарь, состоящий из полученных результатов.
- Результаты полученного эксперимента хранятся в папке results. Файлы, которые хранятся в этой папке, имеют следующий вид: {название датасета}_{название метода кросс-валидации}.csv.
- Наконец, результаты эксперимента можно просмотреть в файле Experiment_results.ipynb.
- Data_preprocessing.ipynb
- experiment.py
- Experiment_results.ipynb
Метод кодирования | LinearRegression | KNeighborsRegressor | DecisionTreeRegressor | RandomForestRegressor | MLPRegressor | LGBMRegressor |
---|---|---|---|---|---|---|
BackwardDifferenceEncoder | 83.886 | 114.397 | 253.053 | 113.014 | 116.766 | 85.3485 |
FrequencyEncoder | 79.5718 | 115.378 | 253.572 | 85.255 | 116.483 | 74.9897 |
HelmertEncoder | 77.3658 | 114.397 | 221.148 | 86.3063 | 79.4962 | 76.0341 |
JamesSteinEncoder | 83.7425 | 114.397 | 398.701 | 111.25 | 122.172 | 87.6164 |
LeaveOneOutEncoder | 81.3309 | 114.397 | 118.17 | 117.894 | 83.5761 | 117.53 |
MEstimateEncoder | 83.3314 | 114.397 | 398.701 | 111.25 | 85.9935 | 87.6164 |
OneHotEncoder | 83.886 | 114.397 | 229.358 | 95.6498 | 116.733 | 84.8071 |
OrdinalEncoder | 100.181 | 114.397 | 268.801 | 85.0247 | 85.2655 | 85.7505 |
SumEncoder | 77.3658 | 114.397 | 245.434 | 86.7759 | 89.2989 | 74.8041 |
TargetEncoder | 83.3319 | 114.397 | 398.701 | 111.25 | 101.237 | 87.6164 |
Метод кодирования | LinearRegression | KNeighborsRegressor | DecisionTreeRegressor | RandomForestRegressor | MLPRegressor | LGBMRegressor |
---|---|---|---|---|---|---|
BackwardDifferenceEncoder | 77.3658 | 114.397 | 239.393 | 84.494 | 117.735 | 75.9018 |
CatBoostEncoder | 80.7028 | 114.397 | 219.27 | 85.4648 | 104.588 | 73.4174 |
FrequencyEncoder | 79.5648 | 115.323 | 253.588 | 85.2524 | 116.338 | 74.9897 |
HelmertEncoder | 77.3658 | 114.397 | 228.985 | 86.3876 | 115.005 | 74.2031 |
JamesSteinEncoder | 81.6168 | 114.397 | 222.607 | 84.8551 | 191.12 | 76.5161 |
LeaveOneOutEncoder | 81.2863 | 114.397 | 118.238 | 118.009 | 111.164 | 117.643 |
MEstimateEncoder | 81.2353 | 114.397 | 210.099 | 86.7404 | 75.8812 | 74.9903 |
OneHotEncoder | 77.3658 | 114.397 | 247.186 | 86.0236 | 99.3873 | 74.8041 |
OrdinalEncoder | 80.2765 | 114.397 | 229.016 | 84.8798 | 109.886 | 75.3688 |
SumEncoder | 77.3658 | 114.397 | 244.34 | 86.3527 | 206.386 | 74.8041 |
TargetEncoder | 81.237 | 114.397 | 210.099 | 86.7404 | 87.4663 | 74.9903 |
Метод кодирования | LinearRegression | KNeighborsRegressor | DecisionTreeRegressor | RandomForestRegressor | MLPRegressor | LGBMRegressor |
---|---|---|---|---|---|---|
CatBoostEncoder | 81.2803 | 114.397 | 227.465 | 79.5997 | 80.3438 | 71.7553 |
FrequencyEncoder | 81.1614 | 114.976 | 419.356 | 116.292 | 118.662 | 88.2224 |
JamesSteinEncoder | 81.6414 | 114.397 | 206.091 | 80.2682 | 78.4088 | 73.2844 |
LeaveOneOutEncoder | 81.2807 | 114.397 | 244.362 | 79.6565 | 107.507 | 72.6443 |
MEstimateEncoder | 81.2803 | 114.397 | 227.465 | *79.5997 | 80.3438 | 71.7553 |
TargetEncoder | 81.2815 | 114.397 | 244.362 | 79.6565 | 92.6553 | 72.6443 |
- Курсивом выделен лучший скор на методе машиннного обучения
- Жирным шрифтом выделен лучшиий скор на методе кодирования категориальных признаков
Подводя выводы по всем подходам валидации данных с категориальными признаками можно сделать следующие выводы:
- Методы, которые не используют информацию о значениях целевой переменной, показывают хорошие результаты метрики в подходе None Validation: SumEncoder, HelmertEncoder, OrdinalEncoder.
- Методы, использующие информацию о значениях целевой переменной, показывают хорошие результаты метрики в подходе Single Validation: CatBoostEncoder, LeaveOneOutEncoder, MEstimateEncoder.
- Подход Double Validation совместно с методами кодирования категориальных признаков – CatBoostEncoder, JamesSteinEncoder, MEstimateEncoder – показывают улучшение значений метрик, по сравнению с подходом Single Validation. Таким образом, такой подход может улучшить значения метрики.
- Несмотря на хорошие результаты One-Hot кодирования, применение иных подходов может показать значительное снижение результатов метрики. При этом, SumEncoder, который представляет собой изменение One-Hot кодирования, может показывать значения метрики не хуже One-Hot кодирования, а в некоторых случаях значения метрики лучше.
- Наилучшим алгоритмов при для предсказания времени пребывания в больнице является градиентный бустинг. Однако, стоит учитывать, что нейронная сеть в эксперименте представляет собой трехслойную полносвязную сеть и показатели метрики могут быть улучшены при оптимизации гиперпараметров.
=======
7880fb99b4d0cfff90ab374656b6ab61e3e2f5b1