PySpark - MLlib

Apache Spark предлагает API машинного обучения под названием MLlib. PySpark также имеет этот API машинного обучения на Python. Он поддерживает различные типы алгоритмов, которые упомянуты ниже -

  • mllib.classification - The spark.mllibпакет поддерживает различные методы бинарной классификации, многоклассовой классификации и регрессионного анализа. Некоторые из самых популярных алгоритмов классификации:Random Forest, Naive Bayes, Decision Tree, и т.д.

  • mllib.clustering - Кластеризация - это проблема обучения без учителя, при которой вы стремитесь сгруппировать подмножества сущностей друг с другом на основе некоторого понятия сходства.

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

  • mllib.linalg - Утилиты MLlib для линейной алгебры.

  • mllib.recommendation- Совместная фильтрация обычно используется для рекомендательных систем. Эти методы направлены на заполнение недостающих записей в матрице ассоциации пользовательских элементов.

  • spark.mllib- В настоящее время он поддерживает совместную фильтрацию на основе моделей, при которой пользователи и продукты описываются небольшим набором скрытых факторов, которые можно использовать для прогнозирования отсутствующих записей. spark.mllib использует алгоритм альтернативных наименьших квадратов (ALS) для изучения этих скрытых факторов.

  • mllib.regression- Линейная регрессия относится к семейству алгоритмов регрессии. Цель регрессии - найти взаимосвязи и зависимости между переменными. Интерфейс для работы с моделями линейной регрессии и сводками моделей аналогичен случаю логистической регрессии.

В составе пакета mllib есть и другие алгоритмы, классы и функции. На данный момент давайте разберемся с демонстрацией наpyspark.mllib.

В следующем примере показана совместная фильтрация с использованием алгоритма ALS для построения модели рекомендаций и ее оценки на обучающих данных.

Dataset used - test.data

1,1,5.0
1,2,1.0
1,3,5.0
1,4,1.0
2,1,5.0
2,2,1.0
2,3,5.0
2,4,1.0
3,1,1.0
3,2,5.0
3,3,1.0
3,4,5.0
4,1,1.0
4,2,5.0
4,3,1.0
4,4,5.0
--------------------------------------recommend.py----------------------------------------
from __future__ import print_function
from pyspark import SparkContext
from pyspark.mllib.recommendation import ALS, MatrixFactorizationModel, Rating
if __name__ == "__main__":
   sc = SparkContext(appName="Pspark mllib Example")
   data = sc.textFile("test.data")
   ratings = data.map(lambda l: l.split(','))\
      .map(lambda l: Rating(int(l[0]), int(l[1]), float(l[2])))
   
   # Build the recommendation model using Alternating Least Squares
   rank = 10
   numIterations = 10
   model = ALS.train(ratings, rank, numIterations)
   
   # Evaluate the model on training data
   testdata = ratings.map(lambda p: (p[0], p[1]))
   predictions = model.predictAll(testdata).map(lambda r: ((r[0], r[1]), r[2]))
   ratesAndPreds = ratings.map(lambda r: ((r[0], r[1]), r[2])).join(predictions)
   MSE = ratesAndPreds.map(lambda r: (r[1][0] - r[1][1])**2).mean()
   print("Mean Squared Error = " + str(MSE))
   
   # Save and load model
   model.save(sc, "target/tmp/myCollaborativeFilter")
   sameModel = MatrixFactorizationModel.load(sc, "target/tmp/myCollaborativeFilter")
--------------------------------------recommend.py----------------------------------------

Command - Команда будет следующей -

$SPARK_HOME/bin/spark-submit recommend.py

Output - Результатом вышеуказанной команды будет -

Mean Squared Error = 1.20536041839e-05