大数据平台下Spark进行产品推荐

本文采用ALS算法进行产品推荐。对于运营商来说,加上第三方增值业务,产品数量多至上千,那么如何了解消费者的倾向,对消费者进行产品推荐呢?针对运营商可以有较为详细的客户信息,可以有很多种方法。本文介绍的方法是基于消费者的购买行为进行推荐,采用电商平台采用较多的ALS算法。

ALS算法的原理很多文档都有讲过,就不啰嗦了,大致就是user-item评分均值会是一个维度极高的稀疏矩阵,ALS就是将user-item矩阵分解为2个低维矩阵的乘积,达到降维的方法,再使用这两个低维矩阵的乘积,对用户评分进行预测。

Spark的mllib类库集成了ALS算法

原始数据需要整理成这样:

userid     productid      rating

001             101             1.2

001             102             1.9

002             102              2.0

......

好了,直接上代码

from pyspark.mllib.recommendation import ALS
traindata=sc.textFile("\home\Alex\data.txt")
traindata=traindata.map(lambda line:line.split())
traindata.take(3)
traindata=traindata.map(lambda x:(x[0],x[1],x[2]))
#查看整个文档有多少条数据
traindata.count()
#查看用户数
numUsers=traindata.map(lambda x:x[0]).distinct().count()
numUsers
#查看有多少产品数
numProducts=traindata.map(lambda x:x[1]).distinct().count()
numProducts
#进行模型训练
model=ALS.train(traindata,10,10,0.01)
#根据user推荐产品
model.recommendProducts(user=001,num=5)
#预测user的product评分
model.predict(user=001,product=101)

         

你可能感兴趣的:(大数据平台下Spark进行产品推荐)