Что такое алгоритм случайного леса в Apache Spark

Spark, Big Data, apache spark курсы, курсы по apache spark, обучение spark sql, обучение spark streaming, курсы администрирования spark, hadoop spark, обучение apache spark, spark streaming это, курсы по spark, курс kafka spark

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

Как работает алгоритм случайного леса: особенности классификации

Случайный лес (random forest) — это алгоритм машинного обучения, который заключается в использовании ансамбля (совокупности) деревьев решений (decision trees). Ключевая идея заключается в том, что качество классификации в случайном лесу повышается за счет большого количества ансамблей деревьев решений. Классификация проводится путем голосования деревьев, где каждое дерево относит классифицируемый объект к одному из классов. Побеждает тот класс, за который проголосовало наибольшее число деревьев. Оптимальное число деревьев подбирается таким образом, чтобы минимизировать ошибку классификации на тестовой выборке. В случае отсутствия ошибки, минимизируется оценка ошибки на образцах, не вошедших в набор [1].

Алгоритм случайного леса в Spark: несколько практических примеров

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

# библиотека векторизации признаков
from pyspark.ml.feature import VectorAssembler
# библиотека оценки регресии
from pyspark.ml.evaluation import RegressionEvaluator
# библиотека алгортима случайного леса
from pyspark.ml.regression import RandomForestRegressor

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

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

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

 

Spark, Big Data, apache spark курсы, курсы по apache spark, обучение spark sql, обучение spark streaming, курсы администрирования spark, hadoop spark, обучение apache spark, spark streaming это, курсы по spark, курс kafka spark
Фрагмент датасета

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

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

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

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

Далее применим модель случайного леса (за это отвечает класс RandomForestRegressor() и обучим ее на обучающей выборке данных с помощью метода fit() [2]:

rf = RandomForestRegressor(featuresCol="features", labelCol='creditability', numTrees=10)
rfModel = rf.fit(train)

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

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

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

predictions = rfModel.transform(test)

Для оценки модели будем использовать регрессионный оценщик (класс RegressionEvaluator), который включает в себя следующие свойства:

  • labelCol — колонка, по которой велось предсказание или классификация;
  • predictionCol — колонка, содержащая набор с предсказаниями;
  • metricName — название метрики для оценки модели (в нашем случае для оценки используется среднеквадратичная ошибка (Root Mean Squared Error, RMSE)).

Следующий код на движке pyspark отвечает за формирование оценки модели [2]:

evaluator = RegressionEvaluator(
labelCol="creditability", predictionCol="prediction", metricName="rmse")
rmse = evaluator.evaluate(predictions)
print("Root Mean Squared Error (RMSE) on test data = %g" % rmse)
Spark, Big Data, apache spark курсы, курсы по apache spark, обучение spark sql, обучение spark streaming, курсы администрирования spark, hadoop spark, обучение apache spark, spark streaming это, курсы по spark, курс kafka spark
Результат оценки модели

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

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

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

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

Источники

  1. https://ru.wikipedia.org/wiki/Random_forest
  2. https://spark.apache.org/docs/latest/ml-classification-regression.html#linear-support-vector-machine

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

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