spark中协同过滤算法分析

本文深入探讨Spark MLlib中的协同过滤算法——交替最小二乘法(ALS)。该算法用于处理稀疏的用户-商品评分矩阵,通过低秩矩阵分解预测用户评分并构建推荐系统。ALS通过交替优化变量寻找局部最优解,源码中涉及MatrixFactorizationModel等模型。参考多个资料,适合理解与实践。
摘要由CSDN通过智能技术生成

spark的MLlib是其机器学习算法库。

其中协同过滤算法叫做ALS,交替最小二乘法。

下面对算法思路和执行代码进行分析。


算法思想:

1、对于用户、商品、评分构成的打分矩阵。一般来说是稀疏的矩阵,因为用户没有对所有商品打分,很多地方评分是未知数。

2、我们的目的是要将这个打分矩阵填满,从而预测用户对某个商品的打分,继而进行推荐。

3、计算这个原始矩阵的计算量是非常巨大的,而且没有必要。我们希望计算出其低秩矩阵,从而宏观上勾勒出用户和商品之间的关联关系,即相似度。

通过这个相似度,构成推荐系统的基本依据。

4、计算时,采用最小二乘法。

由于要优化的公式变量很多,我们采取固定其一,优化其他变量的方式寻求最优值的方式求解。所以较交替最小二乘法。

计算的最终结束标志是:公式中差的平方和小于预先设定的值,则认为找到最优解了。可以看出,这个最优解不一定是全局最优的。

java源码如下:

package sparkTest;

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES O
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值