Машинное обучение и здравоохранение — обнаружение болезни Паркинсона

Машинное обучение имеет множество применений во многих современных отраслях, одним из которых является здравоохранение. При достаточной информации, переданной модели машинного обучения, она может предсказать, диагностировано ли у кого-то заболевание или нет.

В этой статье я объясню, как создать модель классификации XGBoost для прогнозирования наличия у человека болезни Паркинсона. Этот проект написан на Python с использованием блокнота Jupyter.

Что такое ансамблевые методы?

Цель методов ансамбля в машинном обучении состоит в том, чтобы объединить прогнозы из различных базовых моделей, построенных с заданным алгоритмом обучения, для улучшения результатов. Двумя основными семействами ансамблевых методов являются методы усреднения (методы мешков, деревья случайного леса и т. д.) и методы повышения (AdaBoost, повышение градиентного дерева и т. д.).

Я буду обсуждать методы повышения и мини-проект по реализации одного из самых известных алгоритмов повышения, то есть экстремального повышения градиента (XGBoost).

Что такое повышающий ансамблевый метод?

Повышение — это итеративный метод, который проходит циклы для итеративного добавления моделей в ансамбль.

Цель повышения ансамбля состоит в том, чтобы исправить ошибки предсказания, сделанные предыдущими моделями в ансамбле. Он начинается с инициализации одной модели в ансамбле, предсказания которого могут быть довольно наивными. Эти прогнозы используются для расчета функции потерь (например, среднеквадратичной ошибки). Вторая модель попытается исправить ошибки прогнозов и уменьшить потери по первой модели, а затем третья модель попытается исправить ошибки прогнозов и уменьшить потери по второй модели и так далее. Этот процесс направлен на создание так называемого сильного ученика из многих специально созданных слабых учеников.

Так продолжалось до тех пор, пока не был разработан AdaBoost, который продемонстрировал усиление как эффективный ансамблевый метод. Со времен AdaBoost было разработано множество алгоритмов повышения, в том числе:

  1. Повышение градиента
  2. Стохастическое повышение градиента

Что такое повышение градиента?

Повышение градиента — это метод машинного обучения, используемый, в частности, в задачах регрессии и классификации. Он дает модель прогнозирования в виде ансамбля слабых моделей прогнозирования, обычно используются деревья решений. Когда дерево решений является слабым учеником, результирующий алгоритм называется деревом с градиентным усилением. Обычно он превосходит случайный лес.

Модель дерева с градиентным усилением строится поэтапно, как и в других методах повышения, но она обобщает другие методы, позволяя оптимизировать дифференцируемую функцию потерь с помощью градиентного спуска.

Что такое XGBoost?

XGBoost расшифровывается как Extreme Gradient Boosting, это программная библиотека с открытым исходным кодом, разработанная для того, чтобы быть эффективной, гибкой и портативной. Он обеспечивает реализацию алгоритмов машинного обучения в рамках Gradient Boosting framework. XGBoost обеспечивает параллельное повышение дерева (также известное как GBDT, GBM), которое быстро и точно решает многие проблемы науки о данных. Основная цель XGBoost — повысить производительность и скорость. (У Scikit-learn есть другая версия повышения градиента, но у XGBoost есть некоторые технические преимущества). XGBoost нацелен на:

  1. Эффективное использование функционального пространства.
  2. Улучшена производительность модели.
  3. Скорость выполнения.

Параметры XGBoost

  1. n_оценщиков

Указывает, сколько раз нужно пройти цикл моделирования, описанный выше. Оно равно количеству моделей, которые мы включаем в ансамбль.

2.Early_stopping_rounds

Предлагает способ автоматического поиска идеального значения для n_estimators. Ранняя остановка приводит к тому, что модель прекращает итерации, когда оценка проверки перестает улучшаться, даже если мы не находимся на жесткой остановке для n_estimators.

3. learning_rate

