1. 介绍

SVD(奇异值分解)多用于数据降维等领域,在推荐算法中多用于评分的矩阵预测。

2. 基本概念

2.1 SVD
2.1.1 原理

对于非对称且非方阵的矩阵不能直接进行特征值分解,且由于AATAA^TAAT与ATAA^TAATA是对称的方阵,所以可以得到以下式子:
AAT=PΛ1PT AA^T=P\Lambda_1 P^T AAT=PΛ1​PT

ATA=QΛ2QT A^TA=Q\Lambda_2 Q^T ATA=QΛ2​QT

且Λ1和Λ2\Lambda_1和\Lambda_2Λ1​和Λ2​为对角矩阵,由此可以得到
A=PΛQT A=P\Lambda Q^T A=PΛQT
其中,P为左奇异矩阵(m * m),Q为右奇异矩阵(n * n)
A=λ1p1q1T+λ2p2q2T+...+λkpkqkT A=\lambda_1p_1q_1^T+\lambda_2p_2q_2^T+...+\lambda_kp_kq_k^T A=λ1​p1​q1T​+λ2​p2​q2T​+...+λk​pk​qkT​
其中λ1\lambda_1λ1​为特征值,p1p_1p1​为左奇异矩阵的特征向量,q1q_1q1​为右奇异矩阵的特征向量

2.1.2应用场景
  1. 可以用于数据的降维,通过SVD,将特征值按从大到小排序,只取前10%的数据就可以还原99%的信息

  2. 在推荐系统中可以转换为用户矩阵和评分矩阵,通过隐含的K,去还原原本的评分矩阵,并不断拟合优化。

2.2 FunkSVD
2.2.1 原理

也就是surprise包中的SVD模型。由于矩阵是稀疏的,所以需先使用均值或其他方法将矩阵缺失值补全,再通过选定的k值,选取前k个较大特征值及对应的特征向量,并根据SVD原理将其还原,再将还原的矩阵与原矩阵求损失,并且只关注原矩阵中有值的位置进行比对,并不断对损失进行优化拟合。
argmin∑(i,j)∈K=(mij−qjTpi)2+λ(∣∣pi∣∣22+∣∣qj∣∣22) argmin\sum_{(i,j)\in K}=(m_{ij}-q_j^Tp_i)^2+\lambda(||p_i||_2^2+||q_j||_2^2) argmin(i,j)∈K∑​=(mij​−qjT​pi​)2+λ(∣∣pi​∣∣22​+∣∣qj​∣∣22​)
优化的方式是采用的梯度下降,并加入了L2正则项防止过拟合。

2.3 BiasSVD
2.3.1 原理

基于FunkSVD,在其基础上加入了用户的偏差与物品的偏差,例如有的用户,打分都偏高;或者有的好的物品,他的评分都偏高。所以优化目标函数变为了:
argmin∑(i,j)∈K=(mij−μ−bi−bj−qjTpi)2+λ(∣∣pi∣∣22+∣∣qj∣∣22+∣∣bi∣∣22+∣∣bj∣∣22) argmin\sum_{(i,j)\in K}=(m_{ij}-\mu-b_i-b_j-q_j^Tp_i)^2+\lambda(||p_i||_2^2+||q_j||_2^2+||b_i||_2^2+||b_j||_2^2) argmin(i,j)∈K∑​=(mij​−μ−bi​−bj​−qjT​pi​)2+λ(∣∣pi​∣∣22​+∣∣qj​∣∣22​+∣∣bi​∣∣22​+∣∣bj​∣∣22​)
其中,μ\muμ为整体的平均值,bib_ibi​为用户的偏好值,bjb_jbj​为物品的偏好值。在优化过程中,bib_ibi​和bjb_jbj​的初始值可设定为零向量。

2.4 SVD++
2.4.1 原理

在BiasSVD的基础上,又添加了基于隐性特征的属性,通过用户的隐性数据衡量对物品的偏好程度。
argmin∑(i,j)∈K=(mij−μ−bi−bj−qjT(pi+∑s∈I(i)ysI(i)))2+λ(∣∣pi∣∣22+∣∣qj∣∣22+∣∣bi∣∣22+∣∣bj∣∣22+∑s∈I(i)∣∣ys∣∣2) argmin\sum_{(i,j)\in K}=(m_{ij}-\mu-b_i-b_j-q_j^T(p_i+\frac{\sum_{s\in I(i)}y_s}{\sqrt{I(i)}}))^2+\lambda(||p_i||_2^2+||q_j||_2^2+||b_i||_2^2+||b_j||_2^2+\sum_{s\in I(i)}||y_s||^2) argmin(i,j)∈K∑​=(mij​−μ−bi​−bj​−qjT​(pi​+I(i)​∑s∈I(i)​ys​​))2+λ(∣∣pi​∣∣22​+∣∣qj​∣∣22​+∣∣bi​∣∣22​+∣∣bj​∣∣22​+s∈I(i)∑​∣∣ys​∣∣2)

其中yjy_jyj​为对物品j的隐性修正向量,I(i)I(i)I(i)为用户i所评价过的所有物品集合

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