网站建设 客户定位,学人工智能后悔死了,网络营销比较成功的企业,建站公司前景《Spark快速大数据分析》11.5.4 协同过滤与推荐协同过滤是一种根据用户对各种产品的交互与评分来推荐新产品的推荐系统技术。协同过滤引入的地方就在于它只需要输入一系列用户/产品的交互记录#xff1b;无论是显式的交互(例如在购物网站上进行评分)还是隐式的(例如用户访问了…《Spark快速大数据分析》 11.5.4 协同过滤与推荐 协同过滤是一种根据用户对各种产品的交互与评分来推荐新产品的推荐系统技术。 协同过滤引入的地方就在于它只需要输入一系列用户/产品的交互记录 无论是显式的交互(例如在购物网站上进行评分)还是隐式的(例如用户访问了一个 产品的页面但是没有对产品评分)交互皆可。仅仅根据这些交互协同过滤算法就能 够知道哪些产品之间比较相似(因为相同的用户与它们发生了交互)以及哪些用户之间 比较相似然后就可以做出新的推荐。 尽管MLlib的API使用了用户和产品概念但是也可以将协同过滤用于其他应用场景中 比如在社交网络中推荐用户为文章推荐要添加的标签为电台推荐歌曲等。 交替最小二乘法 MLlib中包含交替最小二乘法(ALS)的一个实现这是一个协同过滤的常用算法可以很好的 扩展到集群上。它位于mllib.recommendation.ALS类中。 ALS会为每个用户和产品都设一个特征向量这样用户向量与产品向量的点积就接近于它们的 得分。它接收下面所列几个参数 rank 使用的特征向量的大小更大的特征向量会产生更好的模型但是也需要话费更大的计算代价默认10 iterations 要执行的迭代次数默认10 lamda 正则化参数默认0.01 alpha 用来在ALS中计算置信度的常量默认1.0 numUserBlocks, numProductBlocks 切分用户和产品数据的块的数目用来控制并行度可以选择传递-1来上MLlib自动决定. 要使用ALS算法需要有一个由mllib.recommendation.Rating对象组成的RDD其中每个包含 一个用户id一个产品id和一个评分。实现过程中的一个挑战是每个id都需要是一个32位的整数值。 如果id是字符串或者更大的数字那么可以直接在ALS中使用id的哈希值 即使有两个用户或者产品映射到同一个Id上总体结果依然会不错。还有一种办法是broadcast()一张 从产品id到正兴致的表来付给每个产品独特的id。 ALS返回一个MatrixFactorizationModel对象来表示结果可以调用predict()来对一个由(UserId,productId)对 组成的RDD进行预测评分。也可以对使用model.recommendProducts(userId,numProducts)来为一个 给定用户找到最值得推荐的前numProduct个产品。注意和MLlib中的其他模型不同MatrixFactorizationModel 对象很大为每个用户和产品都存储了一个向量。这样我们就不能把它存储到磁盘上然后在另一个程序中 读取回来。不过可以把模型中生成的特征向量RDD也就是model.userFeatures和 model.productFeatures保存到分布式文件系统上。 最后ALS有两个变种显示评分(默认情况)和隐式反馈(通过调用ALS.trainImplicit()而非ALS.train()来打开)。 用于显式评分时每个用户对于一个产品的评分需要是一个得分(例如1到5星)而预测出来的评分也是得分。 而用于隐式反馈时每个评分代表的是用户会和给定产品发送交互的置信度(比如随着用户访问一个网页次数 的增加平跟也会提高)预测出来的也是置信度。 转载于:https://www.cnblogs.com/ihongyan/p/5017965.html