Машинное обучение в Apache Spark для начинающих - Анализ данных здравоохранения - ДиабетВступление:Apache Spark-это кластерная вычислительная платформа, предназначенная для быстрых и эффективных вычислений. Он может обрабатывать миллионы точек данных с относительно низкой вычислительной мощностью. Apache Spark построен поверх и является расширением Hadoop Map-Reduce, который эффективно использует различные комбинации кластерных вычислений. Основная особенность Spark-это кластерные вычисления в памяти, что повышает скорость работы приложений, включая интерактивные запросы и потоковую обработку.
Эта статья представляет собой краткое руководство по разработке модели прогнозирования в Spark с использованием Databricks.
Я буду использовать бесплатную версию от сообщества Databricks, спасибо им!
О данных / справочная информация:В этом посте я буду использовать машинное обучение, чтобы помочь нам предсказать вероятность диабета у пациента. Набор данных загружается из
хранилища машинного обучения UCI.Здесь я прогнозирую вероятность диабета, используя предоставленную информацию о пациенте. Это проблема бинарной классификации, где я попытаюсь предсказать вероятность наблюдения, относящегося к категории диабета.
Сначала я продемонстрирую минимальный объем исследовательского анализа, а затем перейду к моделям машинного обучения (т. е. к регрессионным и древовидным моделям), сравню и обобщу результаты.
Предварительная обработка и исследование данных:
Следующие строки кода загружают данные и создают объект dataframe. Если для
Inferschema задано значение
true, это может дать правильное представление о типе данных каждого столбца.

Я также создал словарь для хранения функций относительно их типов данных. В нашем случае у нас есть «Integer Type» и «Double Type».


Давайте посмотрим на первые 5 строк нашего набора данных.

Набор данных диабета состоит из 768 точек данных с 9 функциями в каждом:

«Outcome» - это функция, которую мы собираемся предсказать, где 0 означает, что у пациента нет диабета, а 1 означает, что у пациента есть диабет. Из этих 768 точек данных 500 помечены как 0, а 268 как 1.

Одним из преимуществ использования Databricks является то, что они помогают визуализировать запрос в некоторые основные параметры графика, чтобы обеспечить лучшее понимание данных вместе с кодом.
У нас есть полный набор данных без каких-либо пропущенных значений, но чтобы найти дополнительную информацию о работе с пропущенными данными, вы можете обратиться к этой статье:
https://www.analyticsvidhya.com/blog/tag/missing-values-treatment/Обработка категориальных данных:В наших данных у нас есть только один категориальный столбец, то есть «Pregnancies» с более чем 17 категориями. В следующем коде показано, как можно преобразовать категориальные столбцы / функции в одноразовое кодирование. В Spark используется «String Indexer», который присваивает уникальное целочисленное значение каждой категории. 0 назначается самой частой категории, 1 - следующей наиболее частой категории и т. д.

В приведенном выше коде я использовал конвейер, который эффективно решает ряд задач за одну итерацию. Можно составить список задач, и конвейер будет обрабатывать все.
В общем, конвейер машинного обучения описывает процесс написания кода, его выпуска в производство, извлечения данных, создания моделей обучения и настройки алгоритма. Это непрерывный процесс при работе на платформе ML. Но когда дело доходит до Apache Spark, конвейер - это объект, который преобразует, оценивает и объединяет шаги в один объект. Эти шаги называются ML рабочий процесс.
Vector Assembler:Идея здесь состоит в том, чтобы собрать заданный список столбцов в один векторный столбец и связать их вместе. Это дополнительный шаг, необходимый для моделей машинного обучения Spark. Этот шаг обычно выполняется в конце этапов исследования и предварительной обработки данных. На этом этапе я работаю с несколькими необработанными и немного преобразованными функциями, которые можно использовать для обучения модели.
Применение модели:У нас есть пара встроенных классификаторов, в том числе Random Forest, Boosting Trees, logistic regression и т. д. Для начала я реализую Random Forest в качестве примера, определяя количество Trees в классификаторе и оставляя оставшиеся параметры на их значение по умолчанию.
Чтобы оценить производительность нашей модели, я использую метрику кривой ROC. Вы можете выбрать «metricName» на ваш выбор.
Точность этой модели составляет 82,5%. Это указывает на то, что наша модель работает достаточно хорошо с параметрами по умолчанию.
Выбор функций:Процесс выбора функции помогает отфильтровать менее важные переменные, которые могут привести к более простой и стабильной модели. В Spark реализация выбора функций не так проста, как, например, в Python, scikit-learn, но этим можно управлять, сделав выбор функций частью конвейера. Идея заключается в следующем:
1. Сначала установите классификатор. Например, вы можете использовать регрессионные или древовидные модели, любые модели на ваш выбор.
2. Найдите значение функции, если вы используете random forest, найдите коэффициент, если вы используете logistic regression.
3. Храните самый важный набор функций в списке.
4. Используйте метод
VectorSlicer из библиотеки
ml и создайте новый вектор из списка, который вы только что выбрали.
Следующий код показывает, как создать список важных функций из модели, которую мы ранее использовали. Сохраняются характеристики больше 0,03, rf_model - модель подобранного random forest.

Выбор 0.03 является случайным, можно попробовать разные значения на основе метрики AUC. Позже я использовал vector slicer, чтобы собрать все объекты, значение которых превышает 0,03.

При выборе функции мы увидели улучшение точности на 1% при общей точности 83%. Из полного набора функций мы получили точность 82%. При работе с большими данными даже улучшение на 1% имеет значение.
В конце концов, я просто хочу закончить, сказав, что Apache Spark является лаконичным и простым в использовании фреймворком с открытым исходным кодом.
Команда SimplyVital Health надеется, что вам понравился урок по машинному обучению в Apache Spark! Это то, с чем мы сталкиваемся каждый день и пытаемся вернуть сообществу эти уроки! Чтобы узнать больше о SimplyVital Health, подпишитесь на нас в
Facebook ,
Twitter и просмотрите наши вакансии в
AngelList.Перевод.
Оригинал:
https://medium.com/simplyvital/machine-learning-in-apache-spark-for-beginners-healthcare-data-analysis-diabetes-276156b97e92