PySpark tutorial学習ノート5——MLlib及び協同フィルタリングにおける応用

2802 ワード

Apache SparkはMLlibという機械学習APIを提供している.PySparkもPythonでこのマシンを使ってAPIを学びます.以下に説明するように、異なるタイプのアルゴリズムをサポートします.
mllib.classification - spark.mllibパケットは,二分類,多分類,回帰解析の種々の方法をサポートする.分類の中で最も流行しているアルゴリズム、例えばランダム森林、素朴ベイズ、決定木などが含まれています.
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 − The command will be as follows −

$SPARK_HOME/bin/spark-submit recommend.py
Output − The output of the above command will be −

Mean Squared Error = 1.20536041839e-05

Spark MLlibでの協同フィルタリング:http://blog.javachen.com/2015/04/17/spark-mllib-collaborative-filtering.html