当前位置:   article > 正文

机器学习 | 奇异值分解SVD与实现_机器学习 svd分解的实现

机器学习 svd分解的实现


前言

特征分解——>奇异值分解(SVD)——>隐语义模型(LFM),三个算法在前者的基础上推导而成,按顺序先后出现。三者均用于矩阵降维。其中:

SVD奇异值分解为矩阵分解的一种方法,可用于推荐系统中,将评分矩阵补全、降维。
在这里插入图片描述

一、回顾特征分解

在了解SVD前,有必要先了解什么是特征分解,如何求得矩阵的特征值和特征向量?

Q1: 矩阵分解的作用?

  • 将矩阵降维,将大型矩阵分解为简单矩阵乘积的形式,减少计算量。
  • 在NLP和推荐系统中,会有非常稀疏的矩阵(如用户打分矩阵),把稀疏矩阵分解成高阶特征的线性组合,便于分类和预测。

Q2: 什么样的矩阵可以进行特征分解(前提)?

  • 待降维的矩阵是方阵,即行与列数量相等的矩阵。
  • ( A − λ E ) x = 0 (A-\lambda E)x=0 (AλE)x=0有非零解,即 ∣ A − λ E ∣ = 0 |A-\lambda E|=0 AλE=0

特征分解的原理

A = U ∑ U − 1 A=U∑U^ {-1} A=UU1

其中U是n个特征向量组成的n × n维方阵,∑是这n个特征值为主对角线的n × n维方阵。

特征值与特征向量的求解

为了方便理解,附上教科书的截图。。

在这里插入图片描述

二、奇异值分解(SVD)

Q1: 既然有了矩阵分解,为什么进行SVD分解?

  • 若矩阵是方阵,可以采用上一节提到的特征分解。
  • 若矩阵不是方阵,即行数和列数不相等,该如何分解,最常用的方法即奇异值分解(SVD)

    奇异值分解与矩阵分解类似,都是将目标矩阵A,转化为三个矩阵相乘,如下:
在这里插入图片描述
    其中,A为目标矩阵,例如user对item的打分;P为左奇异矩阵,mm维,为User矩阵;Q为右奇异矩阵,nn维,为item矩阵;Λ为对角矩阵,对角线上的非零元素为特征值λ1, λ2, … , λk。

    这种情况中,我们认为矩阵是低秩的,即矩阵中行列线性无关的程度,反映在奇异值矩阵中,其Λ矩阵衰减的特别快,研究表明,前10%甚至1%的奇异值就能占据全部奇异值的99%以上的比例

    也就是说,我们可以用最大的k个奇异值对应的左右向量来近似描述矩阵。

    k的选取可根据交叉验证,RMSE, MAE来不断去择优,初始可根据ceiling(m*n, 1/4)来选取
在这里插入图片描述
    例如,推荐系统中,用户与物品的打分矩阵R则可以分解为如下两个矩阵:

R m x n = P m x k Q k x n T R_{mxn} = P_{m x k}Q^T_{k x n} Rmxn=PmxkQkxnT

三、推荐系统中SVD的特殊性

    至此,我们了解了如何对一个矩阵进行奇异值分解,但事情没有那么简单,对于推荐系统中的矩阵是一个稀疏矩阵,稀疏矩阵不存在特征值,导致我们不可能直接对原User-Item矩阵用数学方法进行矩阵分解!
    因此,我们需要使用机器学习的方法,用已有数据训练,更新 U m x k U_{mxk} Umxk V k x n V_{kxn} Vkxn的矩阵向量,根据损失函数不断学习,不断更新稀疏矩阵中的预测值

    我们把评分矩阵(Rating Matrix)计作V, V ∈ R n × m V∈R^{n×m} VRn×m,那么 V V V的每一行 V i V_i Vi代表一个人的所有评分,每一列 V j V_j Vj代表某一部电影所有人的评分, V i j V_{ij} Vij代表某个人 i i i对某部电影 j j j的评分。对应电影推荐来说,V必定是稀疏的,因为电影数量(列的数目)是巨大的,V中必定有很多很多项为null。

    我们接下来看这两个矩阵P(Users Features Matrix )和Q(Movie Features Matrix)。P为用户对特征的偏好程度矩阵,Q为电影对特征的拥有程度矩阵。U∈Rf×n的每一行表示用户,每一列表示一个特征,它们的值表示用户与某一特征的相关性,值越大,表明特征越明显。矩阵M∈Rf×m,的每一行表示电影,每一列表示电影与特征的关联。

R m x n = P m x k Q k x n T R_{mxn} = P_{m x k}Q^T_{k x n} Rmxn=PmxkQkxnT
在这里插入图片描述
注:上图中的数值仅作为参考,读者无需考虑准确性

上图中k取2,即隐含因子为2,即把用户和物品向量降维成k=2的向量,也代表了U与V矩阵中隐含成分包括多少个维度。如笔者猜测本案例中k分别代表“是否搞笑,是否恐怖”两个维度, 实际工程中是一个超参数,人为给定。

那么假如,用户Yingbo没有对“回魂夜”进行打分,那么可根据U矩阵得知用户Yingbo与k=是否恐怖的喜好程度,再结合V矩阵得知“回魂夜”与k=是否恐怖的相似程度,预测用户Yingbo与回魂夜的打分!

这样通过P的第u行乘以Q的第i列即可预测出原矩阵R中的缺失值。
在这里插入图片描述
则真实值与预测值的误差为:
在这里插入图片描述
继而可以计算出总的误差平方和:
在这里插入图片描述
只要通过训练把损失函数SSE降到最小那么P、Q就能最好地拟合R了。

实际上,我们给一部电影评分时,除了考虑电影是否合自己口味外,还会受到自己是否是一个严格的评分者和这部电影已有的评分状况影响。
在这里插入图片描述
μ μ μ : 训练集中所有记录的评分的全局平均数。在不同网站中,因为网站定位和销售的物品不同,网站的整体评分分布也会显示出一些差异。比如有些网站中的用户就是喜欢打高分,而另一些网站的用户就是喜欢打低分。而全局平均数可以表示网站本身对用户评分的影响。

b u b_u bu : 用户偏置(user bias)项。这一项表示了用户的评分习惯中和物品没有关系的那种因素。比如有些用户就是比较苛刻,对什么东西要求都很高,那么他的评分就会偏低,而有些用户比较宽容,对什么东西都觉得不错,那么他的评分就会偏高。

b i b_i bi: 物品偏置(item bias)项。这一项表示了物品接受的评分中和用户没有什么关系的因素。比如有些物品本身质量就很高,因此获得的评分相对都比较高,而有些物品本身质量很差,因此获得的评分相对都会比较低。

有人就说了,这些偏置参数怎么定呢?难道我要预先把所有的数据集计算一遍?❌

才不需要呢,这些偏置参数也是通过学习而来,所以现在我们需要学习的矩阵参数变成了5个。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/713881
推荐阅读
相关标签