美文网首页
推荐系统一(矩阵分解)

推荐系统一(矩阵分解)

作者: _爱碎碎碎碎念 | 来源:发表于2019-07-31 16:40 被阅读0次

    今天的笔记是关于推荐系统,主要是因为看360秋招的JD里面说要了解推荐系统中的矩阵分解、LDA和受限波兹曼机(完全没有听说过)。矩阵分解作为推荐系统的经典,第一部分当然就是它啦。
    参考地址:https://zhuanlan.zhihu.com/p/35262187

    概述

    推荐系统中最主与经典的技术之一是协同过滤技术(Collaborative Filtering):用户如果对过去的某些项目感兴趣,那么他很可能依然对其保持热枕。协同过滤技术根据是否采用了机器学习思想建模可以划分为基于内存的协同过滤和基于模型的协同过滤。其中,基于模型的协同过滤技术主要是矩阵分解(Matrix Factorization),矩阵分解的可扩展性极好并且易于实现。

    推荐系统的场景和矩阵分解的原理

    对于推荐系统来说,存在两大推荐场景,评分预测(Rating Prediction)和Top-N推荐(Item Recommendation,Item Ranking)。评分预测场景主要用于预测电影评分、书籍评分等,矩阵分解技术主要就应用于这个常见。Top-N推荐场景主要用于购物网站或者一般拿不到显示评分信息的网站,即通过用户的隐式反馈信息来给用户推荐一个可能感兴趣的列表以供其参考。其中该场景为排序任务,因此需要排序模型对其建模。
    其中,推荐系统的评分预测场景可看做是一个矩阵补全的游戏,矩阵补全是推荐系统的任务,矩阵分解是其达到目的的手段(如下图所示,补全?内容)。因此,矩阵分解是为了更好的完成矩阵补全任务(欲其补全,先其分解之)。之所以可以利用矩阵分解来完成矩阵补全的操作,那是因为基于这样的假设:假设UI矩阵是低秩的,即在大千世界中,总会存在相似的人或物,即物以类聚,人以群分,然后我们可以利用两个小矩阵相乘来还原它。值得注意的是,这个矩阵是非常稀疏的(Sparse),稀疏度一般能达到90%以上,因此如何根据极少的观测数据来较准确的预测未观测数据一直以来都是推荐系统领域的关键问题。

    矩阵分解.jpg

    奇异值分解(singular value decomposition,SVD)

    奇异值分解是最简单的矩阵分解形式,变换原理可以联想线性代数里面出现的AX=λX,其中X是A的特征向量,λ是A的特征值。经过一系列的推理化简矩阵A就可以用两组正交基和一个对角矩阵表示。简而言之,SVD就是将一个复杂的矩阵用三个简单矩阵相乘表示。

    SVD用于推荐系统

    数据集中行代表用户user,列代表物品item,其中的值代表用户对物品的打分。基于SVD的优势在于:用户的评分数据是稀疏矩阵,可以用SVD将原始数据映射到低维空间中,然后计算物品item之间的相似度,可以节省计算资源。
    整体思路:先找到用户没有评分的物品,然后再经过SVD“压缩”后的低维空间中,计算未评分物品与其他物品的相似性,得到一个预测打分,再对这些物品的评分从高到低进行排序,返回前N个物品推荐给用户。
    具体代码如下,主要分为5部分:

    1. 加载测试数据集;
    2. 定义三种计算相似度的方法;
    3. 通过计算奇异值平方和的百分比来确定将数据降到多少维才合适,返回需要降到的维度;
    4. 在已经降维的数据中,基于SVD对用户未打分的物品进行评分预测,返回未打分物品的预测评分值;
    5. 产生前N个评分值高的物品,返回物品编号以及预测评分值。

    SVD用于推荐系统的优势在于:用户的评分数据是稀疏矩阵,可以用SVD将数据映射到低维空间,然后计算低维空间中的item之间的相似度,对用户未评分的item进行评分预测,最后将预测评分高的item推荐给用户。

    相关文章

      网友评论

          本文标题:推荐系统一(矩阵分解)

          本文链接:https://www.haomeiwen.com/subject/ryptdctx.html