Диплом: Применение анализа больших данных и алгоритмов машинного обучения в медицинской практике

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
53
Данный формат широко применяется для хранения данных и обеспечивает
простую переносимость между различными средами обработки информации.
Функция read_csv принимает несколько аргументов, в частности: имя
файла, используемый разделитель между столбцами, количество строк, которые
будут использоваться в качестве имен столбцов (рис. 2).
Рис. 2. Загрузка данных
Загруженные данные трансформируются в объект dataframe.
Dataframe - это многомерный массив значений, каждый столбец которого
является структурой Series.
Series - это проиндексированный одномерный массив, схожий по своей
структуре с объектом типа dict. При этом каждый индекс соответствует имени
элемента, а его значение — соответствующей записи значения Series.
Столбцы DataFrame могут иметь собственные имена, соответствующие
описываемому признаку.
На следующем этапе необходимо провести оценку имеющихся данных.
Атрибут shape объекта dataframe показывает количество строк и столбцов
(рис.3).
Рис. 3. Оценка размеров таблицы признакового описания
Далее производится оценка признаков. Это делается с помощью
нескольких функций, первой из которых применена head(). При вызове этой
функции без аргументов происходит вывод первых пяти строк таблицы (рис. 4).
54
Рис.4 Вывод первых строк признакового описания.
В представленной таблице можно увидеть, что описание представлено как
числовыми, так и категориальными признаками, а часть ячеек содержит
указатель NaN, что соответствует отсутствию значения. Таблицы, содержащие
отсутствующие значения, не могут обрабатываться стандартными библиотеками
Scikit-Learn при создании линейных моделей, поэтому данные подлежат
обработке, при которой соответствующие значения будут заменены, либо будут
исключены или столбцы (признаки), или строки (объекты), содержащие NaN.
Общую характеристику столбцов можно увидеть, применив метод info() объекта
Dataframe (рис. 5):Рис. 5. Общая характеристика таблицы
Из приведенных данных видно, что два столбца («индекс массы тела» и
«статус курильщика») содержат незаполненные ячейки. Приведенный dataframe
содержит объекты типов int64, float64 и object. Общий объем занимаемой памяти
— 4 Мб.
При оценке таблицы можно обнаружить, что часть незаполненных ячеек
столбца «smoking_status» относятся к детям. Исходя из предположения, что
55
большинство детей до 14 лет не имеют никотиновой зависимости, заменим
значение NaN соответствующих ячеек на «never smoked» (рис. 6).
Рис. 6 Замена отсутствующих значений
Существует несколько способов избавиться от отсутствующих значений.
Для категориальных признаков, как правило, применяется замена
отсутствующего значения наиболее часто встречающимся среди всех объектов
выборки. Для вещественных признаков применяется замена средним, либо
медианным значением.
При использовании выборок большого объема с целью сохранения ее
информативности допустимо удаление объектов, содержащих ячейки со
значением NaN. Для этого применяется функция dropna() библиотеки Pandas
(рис. 7).
Рис.7 Удаление объектов, содержащих незаполненные ячейки
Для проведения дальнейшей подготовки данных необходимо оценить
баланс классов. [13]
Считается, что выборка называется несбалансированной (при решении
задачи бинарной классификации), если объектов одного класса менее 10% от
общего числа. Подобная ситуация нередко встречается и при поиске решений в
медицинской проблематике, поскольку здоровых людей больше, чем больных.
Основной риск, связанный с использованием несбалансированной выборки
заключается в том, что классификаторы стремятся сократить число
неправильных ответов, без учета цены ошибок. В результате есть вероятность
возникновения ситуации, при которой выгоднее (с точки зрения функции потерь)
отнести все объекты к одному — большему — классу, не стремясь выделить
объекты малого класса. Таким образом, при работе с несбалансированными
56
выборками могут получаться классификаторы с низкими показателями таких
метрик качества как точность и полнота (рис. 8).
Рис 8. Баланс классов в обучающей выборке
Таким образом можно увидеть, что выборка является сильно
несбалансированной (число объектов, относящихся к первому классу составляет
1,6% от общего числа наблюдений).
Существует два основных подхода для работы с несбалансированными
выборками. [10]
Первый из них называется “undersampling” и заключается в сокращении
числа объектов большего класса.
Второй - «oversampling», применяет обратную стратегию — дублирование
объектов меньшего класса.
В данной задаче применен первый метод балансировки классов (рис. 9).
Для этого из выборки случайным образом изымаются 1000 объектов нулевого
класса и объединяются с 548 объектами первого класса. Таким образом,
соотношение объектов становится равным 0,548, что позволяет рассчитывать на
удовлетворительные показатели точности и полноты.
57
Рис.9 Сокращение числа объектов нулевого класса
На следующем этапе выборка разбивается на непосредственно
признаковое описание объектов, и «правильные ответы» на них — указание
принадлежности к первому (пациенты, перенесшие инсульт) или нулевому
классу (здоровые люди) (рис. 10).
Рис. 10. Разделение выборки на описание объектов и ответы
Дальнейшая подготовка данных подразумевает разделение признаков на
численные и категориальные, поскольку они должны быть подвергнуты
различной обработке (рис. 11).
Рис. 11. Разделение выборки на численные и категориальные признаки
Категориальные признаки представляют собой набор элементов
неупорядоченного множества, которые невозможно сравнивать между собой по
принципу «больше или меньше». Единственная доступная операция сравнения
— это сравнение на равенство.
При этом, работа линейных моделей подразумевает сложение признаков и
их умножение на коэффициент весов. Данные операции недоступны для
58
значений категориальных признаков. Соответственно, их необходимо
преобразовать в числовую форму. [3]
Для этого применяется класс LabelEncoder из модуля sklearn.preprocessing.
Применив его последовательно ко всем столбцам категориальной подвыборки
получим преобразование признаков, при котором каждому элементу
соответствует конкретное числовое значение (рис. 12).
Рис. 12. Преобразование категориальных признаков в числовую форму
Таким образом, после проведенного преобразования таблица, содержащая
категориальные признаки принимает следующую форму (рис. 13):
Рис.13 Таблица категориальных признаков
Однако в подобном представлении между категориальным признаками
возможны операции сравнения по принципу «больше или меньше», сложения и
вычитания, что абсолютно лишено смысла. Поэтому для обучения линейной
модели необходимо провести векторизацию признаков на основе бинарного
кодирования.
Оно выглядит следующим образом: пусть имеется категориальный
признак с индексом j, принимающий одно из n возможных значений (a
1
...a
n
). При
этом f
j
(x) - значение этого признака на объекте x. Для кодирования данного
признака вводятся n новых бинарных признаков d (d
1
(x)...d
n
(x)), при этом
59
значение бинарного признака d
i
равно единице лишь в том случае, если для
данного объекта x значение категориального признака f
j
(x) равно a
i
:
d
i
(x) = [ f
j
(x) = a
i
].
В результате подобного преобразования один категориальный признак
заменяется n бинарными признаками.
В модуле sklearn.preprocessing для этого существует специальный класс
OneHotEncoder (рис. 14).
Рис. 14 Дальнейшее преобразование категориальных признаков
В результате данного преобразования получим объект класса ndarray
библиотеки NumPy, имеющий следующий вид (рис. 15):
Рис 15. Окончательный вид матрицы категориальных признаков
Дальнейшая подготовка данных требуется для числовых признаков,
поскольку линейные модели очень чувствительны к масштабу признаков,
особенно при использовании градиентных методов оптимизации. Признак,
обладающий меньшей величиной будет меньше учитываться линейной моделью,
поскольку будет обладать малым влиянием на конечный результат. Кроме
того, линии уровня для признаков, имеющих разный масштаб, будут иметь
форму эллипса, что резко затрудняет поиск минимума при помощи метода
градиентного спуска.
Чтобы не допустить искаженного влияния признаков вследствие
различных масштабов характеризующих их величин, проводится нормализация.
60
В библиотеке Scikit-learn с этой целью применяется класс StandardScaler из
модуля preprocessing (рис. 16).
Рис. 16 Нормализация числовых признаков
Данный класс выполняет z-нормализацию признаков на основе
следующего преобразования:
z = (x-μ)/σ,
где μ - математическое ожидание величины, σ - стандартное отклонение.
После данного преобразования числовые признаки приобретают
следующий вид (рис. 17):
Рис. 17 Нормализованные числовые признаки
На следующем этапе выполняется объединение данных в одну таблицу,
представляющую собой итоговые данные для проведения обучения и
тестирования модели (рис 18).
Рис.18 Объединение данных в итоговую таблицу
В результате обработки таблица принимает следующий вид (рис 19):
61
Рис 19. Итоговый вид таблицы
3.5 Разбиение выборки
Для последующего построения модели необходимо применить разбиение
имеющихся данных на обучающую и отложенную тестовую выборки. Это
необходимо с целью максимально точной оценки качества обучения и
предотвращения феномена переобучения модели. [10]
Переобучение — явление, способное возникнуть в ходе подготовки
математической модели, которое заключается в том, что модель
«подстраивается» под обучающую выборку, показывая при этом плохую
обобщающую способность на новых данных.
В противоположность ему рассматривают явление недообучения, которое
заключается в том, что модель проявляет плохую обобщающую способность как
на обучающей выборке, так и на новых данных. Данное явление связано, как
правило, с недостаточной сложностью модели.
Стоит учитывать, что выявить нежелательный эффект переобучения при
использовании только обучающей выборки невозможно, поскольку и модель с
высоким качеством обучения, и переобученная будут показывать на ней
хороший результат. Для этого необходимо использовать новые данные.
Существует несколько подходов к выявлению переобучения и борьбе с
ним. Среди них выделяют:
1. Применение отложенной выборки. При данном подходе из основной
выборки выделяется часть данных, которая не применяется в обучении, а
используется для оценки качества.
2. Стратегия «кросс-валидации», представляющая собой усложненную
методику на основе отложенной выборки.
62
3. Оценка меры сложности модели.
Отложенная выборка — наиболее простой и доступный метод оценки
качества алгоритма. [9] При этом происходит разбиение выборки на две части —
непосредственно обучающую, и тестовую, на которой проводится оценка
качества полученной модели. Это вызывает необходимость подбора пропорции
разбиения данных: слишком малый объем тестовой выборки предоставит
ненадежную оценку качества. При увеличении объема тестовой выборки все
меньше данных попадает в обучающую часть, ухудшая при этом обобщающую
способность модели. Существуют рекомендации, согласно которым разбиение
необходимо выполнять в следующих пропорциях: 0.7/0.3; 0.8/0.2; 0.632/0.368.
Преимущество данного метода заключается в том, что обучение модели
необходимо проводить один раз, что позволяет сравнительно быстро провести
этот процесс.
Однако значимым недостатком данной стратегии является
чувствительность модели к разбиению, поскольку при нем допустима ситуация,
при которой объекты одного класса, в случае их небольшого количества, могут
не попасть в обучающую выборку.
Во избежание подобных ошибок в обучении применяется более сложная
стратегия кросс-валидации. [13] При использовании данного подхода
происходит разделение выборки на n блоков одинакового объема. Далее каждый
из этих блоков последовательно выступает в качестве тестовой выборки,
остальные n-1 блоков — в качестве обучающей. В результате будет получено n
оценок качества, которые усредняются для получения итоговой оценки. При
использовании данной стратегии необходимо решить вопрос подбора
количества блоков. При малом количестве блоков получаемые оценки обладают
высокой надежностью, но могут быть смещенными. При увеличении количества
блоков достигается обратная ситуация.
Существуют рекомендации, согласно которым число n подбирается
равным 3,5, 10. При этом следует учитывать, что увеличение числа блоков
приводит к необходимости чаще обучать модель, что повышает требования к

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)
Value-based education: ценности в системе образования и способы их реализации на уроке английского языка. Опыт Европейских стран