zoukankan      html  css  js  c++  java
  • 图计算框架解决矩阵分解

      1.矩阵分解是推荐系统常用的手段,经常用来做用户偏好预测.在当下的推荐系统中,我们得到用户对于物品的评分矩阵往往是非常稀疏的,一个有m个用户,n个商品的网站,它所收集到的m*n用户评分矩阵R可能只有不到万分之一的数据非零.矩阵分解算法常用来构造出多个矩阵, 用这些矩阵相乘的结果R’来拟合原来的评分矩阵R,目标是使得到的矩阵R’在R的非零元素那些位置上的值尽量接近R中的元素,同时对于R中非零值进行补全.我们定义R和R’之间的距离,把它作为优化的目标,那么矩阵分解就变成了最优化问题,而这类最优化问题常用梯度下降的方法来求出一个局部最优解。最近我们就对于这个问题进行了一下预研,发现用分布式图计算框架来解决这类问题比较方便流畅,尤其是在矩阵非常稀疏的时候..

      2.我们希望任何一个p_u, q_i的值都不能过大,这样容易出现过拟合的现象,所以我们给(1)加上一个正则化项,于是(1)式变为_2

    其中_2_1分别是p_u,q_i 的二范数,之所以选择二范数是因为我们认为用户偏好,物品特性这些维度上的分值分布是符合正态分布的,这种情况下常使用二范数,即向量所有元素的平方和.(对于L0,L1,L2的深入探讨详见参考资料1).我们的目标就是找到矩阵P和矩阵Q,使得(2)的值最小.因为(2)是左边是个连续函数,所以极值出现在梯度为0的时候,所以我们可以通过求梯度的方法得到使得L最小的Q和P。

  • 相关阅读:
    数据结构C语言实现----折半查找
    数据结构C语言实现----顺序查找
    数据结构C语言实现----图
    数据结构C语言实现----树
    数据结构C语言实现----循环队列
    数据结构C语言实现----销毁一个队列
    数据结构C语言实现----出队伍操作
    数据结构C语言实现----入队列操作
    数据结构C语言实现----创建一个队列
    数据结构C语言实现----栈的实例
  • 原文地址:https://www.cnblogs.com/hxsyl/p/4885484.html
Copyright © 2011-2022 走看看