推荐系统 —— LFM隐语义模型

前言

本文是推荐系统系列的第三篇了,主要来讲一下 LFM 算法,与之前一样,注重原理方面,不会在算术上多做纠结,以方便快速理解该算法

什么是 LFM?

一种基于矩阵分解的用来预测用户对物品兴趣度的推荐算法

这里大概只是我自己的理解,其具体定义,还真没找到。。。

LFM 原理

在谈LFM前,我们先来看下这么一种大白话推荐方法:

  • 假设我们知道用户A对于带有 喜剧,动漫标签的电影感兴趣程度分别是 0.8 和 0.9
  • 现在我们有一部电影 《熊出没》,其对应标签 喜剧,动漫 的符合程度分别是 0.85 和 0.95
  • 那么我们就可以推测 用户A 对 《熊出没》的喜欢程度是 R = 0.8 * 0.85 + 0.9 * 0.95 = 1.535
    这种根据 用户 和 物品 之间对应的分类权重来衡量 用户 对 物品 喜欢程度的方式就是 LFM 的原型

上面这种方式推荐方式有个问题就在于,如何给用户打上合适的标签呢?又如何给 物品 分好合适的类呢?我们知道,这种任务是很难的。。。至于为什么难,请自行脑补。。。哈哈,也正是因为分类的困难,所以才有了我们的 LFM 算法,我们完全可以从 用户 对 物品 产生的行为,来实现对 物品 和 用户的 自动分类;

  • 我们收集到的数据,一般都是 用户 对 物品的 打分;

    useritem1item2item3
    A230
    B341
    C035
  • 现在我们假设有 K 个分类,然后就可以让 LFM 帮我们把 用户 和 物品 进行自动分到这 K 个类中

  • 那么怎么分呢?
    我们以 用户A 和 item1 为例,从数据上我们知道 用户A 对 item1 的打分是 2
    假设 用户A 对分类 K_i 的喜欢程度为 p_i
    假设 item1 对分类 K_i的符合程度为 q_i
    那么我们就可以推测 用户A 对 item1 的打分 ps
    ps = \sum_{i=0}^K{p_i}{q_i}
    真实打分 2 和 我们预测的打分 ps 越接近,我们则认为我们的分类越可靠

    ok!上面应该还是很好看懂的。。。我们可以将上面的公式泛化一下就可以得到 用户u 对于 物品w 的打分的预测公式:
    ps_{uw} = \sum_{i=0}^K{p_{ui}}{q_{wi}}
    其中:
    ps_{uw}: 用户u 对于 物品w 的预测打分
    p_{ui}:用户u 喜欢 分类 K_i 的程度
    q_{wi}:物品w 对分类 K_i 的符合程度
    K :分类数目

    这里我们假设 用户u 对于 物品w 的真实打分为 rs_{uw},那么衡量 真实打分 和 预测打分 的差距就可以用他们的 平方和的大小,即可得下面公式
    \sum (ps_{uw} - rs_{uw})^2

    当然为了模型得泛化能力,可能需要再加一些正则化的尾巴。。。为了加快计算,可能还需要将公式做一些向量化处理。。。等等一些机器学习方面通用规则就不一一提了,这里主要还是讲解 LFM 的原理为主。最后就是一个梯度下降法求解的问题了,将上面的公式作为我们的目标函数,通过梯度下降法就可以求出 用户对每个分类的喜好程度 以及 物品对于分类的符合程度,即公式中的 p_{ui}q_{wi},这也就是说,LFM 最后就是 给每个用户 和 物品 都进行了分类,尽管这个分类你并不知道他叫什么。。。。这也正是 隐语义的 含义了。

ok,原理方面就说到这里了,文中公式主要是为了理解而写的,很多地方不是很标准,更不能作为算法的实现来用,如果你想要标准的公式,相信随便搜一搜就可以找到了!

LFM的优劣势

  • 从 LFM 的原型上就知道,该算法具有比较好的理论基础。这种做法很符合我们的思维方式
  • 非常节省空间,比较我们前面讲到的协同过滤算法,在用户 和 物品 数量都很大的情况下,LFM 无疑是可以节省大量空间的。
  • 计算复杂度上略高于 协同过滤,但是还是在一个量级
  • LFM 不适合做实时推荐算法,因为他只能预测 用户对物品的打分,如果单一的LFM推荐,无疑将要多所有物品进行一次打分才能得出哪些物品需要推荐,想当然的我们就知道,这个肯定不是一个短时间能做到的任务,而相对的, 用 LFM 来做推荐系统的精排部分倒是挺合适的。
  • 不具备较好的解释性,虽然看起来是分类了,但是其实这些分类是什么,还是很难说的。不过就我实际来看,其分类很多时候还是具有不错的解释性的。反正你一眼大概也能看出,每个分类的属性,但是确实会有一些很难解释明白

ok,就到这里啦,还是比较简单的一种推荐算法,嗯,应该说,原理比较简单的算法。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本教程为官方授权出品伴随着大数据时代的到来,作为发掘数据规律的重要手段,机器学习已经受到了越来越多的关注。而作为机器学习算法在大数据上的典型应用,推荐系统已成为各行业互联网公司营销体系中不可或缺的一部分,而且已经带来了真实可见的收益。目前,推荐系统和机器学习已经成为各大公司的发力重点,众多知名公司(如亚马逊、netflix、facebook、阿里巴巴、京东、腾讯、新浪、头条等)都在着眼于将蕴含在庞大数据中的宝藏发掘出来,懂机器学习算法的大数据工程师也成为了新时代最紧缺的人才。精心打造出了机器学习与推荐系统课程,将机器学习理论与推荐系统项目实战并重,对机器学习和推荐系统基础知识做了系统的梳理和阐述,并通过电影推荐网站的具体项目进行了实战演练,为有志于增加大数据项目经验、扩展机器学习发展方向的工程师提供更好的学习平台。本课程主要分为两部分,机器学习和推荐系统基础,与电影推荐系统项目实战。第一部分主要是机器学习和推荐系统基础理论的讲解,涉及到各种重要概念和基础算法,并对一些算法用Python做了实现;第二部分以电影网站作为业务应用场景,介绍推荐系统的开发实战。其中包括了如统计推荐、基于LFM的离线推荐、基于模型的实时推荐、基于内容的推荐等多个模块的代码实现,并与各种工具进行整合互接,构成完整的项目应用。通过理论和实际的紧密结合,可以使学员对推荐系统这一大数据应用有充分的认识和理解,在项目实战中对大数据的相关工具和知识做系统的回顾,并且可以掌握基本算法,入门机器学习这一前沿领域,为未来发展提供更多的选择,打开通向算法工程师的大门。谁适合学:1. 有一定的 Java、Scala 基础,希望了解大数据应用方向的编程人员2. 有 Java、Scala 开发经验,了解大数据相关知识,希望增加项目经验的开发人员3. 有较好的数学基础,希望学习机器学习和推荐系统相关算法的求职人员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值