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

1. Традиционно специалисты по обработке данных использовали инструменты Python и R для обработки данных на одной машине, где перемещение данных отнимает много времени. Здесь для анализа требуется выборка, которая часто неточно представляет данные, а переход от среды разработки к производственной среде требует обширного реинжиниринга.

MLlib - это библиотека функций машинного обучения Spark. spark.mllib содержит исходный API, построенный на основе RDD. spark.ml, поскольку предоставляет API более высокого уровня, построенный на основе DataFrames для построения конвейеров машинного обучения, и на данный момент является основным API машинного обучения для Spark.

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

2. Используя MLlib, можно получить доступ к Hive и HBase HDFS (Hadoop Data File System) в дополнение к локальным файлам. Это позволяет легко подключить MLlib к рабочим процессам Hadoop, так что на одной платформе у вас есть все!

Чтобы проверить, насколько это упрощает нашу жизнь, давайте с помощью Spark ML проведем классификацию набора данных Amazon Fine Food Review по тональности. Для этого анализа мы будем использовать кластер Databricks Community Spark.

ИЗУЧЕНИЕ ДАННЫХ (неизбежное)

  1. Зная свои данные

Набор данных состоит из обзоров прекрасных продуктов от Amazon. Охватывает период более 10 лет, включая все ~ 500 000 отзывов до 12 октября. В конце этой главы, имея обзор, мы должны быть в состоянии предсказать, является ли настроение положительным или отрицательным с максимально возможной точностью. Давай попробуем сегодня!

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

3. Загрузка набора данных и его предварительный просмотр.

4. Столбец «Оценка» содержит оценки по отзывам клиентов. Он имеет 5 различных значений, но для анализа настроений давайте преобразуем его в метки двоичного класса (Оценка ›3 положительна, то есть 1, иначе отрицательна, то есть 0).

5. Удаление дубликатов

Таким образом, путем дедупликации было удалено более 100 тысяч строк.

6. Подсчет каждого ярлыка класса

7. Очистка данных

Поскольку нас интересует только настроение отзыва, мы сохраняем только столбец «Текст» и столбец «Оценка» в качестве метки класса для каждого отзыва.

8. Разделение на тренировку-тест в посте 80:20 с удалением недостающих значений.

ОПИСАНИЕ ТЕКСТА

· Использование функции Tf-idf. Идея схемы TF-IDF заключается в том, что слова, часто встречающиеся в одном документе и реже встречающиеся во всех других документах, более важны для классификации.

O / p выглядит так

  1. Использование логистической регрессии в качестве первого классификатора

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

Вау! Наша точность значительно улучшилась.

2. Случайный лес в качестве второго классификатора.

С некоторой настройкой гиперпараметров мы можем лучше подогнать параметры модели в RF.

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

· Пробуем word2vec featurization с использованием CBOW-модели Gensim и посмотрим, есть ли какие-либо изменения в точности модели.

  1. Логистическая регрессия :

Теперь, с настройкой гиперпараметров,

2. Классификатор случайных лесов

С настройкой гиперпараметров

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

Давайте попробуем реализовать классификатор Xgboost (лучшее оружие для всего: P)

Внедрение Xgboost в Pyspark немного сложно, поэтому я использовал оболочку Sklearn на Xgboost, то есть XGBClassifier.

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

Таким образом, в этом блоге мы узнали, что такое Spark ML, как его использовать для реализации моделей машинного обучения. Мы также увидели, как использовать различные методы определения характеристик, и использовали идею перекрестной проверки для настройки гиперпараметров моделей с помощью Spark ML. Ссылку на блокнот модуля данных можно найти здесь.

Для специалистов по обработке данных следующей задачей станет реализация этой задачи классификации текста в Sklearn. Быть в курсе!

Удачного обучения !!