推荐算法-ALS算法原理及python代码实例

ALS算法原理及python代码实例

http://www.cnblogs.com/luchen927/archive/2012/02/01/2325360.html
上面的网页概括了ALS算法出现之前的协同过滤算法的概况。
协同过滤简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,回应不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要。ALS算法是2008年以来,用的比较多的协同过滤算法。它已经集成到Spark的Mllib库中,使用起来比较方便。

从协同过滤的分类来说,ALS算法属于User-Item CF,也叫做混合CF。它同时考虑了User和Item两个方面。

用户和商品的关系,可以抽象为如下的三元组:

推荐算法-ALS算法原理及python代码实例
针对这样的特点,我们可以假设用户和商品之间存在若干关联维度(比如用户年龄、性别、受教育程度和商品的外观、价格等),我们只需要将R矩阵投射到这些维度上即可。
推荐算法-ALS算法原理及python代码实例
使得:
推荐算法-ALS算法原理及python代码实例
幸运的是,我们并不需要显式的定义这些关联维度,而只需要假定它们存在即可,因此这里的关联维度又被称为Latent factor。k的典型取值一般是20~200。
为了使低秩矩阵X和Y尽可能地逼近R,需要最小化平方误差损失函数。
推荐算法-ALS算法原理及python代码实例
推荐算法-ALS算法原理及python代码实例
优化上式,得到训练结果矩阵。预测时,将User和Item代入,即可得到相应的评分预测值。
推荐算法-ALS算法原理及python代码实例
ALS算法的缺点在于:
1.它是一个离线算法。
2.无法准确评估新加入的用户或商品。这个问题也被称为Cold Start问题。

Python实例:
对Movelens进行电影推荐:


from pyspark import SparkContext
from pyspark.mllib.recommendation import ALS
"""ALS算法是2008年以来,用的比较多的协同过滤算法。它已经集成到Spark的Mllib库中,使用起来比较方便。"""

import os
os.environ['JAVA_HOME'] = 'E:/Program/Java'

print("使用Spark-ALS算法")
sc = SparkContext('local', 'MovieRec')
"""Spark功能的主要入口点。
SparkContext表示与Spark集群的连接,可用于在该集群上创建RDD和广播变量。"""

rawUserData = sc.textFile('ratings_small_without_header.csv')
print(rawUserData.count())
print(rawUserData.first())

rawRatings = rawUserData.map(lambda line: line.split(",")[:3])
print(rawRatings.take(5))
training_RDD = rawRatings.map(lambda x: (x[0], x[1], x[2]))

rank = 3
model = ALS.train(training_RDD, rank, seed=5, iterations=30, lambda_=0.1)

print(model.recommendProducts(100, 5))
print(model.recommendUsers(67504,2))
print('Over!')

数据集:ratings_small_without_header.csv
链接:https://pan.baidu.com/s/1x73YtQHjY5HUk3K1M6_8MQ
提取码:tuuu

Original: https://blog.csdn.net/qq_39777550/article/details/108014682
Author: LS_learner
Title: 推荐算法-ALS算法原理及python代码实例

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/8048/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总