Статья опубликована в рамках: LX Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 25 декабря 2017 г.)
Наука: Информационные технологии
Скачать книгу(-и): Сборник статей конференции
МЕДИЦИНСКАЯ СТАТИСТИЧЕСКАЯ АНАЛИТИЧЕСКАЯ СИСТЕМА НА ОСНОВЕ АЛГОРИТМОВ МАШИННОГО ОБУЧЕНИЯ
Введение
Аналитические системы на основе Data Mining и машинного обучения применяются в медицине более 10 лет [9]. Они позволяют извлекать из медицинских показателей скрытые закономерности на основе которых можно прогнозировать развитие болезней. Выполнение такой работы человеком трудоемко, требует привлечения специалистов высокой квалификации и не всегда возможно.
Следует обратить внимание что существующие системы, могут быть довольно универсальны [4; 5; 6], что может усложнять их использование для узких задач. Такие системы решают поставленные задачи, но требуют больше времени специалиста для настройки под конкретные нужды.
В контексте российской медицины, применение таких систем часто осложнено организационными и финансовыми проблемами. В свою очередь открытые для бесплатного использования библиотеки машинного обучения (например, Scickit Learn, TensorFlow, Pandas, и т. д.) для на сегодняшний день при грамотном использовании позволяют достичь высоких результатов [9] без глубоких научных изысканий и программирования сложных систем.
Таким образом, целесообразно создание медицинской статистической аналитической системы на основе алгоритмов машинного обучения, которая поможет медицинским аналитикам получить доступ к современным мощным и бесплатным библиотекам машинного обучения и использовать их в своей работе. При этом им не будут требоваться дополнительные знания языков программирования таких как Python или R.
Такая система должна иметь достаточно простой и расширяемый функционал. Расширяемость функционала может достигаться не инструментами в пользовательском интерфейсе, а понятным и доступным кодом, чтобы после передачи системы заказчику он мог ее расширить своими силами.
Описание системы
Для простоты реализации и расширения система реализуется на языке программирования Python 3, который является одним из самых популярных [7; 8] и имеет значительное количество доступных библиотек машинного обучения. Система разделена на 2 основные части: подсистема ввода, хранения и управления данными и подсистема анализа данных. Система анализа данных представляет собой web-сервис, который будет доступен по внутренней сети больницы и будет принимать и отдавать данные в заданном формате.
Подсистема ввода хранения и управления данными реализована на основе фреймворка Django работающего на основе Python 3. Подсистема анализа данных реализуется с нуля, с использованием различных библиотек для решения конкретных задач в контексте системы. Так, например, для машинного обучения используются библиотеки Scikit Learn, TensorFlow, Pandas, Numpy, для доступа к системе через сеть библиотека Flask, и т.д.
В качестве СУБД для хранения данных выбрана PostgreSQL, поскольку фреймворк Django на основе которого реализована подсистема ввода, хранения и управления данными имеет встроенную поддержку PostgreSQL, она бесплатна и в сети интернет доступно много информации об этой СУБД.
На сегодняшний день реализовано около 80 % подсистемы ввода хранения и управления данными и часть, отвечающая за очистку данных и оценку выбранного алгоритма подсистемы анализа данных. Для отладки и тестирования решено провести эксперимент и обучить алгоритм предсказывать факт смерти пациента.
Цель эксперимента
На текущем этапе разработки подсистемы анализа данных тестируются аналитические компоненты системы, с целью проверки их стабильности и выявления ошибок, слабых мест, и неочевидного поведения в коде системы, поскольку неочевидное поведение противоречит принципу простоты системы указанному выше.
В ходе эксперимента будут опробованы несколько алгоритмов машинного обучения и помимо отладки будет выявлена целесообразность и перспективность их использования на имеющихся данных.
Описание данных
Для эксперимента используется набор данных о несовершеннолетних пациентах состоящий из 72 признаков включающий в себя 1929 записей. Перед началом анализа выбираются все признаки кроме помеченных как не участвующих в анализе. В анализе не участвуют признаки, которые с точки зрения текущего эксперимента не будут полезны. В качестве целевой переменной выбирается факт смерти пациента. Однако такой переменной в данных нет, но есть признак Дата смерти. Это признак заполнен датой или оставлен пустым. Следует преобразовать этот признак чтобы получить бинарный признак со значением да (1) и нет (0). Если в исходном признаке Дата смерти указана дата, следовательно, в преобразованном признаке следует установить значение 1, иначе 0.
Для описания данных использованы сокращения, представленные в таблицах 1 и 2. Описания всех признаков представлены в таблице 3.
Таблица 1
Сокращения для обозначения типа данных признаков, представленных в наборе данных используемом при работе системы
№ |
Тип данных |
Краткое обозначение |
---|---|---|
1 |
Целое число |
ЦЧ |
2 |
Чисто с плавающей точкой |
ЦПТ |
3 |
Строка |
С |
4 |
Дата |
Д |
Таблица 2
Сокращение для обозначения типовых причин отказа от использования признака в течении отладочного эксперимента
№ |
Описание |
Краткое обозначение |
---|---|---|
1 |
Мало данных. Меньше порога в 1500 записей. Порог выбран эмпирически на основании просмотра исходных данных. |
МД |
2 |
Нет полезной информации для эксперимента. |
НПИ |
3 |
Персональные данные. Нет доступа для проведения анализа. Кроме того, не несут полезной аналитической информации. |
ПД |
Таблица 3
Описание признаков в исходном наборе данных
№ |
Кодовое имя |
Описание |
Тип дан-ных |
Кол-во не пус-тых |
Примечание |
---|---|---|---|---|---|
center |
Номер мед. центра в котором проводилось обследование |
ЦЧ |
- |
Не участвует Одно значение во всех записях |
|
2 |
ident |
ID пациента * |
ЦЧ |
- |
Не участвует. ПД |
3 |
fname |
Имя и отчество |
С |
- |
Не участвует. ПД |
4 |
lastname |
Фамилия |
С |
- |
Не участвует. ПД |
5 |
index |
Почт. индекс |
С |
- |
Не участвует. ПД |
6 |
address |
Адрес |
С |
- |
Не участвует. ПД |
7 |
adr_telephon |
Телефон |
С |
- |
Не участвует. ПД |
8 |
bdate |
Дата рождения |
Д |
1917 |
Будет преобразовано в признак «Возраст на момент постановки диагноза» |
9 |
sex |
Пол |
ЦЧ |
1929 |
|
10 |
fddate |
Дата обращения |
Д |
1657 |
Не участвует. НПИ |
11 |
tsdate |
Дата обследования |
Д |
1618 |
Не участвует. НПИ |
12 |
tdate |
Дата постановки диагноза |
Д |
1921 |
Будет преобразовано в признак «Возраст на момент постановки диагноза» |
13 |
edate |
Дата последнего события (опухоли и т.д.) |
Д |
219 |
Не участвует. НПИ, МД |
14 |
otcode |
Неизвестно |
ЦЧ |
929 |
Не участвует. МД |
15 |
ddate |
Дата смерти |
Д |
359 |
Будет преобразовано в целевой признак «Факт смерти» |
16 |
death_icd |
Код причины смерти по МКБ |
С |
12 |
Не участвует. МД |
17 |
ecode |
Описание последнего события (опухоли и т.д.) |
ЦЧ |
786 |
Не участвует. НПИ, МД |
18 |
esource |
Источник сведений о событии |
ЦЧ |
380 |
Не участвует. МД |
19 |
dcause |
Причина смерти |
ЦЧ |
984 |
Не участвует. НПИ |
20 |
dsource |
Источник сведений о смерти |
ЦЧ |
540 |
Не участвует. МД |
21 |
numtumor |
№ опухоли (1-я, 2-я и т.д.) |
ЦЧ |
439 |
Не участвует. МД |
22 |
iccc |
Классификация заболевания в соответствии с международной классификации детских злокачественных опухолей |
С |
1912 |
|
23 |
icd_10 |
Классификация заболевания в соответствии с МКБ-10 |
С |
1610 |
|
24 |
icd_o |
Классификация заболевания в соответствии с МКБ-О |
С |
1603 |
|
25 |
fds |
Диагноз |
С |
1906 |
Не участвует. Строка без определенного формата. Сложно извлечь информацию |
26 |
circdetect |
Как обнаружено заболевание (например, обратился сам, регулярный осмотр и т.д.) |
ЦЧ |
1628 |
Не участвует. НПИ |
27 |
hyst |
Гистология (факт) |
ЦЧ |
1899 |
|
28 |
cyto |
Цитология (факт) |
ЦЧ |
1887 |
|
29 |
exp_oper |
Операция (факт) |
ЦЧ |
1865 |
|
30 |
immun |
Иммуногистохимия (факт) |
ЦЧ |
1865 |
|
31 |
cytogen |
Цитогенетика (факт) |
ЦЧ |
1884 |
|
32 |
lab_instr |
Лабораторно-инстр. данные (факт) |
ЦЧ |
1868 |
|
33 |
incentr |
Пациент получал лечение в центре |
ЦЧ |
1028 |
Не участвует. НПИ |
34 |
lasttest |
Дата последнего обновления |
Д |
1822 |
Не участвует. НПИ |
35 |
lastsource |
Последний источник обновления |
ЦЧ |
769 |
Не участвует. НПИ, МД |
36 |
lfudate |
Дата потери из-под наблюдения |
Д |
123 |
Не участвует. МД |
37 |
lfucode |
Причина потери из-под наблюдения |
ЦЧ |
595 |
Не участвует. МД |
38 |
otregion |
Пациент из другого региона |
ЦЧ |
1878 |
|
39 |
date_actend |
Неизвестно |
Д |
252 |
Не участвует. МД |
40 |
concord |
Получено согласие на лечение |
ЦЧ |
1862 |
|
41 |
protocol |
Протокол лечения |
С |
280 |
Не участвует. МД |
42 |
autopsie |
Проводилось ли вскрытие |
С |
1204 |
Не участвует. НПИ, МД |
43 |
tabort |
Терапия прервана |
ЦЧ |
703 |
Не участвует. МД |
44 |
stage |
Стадия заболевания |
ЦЧ |
1836 |
|
45 |
stage_sym |
Доп. символ к стадии заболевания |
ЦЧ |
19 |
Не участвует. МД |
46 |
chirurg |
Хирургический этап лечения (факт) |
ЦЧ |
983 |
Отсутствующие строки перевести в значение «нет» |
47 |
radiolog |
Лучевая терапия (факт) |
ЦЧ |
980 |
Отсутствующие строки перевести в значение «нет» |
48 |
chimio |
Химиотерапия (факт) |
ЦЧ |
1000 |
Отсутствующие строки перевести в значение «нет» |
49 |
rdate |
Дата достижения ремиссии |
Д |
409 |
Не участвует. МД |
50 |
rem |
Примечание к ремиссии |
С |
130 |
Не участвует. МД |
51 |
t_tnm |
Классификация по TNM компонент T |
ЦЧ |
1856 |
|
52 |
n_tnm |
Классификация по TNM компонент N |
ЦЧ |
1855 |
|
53 |
m_tnm |
Классификация по TNM компонент M |
ЦЧ |
1856 |
|
54 |
g_tnm |
Классификация по TNM гистологическая степень злокачественности |
ЦЧ |
1854 |
|
55 |
encr_bas |
Неизвестно |
ЦЧ |
1694 |
|
56 |
ct_tnm |
Клиническая стадия TNM компонент T (факт) |
ЦЧ |
1374 |
Не участвует. МД |
57 |
cn_tnm |
Клиническая стадия TNM компонент N (факт) |
ЦЧ |
1374 |
Не участвует. МД |
58 |
cm_tnm |
Клиническая стадия TNM компонент M (факт) |
ЦЧ |
1374 |
Не участвует. МД |
59 |
land |
Регион проживания |
ЦЧ |
1904 |
|
60 |
lum |
Лимфоузлы (факт поражения) |
ЦЧ |
1869 |
|
61 |
oss |
Кости (факт поражения) |
ЦЧ |
1868 |
|
62 |
hepar |
Печень (факт поражения) |
ЦЧ |
1866 |
|
63 |
lung |
Легкое (факт поражения) |
ЦЧ |
1867 |
|
64 |
brain |
Головной мозг (факт поражения) |
ЦЧ |
1865 |
|
65 |
skin |
Кожа (факт поражения) |
ЦЧ |
1866 |
|
66 |
nephro |
Почка (факт поражения) |
ЦЧ |
1865 |
|
67 |
herm |
Половые органы (факт поражения) |
ЦЧ |
1865 |
|
68 |
periton |
Брюшина (факт поражения) |
ЦЧ |
1865 |
|
69 |
kmark |
Костный мозг (факт поражения) |
ЦЧ |
1865 |
|
70 |
unknown |
Неизвестно |
ЦЧ |
1865 |
Не участвует. НПИ |
71 |
other |
Другое |
ЦЧ |
1866 |
Не участвует. НПИ |
72 |
acc |
Неизвестно |
ЦЧ |
1929 |
|
* - все признаки начиная с 2 относятся к пациенту.
Описание эксперимента
Начальный этап работы с данными предполагает их очистку и преобразование их в формат приемлемый для работы в системе. Эта часть работы с данными инкапсулирована в классе Preparer системы. Объект класса Preparer содержит метод prepare принимающий на вход набор данных в формате pandas.DataFrame [1] библиотеки Pandas, описание целевой переменной, существующих признаков и вычисляемых признаков. В контексте системы вычисляемый признак отличается от не вычисляемого тем что его нет в исходном наборе данных и его требуется создать пользователю явно указав описание такого признака в систему. Ниже, в описании алгоритма работы метода prepare приведен пример создания такого признака.
Формат передачи признаков описан в классе Feature (для признаков) и наследующем его классе CalculatedFeature (для вычисляемых признаков). При этом метод prepare возвращает преобразованные данные в формате pandas.DataFrame. На этом этапе уже нет разницы между вычисляемым признаком и не вычисляемым, поскольку все признаки являются одинаковыми по своим свойствам колонками объекта pandas.DataFrame.
Обработка данных методом prepare выполняется в несколько этапов:
- Из набора данных удаляются строки содержащие пустые значения для признаков если признак не предполагает пустых значений. В следующей итерации системы планируется предоставлять пользователю возможность заменять пустые значения, например, средними значениями, по его усмотрению. Однако на сегодняшний день такая возможность не реализована. В текущей версии системы есть возможность используя простейшие выражения на языке программирования Python преобразовать текущие признаки, например, пустые значения в значения по умолчанию. При этом исходный признак следует удалить и создать новый вычисляемый признак. Таким образом, например, дополняются признаки chirurg, radiolog, chimio (поз. 46, 47, 48 таблицы 3).
- Сырые данные преобразуются в тип понятный системе, в соответствии с описаниями, переданными в параметрах метода. Это по большей части исключительно технический этап. Подавляющее большинство из передаваемых в метод prepare данных возможно уже находится в подходящем формате, однако явное приведение типа позволяет ожидать от системы большей стабильности и предсказуемости в процессе обработки данных.
- Добавляются вычисляемые признаки. Как указанно выше в контексте системы под вычисляемыми признаками понимаются признаки которых нет в поступающих в метод prepare наборе данных и которые формируются и добавляются в набор данных на основании информации переданной пользователем. Например, на основе признаков tdate и bdate (поз. 8 и 12 таблицы 3) будет сформирован новый признак age – возраст на момент постановки диагноза.
- Удаляются выбросы в соответствии с описаниями, переданными в параметрах метода. Система позволяет задать порог в соответствии с которыми будут отфильтрованы значения за пределами порога. Например, в исходных данных в вычисляемом поле age есть несколько значений больше 18 (лет), что в контексте данных явно является ошибкой, поскольку больница работает только с несовершеннолетними пациентами. Установив порог в 0.99 можно избавится от таких значений.
- Все категориальные признаки преобразуются в бинарные. Например, признак cytogen (поз. 34 таблицы 3) содержит значения 0, 1. Однако эти признаки не являются количественными поскольку означают лишь метку и не могут быть сравнены между собой. Такое сравнение может исказить результаты анализа. В подобных случаях следует удалить исходный признак и создать несколько новых бинарных признаков на основе исходного. Например, система удалит признак cytogen и создаст признаки cytogen_0, cytogen_1 каждый из которых будет содержать 0 или 1 в зависимости от того, какое значение исходного признака содержала строка (0 - не содержала, 1 - содержала). Такие признаки также будут вычисляемыми, поскольку они отсутствуют в поступающем наборе данных. Отличие в том, что они создаются автоматически без участи пользователя, лишь на основании типа признака (категориальные).
- Удаляются не нужные признаки. Например, как указанно выше на основании признаков tdate и bdate сформирован новый признак age. Таким признак age содержит в себе информацию которую содержали признаки tdate и bdate, соответственно необходимость в этих признаках в наборе данных отпадает, и они могут быть удалены. В рамках отладочного эксперимента признаки будут удалены, однако при проведении других экспериментов удаление какого-либо из признаков зависит от параметров, передаваемых пользователем.
Набор данных полученный после обработки методом классом Prepare представлен в таблице 5. При этом следует отметить что все признаки, обозначенные как бинарные представлены в таблице в виде одного поля. Это сделано для упрощения восприятия таблицы. На 5 этапе работы метода prepare они преобразованы в несколько признаков. Например, признак cytogen состоящий из значений 0 и 1 в возвращаемом наборе данных представлен в виде признаков cytogen_0 и cytogen_1. В нулевой позиции таблицы представлена целевая переменная dead для отладочного эксперимента, означающая факт смерти пациента.
Для описания типа преобразованных признаков использованы сокращения, представленные в таблице 4. Для описания типа данных использованы сокращения, представленные в таблице 1.
Таблица 4
Сокращения для обозначения типа данных признаков, представленных в наборе данных используемом при работе системы
№ |
Тип признака |
Краткое обозначение |
---|---|---|
1 |
Бинарный |
Б |
2 |
Количественный |
К |
Таблица 5
Набор данных после обработки методом prepare
№ |
Кодовое имя |
Описание |
Тип данных |
Тип признака |
---|---|---|---|---|
0 |
dead |
Факт смерти пациента |
ЦЧ |
Б |
1 |
age |
Возраст на момент постановки диагноза |
ЧПТ |
К |
2 |
sex |
Пол |
ЦЧ |
Б |
3 |
iccc |
Классификация заболевания в соответствии с международной классификации детских злокачественных опухолей |
ЦЧ |
Б |
4 |
icd_10 |
Классификация заболевания в соответствии с МКБ-10 |
ЦЧ |
Б |
5 |
icd_o |
Классификация заболевания в соответствии с МКБ-О |
ЦЧ |
Б |
6 |
hyst |
Гистология (факт) |
ЦЧ |
Б |
7 |
cyto |
Цитология (факт) |
ЦЧ |
Б |
8 |
exp_oper |
Операция (факт) |
ЦЧ |
Б |
9 |
immun |
Иммуногистохимия (факт) |
ЦЧ |
Б |
10 |
cytogen |
Цитогенетика (факт) |
ЦЧ |
Б |
11 |
lab_instr |
Лабораторно-инстр. данные (факт) |
ЦЧ |
Б |
12 |
otregion |
Пациент из другого региона |
ЦЧ |
Б |
13 |
concord |
Согласие на лечение (факт) |
ЦЧ |
Б |
14 |
stage |
Стадия заболевания |
ЦЧ |
Б |
15 |
chirurg |
Хирургический этап лечения (факт) |
ЦЧ |
Б |
16 |
radiolog |
Лучевая терапия (факт) |
ЦЧ |
Б |
17 |
chimio |
Химиотерапия (факт) |
ЦЧ |
Б |
18 |
t_tnm |
Классификация по TNM компонент T |
ЦЧ |
Б |
19 |
n_tnm |
Классификация по TNM компонент N |
ЦЧ |
Б |
20 |
m_tnm |
Классификация по TNM компонент M |
ЦЧ |
Б |
21 |
g_tnm |
Классификация по TNM гистологическая степень злокачественности |
ЦЧ |
Б |
22 |
encr_bas |
Неизвестно |
ЦЧ |
Б |
23 |
land |
Регион проживания |
ЦЧ |
Б |
24 |
lum |
Лимфоузлы (факт поражения) |
ЦЧ |
Б |
25 |
oss |
Кости (факт поражения) |
ЦЧ |
Б |
26 |
hepar |
Печень (факт поражения) |
ЦЧ |
Б |
27 |
lung |
Легкое (факт поражения) |
ЦЧ |
Б |
28 |
brain |
Головной мозг (факт поражения) |
ЦЧ |
Б |
29 |
skin |
Кожа (факт поражения) |
ЦЧ |
Б |
30 |
nephro |
Почка (факт поражения) |
ЦЧ |
Б |
31 |
herm |
Половые органы (факт поражения) |
ЦЧ |
Б |
32 |
periton |
Брюшина (факт поражения) |
ЦЧ |
Б |
33 |
kmark |
Костный мозг (факт поражения) |
ЦЧ |
Б |
34 |
acc |
Неизвестно |
ЦЧ |
Б |
На этом этапе сформирован набор признаков, которые по гипотезе отладочного эксперимента могут оказывать влияние на факт смерти пациента. Однако набор признаков велик и перед началом обработки следует выяснить какие из них действительно оказывают влияние на целевую переменную.
Для реализации этого этапа в системе предусмотрено использование метода главных компонент на основании решения sklearn.decomposition.PCA [2] библиотеки Scikit Learn. Получаем оценку влияния признаков на факт смерти пациента, приведенную в таблице 6. Указаны только признаки, оказывающие хотя бы минимальный видимый эффект. При этом, для упрощения анализа полученных результатов, бинарные признаки вроде sex_0 и sex_1 сведены в единую переменную sex содержащей в себе сумму влияния признаков.
Таблица 6
Признаки, оказывающие минимальное видимое влияние на целевую переменную dead (Смерть пациента)
№ |
Кодовое имя |
Влияние на целевую переменную |
---|---|---|
1 |
age |
0.69328 |
2 |
iccc |
0.16486 |
3 |
sex |
0.10447 |
4 |
icd_10 |
0.03225 |
5 |
icd_o |
0.00440 |
6 |
stage |
0.00026 |
7 |
concord |
0.00009 |
8 |
cyto |
0.00008 |
9 |
t_tnm |
0.00005 |
10 |
hyst |
0.00004 |
11 |
exp_oper |
0.00004 |
12 |
immun |
0.00004 |
13 |
lab_instr |
0.00004 |
14 |
otregion |
0.00004 |
15 |
n_tnm |
0.00003 |
16 |
m_tnm |
0.00001 |
17 |
g_tnm |
0.00001 |
Видно, что переменная age (возраст) оказывает максимальное значение на факт смерти пациента, что не удивительно, поскольку речь идет о пациентах детского возраста и чем пациент старше, тем сильнее и имеет выше шанс справится с болезнью. Для исключения очевидной составляющей исключаем переменную age. Кроме того, переменные iccc, icd_10 и icd_o означают классификацию болезни по различным системам. Эти системы классификации не идентичны, но, если рассматривать их очень обобщенно, являются схожими. Таким образом использование всех 3-х переменных вероятно станет причиной мультиколлинеарности. Если, учесть, что наибольшее влияние оказывает переменная iccc то так же представляется разумным удалить переменные icd_10 и icd_o. Кроме того, удаляем все переменные, не попавшие в приведенный список и не оказывающие сколько-нибудь заметного влияния на целевую переменную. После этого снова оцениваем влияние переменных с помощью метода главных компонент.
Таблица 7
Признаки, оказывающие минимальное видимое влияние на целевую переменную dead (Смерть пациента) (Повторная оценка)
№ |
Кодовое имя |
Влияние на целевую переменную |
---|---|---|
1 |
iccc |
0.58944 |
2 |
sex |
0.34824 |
3 |
stage |
0.01674 |
4 |
concord |
0.00629 |
5 |
land |
0.00491 |
6 |
t_tnm |
0.00453 |
7 |
hyst |
0.00350 |
8 |
g_tnm |
0.00339 |
9 |
cyto |
0.00334 |
10 |
n_tnm |
0.00330 |
11 |
exp_oper |
0.00321 |
12 |
immun |
0.00300 |
13 |
encr_bas |
0.00285 |
14 |
lab_instr |
0.00284 |
15 |
otregion |
0.00271 |
16 |
m_tnm |
0.00171 |
Как видно из таблицы 7 вес оставшихся признаков во влиянии на целевую переменную значительно вырос. Хотя для большинства остается незначительным. На следующем этапе эксперимента будут использованы признаки из таблицы 7, и отдельно признаки iccc и sex имеющие наибольший вес, представленный в таблице 8.
Таблица 8
Признаки, оказывающие максимальное влияние на целевую переменную dead (Смерть пациента) (Повторная оценка)
№ |
Кодовое имя |
Влияние на целевую переменную |
---|---|---|
1 |
iccc |
0.54201 |
2 |
sex |
0.45799 |
К данным описанными признаками, представленными в таблицах 7 и 8 последовательно были применены несколько алгоритмов машинного обучения: K-ближайших соседей, Логистическая регрессия, Решающее дерево, Random Forest, Gradient Tree, Наивный Байес для нормального распределения, Наивный Байес для распределения Бернулли. Все алгоритмы используются внутри классов-оберток, которые разделяют общий интерфейс, реализованный в виде соглашения с оговоренным набором методов с обозначенной сигнатурой.
С каждым набором проведено 2 эксперимента. Один с параметрами по умолчанию, второй набор параметров подобран при помощи системы основанной на sklearn.model_selection.GridSearchCV [4]. Для алгоритмов Наивного Байеса использованы только параметры по умолчанию.
В течении эксперимента мониторинг выполнялся по следующим параметрам: правильность (accuracy), точность (precision), полнота (recall), ф-мера (f-score), время. Ф-мера является основным параметром для сравнения. Остальные величины взяты для построения полной картины. Время оценивается только для получения общего представления о сравнении времени работы алгоритмов. Для оценки указанных параметров набор данных делится на обучающий и тестовый в сочетании 0,75 на 0,25. Результаты приведены в таблице 9.
Таблица 9
Результаты отладочного эксперимента
№ |
Алгоритм |
Правиль-ность (accuracy) |
Точность (precision) |
Полнота (recall) |
Ф-мера (f-score) |
Время
|
---|---|---|---|---|---|---|
1 |
K-ближайших соседей (Таблица 7 – 1552 записи) |
|||||
1.1 |
Параметры по умолчанию |
0.802 |
0.734 |
0.802 |
0.752 |
0.125 |
1.2 |
metric: chebyshev, n_neighbors: 12, weights: uniform |
0.817 |
0.671 |
0.817 |
0.737 |
0.125 |
2 |
K-ближайших соседей (Таблица 8 – 1911 записей) |
|||||
2.1 |
Параметры по умолчанию |
0.789 |
0.729 |
0.789 |
0.748 |
0.125 |
2.2 |
metric: chebyshev, n_neighbors: 11, weights: uniform |
0.812 |
0.743 |
0.812 |
0.745 |
0.125 |
3 |
Логистическая регрессия (Таблица 7 – 1552 записи) |
|||||
3.1 |
Параметры по умолчанию |
0.814 |
0.772 |
0.814 |
0.778 |
0.031 |
3.2 |
solver: saga |
0.809 |
0.765 |
0.809 |
0.774 |
0.031 |
4 |
Логистическая регрессия (Таблица 8 – 1911 записей) |
|||||
4.1 |
Параметры по умолчанию |
0.81 |
0.665 |
0.81 |
0.73 |
0.016 |
4.2 |
solver: liblinear |
0.81 |
0.665 |
0.81 |
0.73 |
0.016 |
5 |
Решающее дерево (Таблица 7 – 1552 записи) |
|||||
5.1 |
Параметры по умолчанию |
0.765 |
0.745 |
0.765 |
0.754 |
0.016 |
5.2 |
criterion: entropy, splitter: random |
0.778 |
0.74 |
0.778 |
0.755 |
0.016 |
6 |
Решающее дерево (Таблица 8 – 1911 записей) |
|||||
6.1 |
Параметры по умолчанию |
0.81 |
0.745 |
0.81 |
0.75 |
~ 0.0 |
6.2 |
criterion: gini, splitter: best |
0.81 |
0.745 |
0.81 |
0.75 |
~ 0.0 |
7 |
Random Forest (Таблица 7 – 1552 записи) |
|||||
7.1 |
Параметры по умолчанию |
0.822 |
0.782 |
0.822 |
0.781 |
0.234 |
7.2 |
bootstrap: True, criterion: gini, max_features: auto, n_estimators: 30 |
0.82 |
0.778 |
0.82 |
0.779 |
|
8 |
Random Forest (Таблица 8 – 1911 записей) |
|||||
8.1 |
Параметры по умолчанию |
0.81 |
0.745 |
0.81 |
0.75 |
0.234 |
8.2 |
bootstrap: False, criterion: gini, max_features: auto, n_estimators: 10 |
0.81 |
0.745 |
0.81 |
0.75 |
0.234 |
9 |
Gradient Tree (Таблица 7 – 1552 записи) |
|||||
9.1 |
Параметры по умолчанию |
0.82 |
0.778 |
0.82 |
0.779 |
0.281 |
9.2 |
criterion: mae, loss: exponential, max_features: sqrt |
0.827 |
0.801 |
0.827 |
0.768 |
|
10 |
Gradient Tree (Таблица 8 – 1911 записей) |
|||||
10.1 |
Параметры по умолчанию |
0.814 |
0.752 |
0.814 |
0.747 |
0.141 |
10.2 |
criterion: friedman_mse, loss: exponential, max_features: None |
0.814 |
0.752 |
0.814 |
0.747 |
0.141 |
11 |
Наивный Байес для нормального распределения (Таблица 7 – 1552 записи) |
|||||
11.1 |
Параметры по умолчанию |
0.353 |
0.786 |
0.353 |
0.364 |
~ 0.0 |
12 |
Наивный Байес для нормального распределения (Таблица 8 – 1911 записей) |
|||||
12.1 |
Параметры по умолчанию |
0.236 |
0.734 |
0.236 |
0.173 |
0.016 |
13 |
Наивный Байес для распределения Бернулли (Таблица 7 – 1552 записи) |
|||||
13.1 |
Параметры по умолчанию |
0.804 |
0.762 |
0.804 |
0.773 |
0.016 |
14 |
Наивный Байес для распределения Бернулли (Таблица 8 – 1911 записей) |
|||||
14.1 |
Параметры по умолчанию |
0.812 |
0.751 |
0.812 |
0.752 |
~ 0.0 |
Как видно из результатов эксперимента:
- Часто параметры по умолчанию оказываются для алгоритмов, реализованных в современных мощных библиотеках машинного обучения достаточными для достижения качественного результата, что подтверждает тезис о возможности их использования различными специалистами, не имеющими глубоких знаний в алгоритмах машинного обучения. Но таким специалистам требуется предоставить доступ к инструментам, на что и нацелена описываемая система.
- Алгоритмы выдают довольно высокие результаты, на текущем этапе, а значит их использование целесообразно.
Список литературы:
- Документация библиотеки Pandas, раздел DataFrame сайт [электронный ресурс] – Режим доступа. – URL: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html (дата обращения 09.12.2017);
- Документация библиотеки Scikit Learn, раздел sklearn.decomposition.PCA, сайт [электронный ресурс] – Режим доступа. – URL: http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html (дата обращения 09.12.2017);
- Документация библиотеки Scikit Learn, раздел sklearn.model_selection.GridSearchCV, сайт [электронный ресурс] – Режим доступа. – URL: http://scikit-learn.org/stable/modules/generated/sklearn.model_selection. GridSearchCV.html (дата обращения 10.12.2017);
- IBM SPSS Modeler сайт [электронный ресурс] – Режим доступа. – URL: https://www.ibm.com/bs-en/marketplace/spss-modeler (дата обращения 02.07.2017);
- Neural Designer сайт [электронный ресурс] – Режим доступа. – URL: https://www.neuraldesigner.com (дата обращения 02.07.2017);
- RapidMiner сайт [электронный ресурс] – Режим доступа. – URL: https://rapidminer.com (дата обращения 02.07.2017);
- RedMonk сайт [электронный ресурс] – Режим доступа. – URL: http://redmonk.com/sogrady/2017/06/08/language-rankings-6-17/ (дата обращения 17.12.2017);
- TIOBE сайт [электронный ресурс] – Режим доступа. – URL: https://www.tiobe.com/tiobe-index/ (дата обращения 17.12.2017);
- Tomar D., Agarwal S. A survey on Data Mining approaches for Healthcare // International Journal of Bio-Science and Bio-Technology. – 2013. – Vol. 5 № 5. – P. 241-266.
Оставить комментарий