Вместо того, чтобы получать прогнозы, просто складывая прогнозы из каждой модели компонентов, мы можем умножить прогнозы из каждой модели на небольшое число (известное как скорость обучения), прежде чем добавлять их.

4. n_jobs

В больших наборах данных, где время выполнения имеет значение, вы можете использовать параллелизм для более быстрого построения моделей. Обычно параметр n_jobs устанавливается равным количеству ядер на вашем компьютере. На небольших наборах данных это не поможет.

Что такое болезнь Паркинсона?

Болезнь Паркинсона — это прогрессирующее заболевание центральной нервной системы, влияющее на двигательную активность и вызывающее тремор и скованность движений. Он имеет 5 стадий и ежегодно поражает более 1 миллиона человек в Индии. Это хроническое заболевание и пока неизлечимо. Это нейродегенеративное заболевание, поражающее нейроны головного мозга, вырабатывающие дофамин.

Цель — выявление болезни Паркинсона.

Построить модель, которая точно предсказывает, заражен ли кто-то этой болезнью.

Обнаружение болезни Паркинсона — О проекте машинного обучения

В этом проекте машинного обучения Python с использованием библиотек Python Scikit-learn, NumPy, Pandas и XGBoost мы создадим модель с использованием XGBClassifier. Мы загрузим данные, получим функции и метки, масштабируем функции, затем разделим набор данных, создадим XGBClassifier, а затем рассчитаем точность нашей модели.

Набор данных, используемый здесь, представляет собой набор данных UCI ML Parkinson. Загрузите его здесь. Набор данных имеет 24 столбца и 195 записей.

Этапы создания модели

  1. Импорт необходимых библиотек

2. Импорт набора данных

3. Получение функций и меток

4. Масштабирование функций

5. Разделите набор данных

6. Обучите модель

7. Рассчитайте точность

Зачем использовать XGBoost?

Цель разработки состояла в том, чтобы наилучшим образом использовать доступные ресурсы для обучения модели.

Алгоритм различается по следующим признакам:

  1. Широкий спектр приложений: может использоваться для решения задач регрессии, классификации, ранжирования и пользовательских прогнозов.
  2. Портативность: без проблем работает на Windows, Linux и OS X.
  3. Языки: поддерживает все основные языки программирования, включая C++, Python, R, Java и Scala.

Некоторые ключевые особенности реализации алгоритма включают в себя:

  1. Реализация Sparse Aware с автоматической обработкой отсутствующих значений данных.
  2. Блочная структура для поддержки распараллеливания построения дерева.
  3. Продолжение обучения, чтобы вы могли дополнительно улучшить уже подобранную модель на новых данных.

Заключение

Здесь модель бустинга может предсказать результаты с точностью 94,87, что является довольно хорошим результатом. При тщательной настройке параметров можно обучить высокоточные модели. XGBoost — одна из ведущих программных библиотек для работы со стандартными табличными данными, многие пользователи Kaggle используют ее в соревнованиях. Недавно Microsoft разработала собственную платформу повышения градиента под названием LightGBM, написанную Guolin Ke. Другой альтернативой XGBoost является CatBoost, разработанный Яндексом, который пытается решить категориальные функции с помощью метода, основанного на перестановках. В каждой теме всегда есть что исследовать, но я надеюсь, что смог поделиться своими мыслями о повышении градиента. Надеюсь, вы нашли мою статью интересной и познавательной. Не стесняйтесь комментировать ниже ваши мысли.

Пожалуйста, не стесняйтесь проверять мой профиль, Pratham Soneja и другие статьи, а также обращаться ко мне в LinkedIn, если у вас есть какие-либо вопросы или комментарии.

Рекомендации

  1. Документация XGBoost
  2. Документация CatBoost
  3. Документация LightGBM
  4. Обучение ансамблю
  5. Методы ансамбля — документация Scikit-learn
  6. Усиление градиента
  7. Нежное введение в XGBoost