Что такое GBT-алгоритм в Apache Spark

обучение spark sql, обучение spark streaming, курс потоковой обработки spark kafka, курсы kafka streaming, spark курсы, курсы по интеграции spark kafka, курс dataframes spark, курсы для data engineers apache spark, курсы для администраторов apache spark, курсы для инженеров данных apache spark, курсы по spark, обучение spark streaming

В прошлый раз мы говорили про особенности работы алгоритма многослойного персептрона в Spark. Сегодня поговорим про алгоритм градиентного бустинга (GBT) в распределенном Big Data фреймворке Apache Spark. Читайте далее про особенности работы алгоритма GBT, благодаря которому Apache Spark имеет возможность Big Data анализа и классификации в распределенной среде.

Как работает алгоритм GBT в Spark: особенности классификации

GBT (Gradient Boost Tree) — это алгоритм машинного обучения, использующийся для задач классификации и регрессии, который строит модель предсказания величины в форме ансамбля слабых предсказывающих моделей, в частности деревьев решений. Обучение модели основано на обучении с учителем. Цель любого алгоритма обучения с учителем — это определение функции потерь и ее минимизация Ансамбль представляет собой набор предсказателей, которые дают общий ответ. Ансамбли используют обычно для более точного предсказания одной и той же переменной. Существуют 2 техники ансамблирования: бэггинг и бустинг. Бэггинг – это техника, которая основана на построении независимых (некоррелирующих) моделей и их комбинировании путем усреденения (например, взвешенное среднее или голосование большинства) Примером бэггинга может служить модель случайного леса. Бустинг – это техника построения ансамблей, в которой предсказатели построены последовательно, а каждая следующая модель будет учиться на ошибках предыдущей. Наиболее яркий пример бустинга – это градиентный бустинг [1].

GBT-алгоритм в Spark: несколько практических примеров

Для того, чтобы начать работу с GBT-алгоритмом в pyspark, необходимо настроить базовую конфигурацию, импортировав некоторые классы ml-библитоеки Spark [2]:

from pyspark.ml.classification import GBTClassifier
from pyspark.ml.evaluation import MulticlassClassificationEvaluator
from pyspark.ml.feature import VectorAssembler

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

В первую очередь необходимо прочитать датасет с помощью pyspark [2]:

inputData = spark.read.csv("credit.csv", inferSchema=True, header=True)

 

обучение spark sql, обучение spark streaming, курс потоковой обработки spark kafka, курсы kafka streaming, spark курсы, курсы по интеграции spark kafka, курс dataframes spark, курсы для data engineers apache spark, курсы для администраторов apache spark, курсы для инженеров данных apache spark, курсы по spark, обучение spark streaming
Фрагмент датасета

Далее необходимо сформировать вектор признаков путем их векторизации с помощью класса VectorAssembler. Векторизованные признаки назовем features [2]:

assembler = VectorAssembler(
inputCols=["amount", "savings", "assets", "age", "credits"],
outputCol="features")
output = assembler.transform(inputData)

После векторизации необходимо разбить выборку на обучающую и тестовую (стандартно, 70:30 соответственно). Для того, чтобы случайным образом разбить датасет на тестовую и тренировочную выборки, необходимо использовать метод randomSplit() [2]:

train, test = output.randomSplit([0.7, 0.3])

Для построения GBT-модели в pyspark используется класс GBTClassifier:

gbt = GBTClassifier(labelCol="creditability", featuresCol="features", maxIter=10)

В качестве параметров конструктора класса у экземпляра GBTClassifier() используются следующие:

  • featuresCol — колонка, содержащая вектор признаков, на основе которых ведется предсказание или классификация;
  • labelCol — колонка целевой переменной, для которой идет предсказание (классификация)
  • maxIter — количество итераций при обучении модели [2].

Для обучения построенной модели используется метод fit() [2]:

model = gbt.fit(train)

Для предсказания (или классификации) используется метод transform(). Следующий код на языке Python отвечает за формирование датасета с предсказаниями [2]:

predictions = model.transform(test)

В качестве оценщика будем использовать оценщик мультиклассовой классификации MulticlassClassificationEvaluator с метрикой accuracy. За формирование оценки модели отвечает метод evaluate() класса MulticlassClassificationEvaluator [2]:

evaluator = MulticlassClassificationEvaluator(
labelCol="creditability", predictionCol="prediction", metricName="accuracy")
accuracy = evaluator.evaluate(predictions)
print("Test Error = %g" % (1.0 - accuracy))
обучение spark sql, обучение spark streaming, курс потоковой обработки spark kafka, курсы kafka streaming, spark курсы, курсы по интеграции spark kafka, курс dataframes spark, курсы для data engineers apache spark, курсы для администраторов apache spark, курсы для инженеров данных apache spark, курсы по spark, обучение spark streaming
Ошибка модели

Таким образом, благодаря поддержке алгоритма случайных лесов, Spark имеет возможность проводить классификацию в распределенной среде, используя огромные массивы данных для обучения, что может способствовать обучению весьма эффективных моделей. Все это делает фреймворк Apache Spark весьма полезным средством для Data Scientist’а и разработчика Big Data приложений.

Код курса
GRAS
Ближайшая дата курса
по запросу
Продолжительность
ак.часов
Стоимость обучения
0 руб.

Больше подробностей про применение Apache Spark в проектах анализа больших данных, разработки Big Data приложений и прочих прикладных областях Data Science вы узнаете на практических курсах по Spark в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве:

Записаться на курс

Смотреть раcписание

Источники

  1. https://neurohive.io/ru/osnovy-data-science/gradientyj-busting/
  2. https://spark.apache.org/docs/latest/ml-classification-regression.html#gradient-boosted-tree-regression

Добавить комментарий

Поиск по сайту