矩阵分解

1138-魏同学

发表文章数:75

热门标签

,
首页 » 算法 » 正文

有时候存在两种对象,他们之间会受到某种共同潜在因素的操控,如果找出这些潜在因素,就可以对用户行为进行预测,这是推荐系统常用方法之一。
假设我们现在去调查每个人购买的公仔数目,ABCDE代表5个人,每个人或者每个公仔实际上都是有着傲娇的属性或天然呆的属性
我们可以用vector去描述人和公仔的属性,如果某个人的属性和某个公仔的属性是match的,即他们背后的向量很像(内积值很大),这个人就会偏向于拥有更多这种类型的公仔
矩阵分解
矩阵表达式
但是,我们没有办法直接观察某个人背后这些潜在的属性,也不会有人在意一个肥宅心里想的是什么,我们同样也没有办法直接得到动漫人物背后的属性;我们目前有的,只是动漫人物和人之间的关系,即每个人已购买的公仔数目,我们要通过这个关系去推测出动漫人物与人背后的潜在因素(latent factor)
矩阵分解
我们可以把每个人的属性用vector

r

A

,

r

B

,

r

C

r

D

,

r

E

r^{A},r^{B},r^{C}r^{D},r^{E}

rA,rB,rCrD,rE来表示,而动漫人物的属性则用vector

r

1

,

r

2

,

r

3

r

4

r^{1},r^{2},r^{3}r^{4}

r1,r2,r3r4来表示,购买的公仔数目可以被看成是matrix

X

X

X,对

X

X

X来说,行数为人数,列数为动漫角色的数目
假设:矩阵

X

X

X里的每个元素,都属于人的向量和属于动漫角色的向量的内积。
比如,

r

A

r

1

5

r^{A}/cdot r^{1}/approx 5

rAr15,表示

r

A

r^{A}

rA

r

1

r^{1}

r1的属性比较贴近。
接下来就用下图所示的矩阵相乘的方式来表示这样的关系,其中

K

K

K为latent factor的数量,这是未知的,需要你自己去调整选择
我们要找一组

r

A

r

E

r^{A}/sim r^{E}

rArE

r

1

r

4

r^{1}/sim r^{4}

r1r4,使得右侧两个矩阵相乘的结果与左侧的matrix 越接近越好,可以使用SVD(奇异值分解)的方法求解
矩阵分解
预测
但是由于部分信息丢失,这时就难以用SVD精确描述,但是可以用梯度下降的方法求解,损失函数如下:
矩阵分解
其中

r

i

r^{i}

ri值的是人背后的latent factor,r^{j}指的是动漫角色背后的latent factor,我们要让这两个vector的内积与实际购买该公仔的数量

n

i

j

n_{ij}

nij越接近越好,这个方法的关键之处在于,计算上式时,可以跳过missing的数据,最终通过gradient descent求得

r

i

r^{i}

ri

r

j

r^{j}

rj的值
矩阵分解
假设latent factor的数目等于2,则人的属性

r

i

r^{i}

ri和动漫角色的属性

r

j

r^{j}

rj都是2维的vector,这里实际进行计算后,把属性中较大值标注出来,可以发现:
1、人:A、B属于同一组属性,C、D、E属于同一组属性
2、动漫角色:1、2属于同一组属性,3、4属于同一组属性
3、结合动漫角色,可以分析出动漫角色的第一个维度是天然呆属性,第二个维度是傲娇属性
4、接下来就可以预测未知的值,只需要将人和动漫角色的vector做内积即可
这也是推荐系统的常用方法
矩阵分解
实际上除了人和动漫角色的属性之外,可能还存在其他因素操控购买数量这一数值,因此我们可以将式子更精确地改写为:
矩阵分解
其中

b

A

b_{A}

bA表示A这个人本身有多喜欢买公仔,

b

1

b_{1}

b1则表示这个动漫角色本身有多让人想要购买,这些内容是跟属性vector无关的,此时loss function被改写为:
矩阵分解

未经允许不得转载:作者:1138-魏同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《矩阵分解》 发布于2020-11-13

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录