矩阵分解

矩阵分解

前记

矩阵分解在推荐系统里面应该说是最经典、最有代表性的算法了。除了基础 举证分解方法,后面衍生出了各种关于分解的方法,分解机、张量分解等等,我们来看看。

SVD

原始的SVD又名奇异值分解,如果是用户评分矩阵,首先需要对缺失值进行简单的不全,比如用全局平均,然后用SVD进行分解R=U^TSV其中,R为原始的评分矩阵,维度是mn,U和V分贝是一个km和kn的正交矩阵,S为kk的对角矩阵,对角线上的每一个元素都是矩阵的奇异值。这种纯数学的方法计算量特别大,实际应用中的数据根本处理不了。Simon Funk的Funk-SVD方法解决了这个问题,思想很简单:直接通过训练集的观察值利用最小化RMSE学习P、Q矩阵,这就是机器学习的思想了。R=P^TQ

SVD++

SVD矩阵分解非常成功,有很多的迭代的方法,最有名的就是SVD++了。提SVD++之前,我们先看一个简单的BiasSVD:r_{ui} = \mu + b_u + b_i + P_u^T * q_i
- \mu 为训练集中所有记录的平均全局数
- b_u 为用户的偏置项,表示用户的评分偏好
- b_i 为物品的偏置项,表示物品的本身质量

如果将用户历史行为对用户评分预测影响考虑进来就是SVD++算法:

r_{ui} = \mu + b_u + b_i + q_i^T * (p_u + \frac{1}{\sqrt{|N(u)|}}\sum_{j \in N(u)}y_j)

SVD++的核心思想是把基于领域的itemCF算法用矩阵分解的方法实现,转换的方法是这样的:

  • itemCF算法其实可以转变成 r_{ui} = \frac{1}{\sqrt{|N(u)|}} \sum_{j\in N(u)}w_{ij}
  • w_{ij}不再看成是物品的相似度矩阵,而是一个和P、Q一样的参数。对w矩阵也进行分解,把参数个数降低到2nF个, r_{ui} = \frac{1}{\sqrt{|N(u)|}} \sum_{j\in N(u)}x_i^T*y_j = \frac{1}{\sqrt{|N(u)|}} x_i^T* \sum_{j\in N(u)}y_j 其中x_i 和 y_j是两个F维的向量
  • 为了不增加太多参数导致过拟合,令x=q,这样就能得到上面的SVD++的模型了。

时间信息也是非常重要的,所有SVD++模型融合时间效应往往效果更好
r_{ui} = \mu + b_u(t) + b_i(t) + q_i^T * (p_u(t) + \frac{1}{\sqrt{|N(u)|}}\sum_{j\in N(u)}y_j)
具体的优化和迭代方法就不赘述了。

隐式反馈矩阵分解

spark的隐式反馈方法解析见https://www.jianshu.com/p/7d59612f9f49,核心思想是将观察到的隐式反馈值进行预测值和置信度的映射,重新改写了优化目标。

p_{ui} = \begin{cases}1 \quad r_{ui} > 0 \\ 0 \quad r_{ui} = 0 \end{cases}
c_{ui} = 1 + \alpha log(1 + r_{ui} / \epsilon)

FM

FM是目前非常经典的广义分解算法,Factorization Machines with libFM

FM为什么是广义分解算法,因为如果把user和item分别进行one-hot编码feed给FM,MF就变成了一个biased的FM模型,通过合适的特征变换方式,FM可以模拟二阶多项式核的SVM模型、MF模型、SVD++模型等。对于FM而言,我们可以加任意多的特征,比如user的历史购买平均值,item的历史购买平均值等,但是MF只能局限在两类特征。SVD++与MF类似,在特征的扩展性上都不如FM,在此不再赘述。

后面的FFM是FM的一个演进,通过引入field的概念,FFM把相同性质的特征归于同一个field,使得每两组特征交叉的隐向量都是独立的,可以取得更好的组合效果,但是使得计算复杂度无法通过优化变成线性时间复杂度。一般情况都是比FM效果更好,事实上,FM 可以看做只有一个场的 FFM。

基于特征的矩阵分解

svdFeature也是一种通用的分解模型,有能给把特征信息加入到矩阵分解中,比如时序信息,领域信息、层次信息等,具体分析见Feature-Based Matrix Factorization

张量分解

张量就是矩阵的推广,矩阵是二维关系建模,张量是N维关系建模。这个计算量太复杂了

开源工具

QMF:Quara出的单机多线程的加权ALS矩阵分解和BPR矩阵分解
lightfm:单机多线程的SVD矩阵分解、SVD++矩阵分解、BPR矩阵分解
spark:基于ALS的矩阵分解
LibFM : FM的单机多线程版本
SVD-Feature:基于特征的矩阵分解单机多线程版本
xlearn:FM和FFM的单机多线程版本
libffm:FFM的单机多线程版本

参考资料

《推荐系统实战》

https://tracholar.github.io/machine-learning/2017/03/10/factorization-machine.html
https://tech.meituan.com/deep_understanding_of_ffm_principles_and_practices.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 前面的内容是关于近邻推荐的相关知识,来看下另外一种推荐方法:矩阵分解。 为什么需要矩阵分解 协同过滤可以解决我们关...
    道简术心阅读 14,974评论 0 11
  • 1.矩阵分解做协同过滤是广泛使用的方法 2.遇到问题: 在推荐系统中,常常遇到的问题是很多用户和物品组成的数据集,...
    dreamsfuture阅读 2,318评论 0 2
  • 苗天华脸色难看地走出九班,我拉了拉他说算了吧,人家根本就不是真心的想收我们。 苗天华气得咬牙,说一群狗眼看人低的家...
    浮生万梦星耀烛天阅读 236评论 0 1
  • 看了阮一峰的Blog(很久之前的),突然就发现这么一个非常常见的问题,常常被我视而不见。而且我相信,有很大一部分同...
    xiao_A阅读 397评论 0 0
  • 这是一个贫穷的国家,却又是物质资源极大丰富的国家,香蕉,木薯,土豆都成为我们饭桌上的主食,像这样一个木薯最多三块钱...
    bzjboy阅读 295评论 0 6