组件名称

  预测(协同过滤推荐) [版本号:1] [更新时间:2018-05-08]

简介

  协同过滤推荐算法是较为著名的推荐算法。主要的功能是预测和推荐。算法通过对用户历史行为数据的挖掘发现用户的偏好,基于不同的偏好对用户进行群组划分并推荐品味相似的商品。协同过滤提出了一种支持不完整评分矩阵的矩阵分解方法,不用对评分矩阵进行估值填充,有很好的推荐精度。 作为一种支持不完整评分矩阵的矩阵分解方法,不用对评分矩阵进行估值填充,有很好的推荐精度。spark中的协同过滤基于ALS矩阵分解的算法。 用户对物品的打分行为可以表示成一个评分矩阵A(mn),表示m个用户对n各物品的打分情况。 [u/vv1v2 u14? u232 u3?4]\begin{bmatrix} u/v&v1 &v2\ u1& 4 & ?\ u2& 3 & 2\ u3& ? & 4 \end{bmatrix} A(i,j)表示用户useri对物品itemj的打分。但是,用户不会对所以物品打分,表中”?”表示用户没有打分的情况,所以这个矩阵A很多元素都是空的,我们称其为“缺失值(missing value)”。 协同过滤提出了一种支持不完整评分矩阵的矩阵分解方法,不用对评分矩阵进行估值填充。ALS 的核心假设是:打分矩阵A是近似低秩的,即一个m∗n的打分矩阵 A 可以用两个小矩阵U(m∗k)和V(n∗k)的乘积来近似:A≈UVT,原式为SVD算法。则评分矩阵A(m∗n)就可以由用户喜好特征矩阵U(m∗k)和商品特征矩阵V(n∗k)的乘积。 可以建立损失函数C= (i,j)ϵRcij(aijuivjT)2+λ(ui2+vj2)))\sum _{(i,j)\epsilon R}c_{ij}(a_{ij}-u_{i}v_{j}^{T})^{2}+\lambda (u_{i}^{2}+v_{j}^{2}))) 针对类似损失函数,优化方法分为两种:交叉最小二乘法(alternative least squares)和随机梯度下降法(stochastic gradient descent)。Spark使用的是交叉最小二乘法(ALS)来最优化损失函数。算法的思想就是:我们先随机生成然后固定它求解,再固定求解,这样交替进行下去,直到取得最优解min(C)。因为每步迭代都会降低误差,并且误差是有下界的,所以 ALS 一定会收敛。但由于问题是非凸的,ALS 并不保证会收敛到全局最优解。但在实际应用中,ALS 对初始点不是很敏感,是否全局最优解造成的影响并不大。 推荐系统依赖不同类型的输入数据,最方便的是高质量的显式反馈数据,它们包含用户对感兴趣商品明确的评价。 隐式反馈类型包括购买历史、浏览历史、搜索模式甚至鼠标动作。例如,购买同一个作者许多书的用户可能喜欢这个作者。 显式反馈: 将每个用户u(包含一个用户-因素向量ui)和每个商品v(包含一个用户-因素向量vj)联系起来。预测通过内积rij=(uT)ivj来实现。其次是参数估计。基于观察到的rating数据直接建模,同时通过一个适当的正则化来避免过拟合。公式: minu,v(i,j)ϵRcij(aijuivjT)2+λ(ui2+vj2)))min_{u,v}\sum _{(i,j)\epsilon R}c_{ij}(a_{ij}-u_{i}v_{j}^{T})^{2}+\lambda (u_{i}^{2}+v_{j}^{2}))) 隐式反馈: 在显式反馈的基础上,加以改动得到隐式反馈模型。形式化由rij变量衡量的信任度的概念。我们引入了一组二元变量pij ,它表示用户u对商品v的偏好。pij的公式如下: pij={1,rijr_{ij}>0} cij=1+αrijr_{ij} 最终待优化公式为 minu,v(i,j)ϵRcij(aijuivjT)2+λ(ui2+vj2)))min_{u,v}\sum _{(i,j)\epsilon R}c_{ij}(a_{ij}-u_{i}v_{j}^{T})^{2}+\lambda (u_{i}^{2}+v_{j}^{2})))

输入和输出

  输入端口个数:2

  输出端口个数:1

参数配置

参数名称 参数说明 参数默认值 是否必填
全量数据表名,表名可以是中文 可选 -
节点输出的全量数据是否保存至数据库;若保存,会增加时间及存储资源开销 可选 No -

字段配置

  

输出节点的字段配置说明

  运行后会生成新字段。输出节点如果需要选择当前节点的字段,需要先运行当前节点,可以采用小数据量运行方式:“从前面节点运行到当前节点”。

results matching ""

    No results matching ""