推荐算法之NMF算法

推荐算法之NMF算法在例如Netflix或MovieLens这样的推荐系统中,有用户和电影两个集合。给出每个用户对部分电影的打分,希望预测该用户对其他没看过电影的打分值,这样可以根据打分值为其做出推荐。NMF(non-negativematrixfactorization)的基本思想可以简单描述为:对于任意给定的一个非负矩阵A,NMF算法能够寻找到一个非负矩阵U和一个非负矩阵V,将一个非负的矩阵分解为左右…

大家好,又见面了,我是你们的朋友全栈君。

在例如Netflix或MovieLens这样的推荐系统中,有用户和电影两个集合。给出每个用户对部分电影的打分,希望预测该用户对其他没看过电影的打分值,这样可以根据打分值为其做出推荐。

推荐算法之NMF算法

NMF(non-negative matrix factorization)的基本思想可以简单描述为:对于任意给定的一个非负矩阵A,NMF算法能够寻找到一个非负矩阵U和一个非负矩阵V,将一个非负的矩阵分解为左右两个非负矩阵的乘积,将矩阵的维数进行降低,对大量的数据进行压缩。NMF属于一个无监督学习的算法,其中限制条件就是W和H中的所有元素都要大于0。

推荐算法之NMF算法

由于分解前后的矩阵中仅包含非负的元素,因此,原矩阵V中的某一列向量(如上图V中的虚线列向量)可以解释为对左矩阵W中所有列向量(基向量)的加权和,而权重系数为右矩阵V中对应列向量中的元素(权重)。 

推荐算法之NMF算法

为什么分解的矩阵式非负的呢,网上流传一种很有利的解释就是非负为了使数据有效,负数对于数据是无效的。这种方法我个人认为有道理,但论文作者实际的解释是:

  • 非负性会引发稀疏
  • 非负性会使计算过程进入部分分解

总结

以上虽使用NMF实现了推荐算法,但是根据Netfix的CTO所说,NMF他们很少用来做推荐,用得更多的是SVD。对于矩阵分解的推荐算法常用的有SVD、ALS、NMF。对于那种更好和对于文本推荐系统来说很重要的一点是搞清楚各种方法的内在含义。

好啦,简单来说一下SVD、ALS、NMF三种算法在实际工程应用中的区别。

  • 对于一些明确的数据使用SVD(例如用户对item 的评分)
  • 对于隐含的数据使用ALS(例如 purchase history购买历史,watching habits浏览兴趣 and browsing activity活跃记录等)
  • NMF用于聚类,对聚类的结果进行特征提取。在上面的实践当中就是使用了聚类的方式对不同的用户和物品进行特征提取,刚好特征可以看成是推荐间的相似度,所以可以用来作为推荐算法。但是并不推荐这样做,因为对比起SVD来说,NMF的精确率和召回率并不显著。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149867.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sql系列(基础)-第二章 限制和排序数据

    sql系列(基础)-第二章 限制和排序数据

    2022年1月2日
    38
  • 小鹤双拼尝试

    小鹤双拼尝试26个英文字母除了a,o,e,i,u,v(代表ü,下同)之外都被用作声母,而除了这20个声母之外还有3个声母分别为双字母的zh,ch,sh,汉字中绝大部分字的读音都是声母加韵母组成的。而韵母中,除了上述提到的六个字母,其余韵母都是由两个或三个字母组成。小鹤双拼编码方案:第一个字母表示声母,第二字母表示韵母,没有声母时用零声母代替单字母声母韵母键位不变,就意味着26个字母都是和它本来的音相同,比较特殊的就是v,i,u三个(它们也可以拼成yu,yi,wu),当他们被第一个按下时,会代表声母zh,ch,sh

    2022年6月29日
    17
  • winform控件之BindingNavigator

    winform控件之BindingNavigatorBindingNavigator控件可以为我们绑定的数据提供一个导航的功能,默认的工具是这个样子的,我们可以根据需求再增加功能1.BindingNavigator用法1.1界面布局界面布局如下一个BindingNavigator名为bindingNavigator1一个DataGridView名为DataGridView1两个TextBox分别为TextBox1和…

    2022年7月12日
    16
  • Textmate调试Python「建议收藏」

    Textmate调试Python「建议收藏」转http://phaibin.72pines.com/2011/08/11/textmate%E8%B0%83%E8%AF%95python/[code="java"]Textmate调试Python要让Textmate调试Python的时候在光标停在编辑器里面,类似XCode的效果,需要安装PdbTextMateSupport。方法是:sudoeasy_installP…

    2022年7月12日
    27
  • PMM

    PMM

    2021年5月28日
    136
  • 【机器学习】彻底理解神经网络中的反向传播算法(BP)

    【机器学习】彻底理解神经网络中的反向传播算法(BP)目录1,前言2,例程Step1前向传播Step2反向传播3,代码实现1,前言最近在看机器学习神经网络方面的知识,也看了很多关于反向传播算法原理的介绍,有一篇文章写的很好,在这里记录下,并且加入自己的理解。反向传播法其实是神经网络的基础了,但是很多人在学的时候总是会遇到一些问题,或者看到大篇的公式觉得好像很难就退缩了,其实不难,就是一个链式求导法则反复用。如果不想…

    2022年5月3日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号