美文网首页
PySpark: ALS推荐电影

PySpark: ALS推荐电影

作者: 铭小狮子酱 | 来源:发表于2020-04-25 11:59 被阅读0次

数据集

movieLens

创建spark session

# create the session
conf = SparkConf().set("spark.ui.port", "4050")

# create the context
sc = pyspark.SparkContext(conf=conf)
spark = SparkSession.builder.getOrCreate()

训练集和测试集

training = spark.read.option("sep", "\t").csv("MovieLens.training", header=False, schema=schema_ratings)
test = spark.read.option("sep", "\t").csv("MovieLens.test", header=False, schema=schema_ratings)
items = spark.read.option("sep", "|").csv("MovieLens.item", header=False, schema=schema_items)

training

training.printSchema()
root
 |-- user_id: integer (nullable = true)
 |-- item_id: integer (nullable = true)
 |-- rating: integer (nullable = true)
 |-- timestamp: integer (nullable = true)

itemsid和对应的电影名:

+-------+--------------------+
|item_id|               movie|
+-------+--------------------+
|      1|    Toy Story (1995)|
|      2|    GoldenEye (1995)|
|      3|   Four Rooms (1995)|
|      4|   Get Shorty (1995)|
|      5|      Copycat (1995)|
|      6|Shanghai Triad (Y...|
|      7|Twelve Monkeys (1...|
|      8|         Babe (1995)|
|      9|Dead Man Walking ...|
|     10|  Richard III (1995)|
|     11|Seven (Se7en) (1995)|
|     12|Usual Suspects, T...|
|     13|Mighty Aphrodite ...|
|     14|  Postino, Il (1994)|
|     15|Mr. Holland's Opu...|
|     16|French Twist (Gaz...|
|     17|From Dusk Till Da...|
|     18|White Balloon, Th...|
|     19|Antonia's Line (1...|
|     20|Angels and Insect...|
+-------+--------------------+

使用ALS算法进行训练

from pyspark.ml.recommendation import ALS
als = ALS(rank=10, maxIter=10, regParam=0.1, userCol='user_id', itemCol='item_id', coldStartStrategy='drop')
models = als.fit(training)

使用RegressionEvaluator进行评估

from pyspark.ml.evaluation import RegressionEvaluator
predictions = models.transform(test)
evaluator = RegressionEvaluator(metricName='rmse', labelCol='rating', predictionCol='prediction')
rmse = evaluator.evaluate(predictions)

top-k推荐

得到top-k的movid_id和对应的rating

top1 = models.recommendForAllUsers(1)

筛选出movie_id

recommend_item = top1.withColumn('movie_id', top1.recommendations.item_id[0])

得到被推荐最多次的电影id

recommend_most = recommend_item.groupby(
    'movie_id'
    ).agg(
        count('*').alias('counts')
    ).sort(
        desc('counts')
    )

通过和items进行join得到电影名

recommend_movies = recommend_most.join(
    items,
    recommend_most.movie_id == items.item_id, 'inner'
  )

相关文章

  • PySpark: ALS推荐电影

    数据集 创建spark session 训练集和测试集 training items是id和对应的电影名: 使用A...

  • 协同过滤-ALS算法

    ALS算法应用场景 ALS属于数据挖掘,可以做推荐系统,比如电影推荐,商品推荐,广告推荐等. 原理就是给各个指标,...

  • pyspark案例系列11-ALS推荐算法

    一. 需求 近期朋友问我spark的推荐算法相关的。 二. 解决方案 因为之前没有接触过推荐算法相关,所以我在sp...

  • pyspark协同过滤算法(ALS)

    ALS:Alternating Least Square,交替最小二乘法,用于推荐系统 算法原理 假设有一矩阵R,...

  • ALS推荐算法

    简要描述: ALS是交替最小二乘(alternating least squares)的简称。在机器学习的范畴中,...

  • pyspark实现FunkSVD电影推荐系统

    参考: http://strayly.iteye.com/blog/2341855按照上面链接会出现ValueEr...

  • 推荐系统9:MF推荐

    1.LFM推荐 思路和ALS算法类似,区别在于,ALS利用坐标下降法,LFM利用梯度下降法假设: 评分矩阵??,?...

  • implicit 库 ALS 算法分析

    implicit 库 ALS 算法分析 ALS 算法 推荐模型基于“隐式反馈数据集的协同过滤”一文中描述的算法,其...

  • 推荐系统 - ALS算法

    ALS简介 ALS算法中文翻译为 交替最小二乘法,其是一种矩阵分解算法;使用两个矩阵拟合用户 - 商品评分矩阵;为...

  • Spark Python API Docs(part one)

    pyspark package subpackages pyspark.sql module pyspark.st...

网友评论

      本文标题:PySpark: ALS推荐电影

      本文链接:https://www.haomeiwen.com/subject/jkwhwhtx.html