10 строк для диагностики болезни Паркинсона при помощи XGBoost |
||||||||||||||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2018-04-22 14:00 В статье на примере диагностики болезни Паркинсона рассматривается применение популярной библиотеки машинного обучения XGBoost. XGBoost (сокращение от EXtreme Gradient Boosting) – популярная библиотека машинного обучения, реализующая модель градиентного бустинга, представляющего альтернативу регрессионным методам и нейронным сетям. Метод заключается в создании ансамбля последовательно уточняющих друг друга деревьев решений. Пример таких деревьев с сайта библиотеки представлен ниже на иллюстрации. Возьмем задачу с обнаружением болезни Паркинсона: у нас есть несколько показателей, которые мы можем проанализировать, и в конечном итоге диагностировать, есть ли у пациента болезнь, то есть провести классификацию пациентов. Это классическая задача для XGBoost. Чтение данных Начнем со сбора данных. Соответствующий датасет для болезни Паркинсона можно найти по ссылке (зеркало на GitHub). Нам нужен файл parkinsons.data. Разметка этого data-файла аналогична CSV, поэтому его легко распарсить при помощи pandas: Python
Теперь выделим признаки и метки. Все столбцы в файле числовые, за исключением первого столбца name. Столбец с метками состоит из нулей (отсутствие болезни) и единиц (наличие), соответственно это столбец status:
Скейлинг данных Далее необходимо нормировать признаки так, чтобы конечные значения находились в интервале от -1 до 1. Для этого применим MinMaxScaler из библиотеки sklearn:
Разбиение на обучающую и тестовую выборки Теперь разобьем данные на обучающую и тестовую выборки так, чтобы избежать переобучения. Датасет довольно большой, выделим 14% под тест, используя из библиотеки sklearn функцию train_test_split:
Создание и обучение модели XGBoost Установить библиотеку XGBoost можно стандартным образом при помощи pip install xgboost. Создадим модель классификатора и обучим его на данных обучающей выборки.
Метод быстрый, и обучение модели займет не больше нескольких секунд. Оценка результата моделирования Для оценки результата воспользуемся функцией accuracy_score:
Точность предсказания на тестовой выборке оказывается весьма высокой, выше 95%. Это хороший результат: в оригинальной публикации 2007 года точность классификации составила 91.8 ± 2.0%, а в работах 2016 года 96.4% при использовании метода опорных векторов и 97% в настроенной модели ускоренной логистической регрессии. Посмотреть полный код и поиграть с данными можно в Jupyter-блокноте Train.ipynb здесь. Если вы хотите лучше разобраться в деталях реализации XGBoost, ознакомьтесь с этой публикацией. Источник: proglib.io Комментарии: |
|||||||||||||