矩阵分解(Matrix-Factorization)无门槛

这篇具有很好参考价值的文章主要介绍了矩阵分解(Matrix-Factorization)无门槛。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本章内容

本章主要介绍矩阵分解常用的三种方法,分别为:
1 ◯ \textcircled{1} 1特征值分解
2 ◯ \textcircled{2} 2奇异值分解
3 ◯ \textcircled{3} 3Funk-SVD

矩阵分解原理: \textbf{\large 矩阵分解原理:} 矩阵分解原理:
矩阵分解,矩阵,算法,机器学习
  矩阵分解算法将 m × n m\times n m×n 维的矩阵 R R R分解为 m × k m \times k m×k的用户矩阵 P P P k × n k \times n k×n维的物品矩阵 Q Q Q相乘的形式。其中 m m m为用户的数量, n n n为物品的数量, k k k为隐向量(Latent Factor)的维度。 k k k的大小决定了隐向量表达能力的强弱,实际应用中,其取值要经过多次的实验来确定。在得到了 P P P用户矩阵和物品矩阵 Q Q Q后,将两个矩阵相乘,就可以得到一个满秩的矩阵。那么,我们就对未被评价过的物品,有了一个预测评分。接下来,可以将评分进行排序,推荐给用户。这就是矩阵分解对于推荐系统最基本的用途。
  矩阵分解的目的就是通过分解之后的两矩阵内积,来填补缺失的数据,用来做预测评分。矩阵分解的核心是将矩阵分解为两个低秩的矩阵的乘积,分别以 k k k维的隐因子向量表示,用户向量和物品向量的内积则是用户对物品的偏好度,即预测评分。值得注意的是 k k k的选取是通过实验和经验而来的,因此矩阵分解的可解释性不强。矩阵分解,矩阵,算法,机器学习
一、特征值分解 \textbf{\large 一、特征值分解} 一、特征值分解
   A A A n n n阶矩阵,若数 λ \lambda λ n n n维非0列向量 v ⃗ \vec{v} v 满足 A v ⃗ A \vec{v} Av = λ \lambda λ v ⃗ \vec{v} v ,那么数 λ \lambda λ称为 A A A的特征值, v ⃗ \vec{v} v 称为 A A A的对应于特征值 λ \lambda λ的特征向量。

  可以这样理解: λ \lambda λ为矩阵变换的大小, v ⃗ \vec{v} v 为矩阵变换的方向。但是特征值只能用于方阵,对推荐系统用户——物品的矩阵还不太适合。

  特征值分解,就是将矩阵 A A A分解为如下式:
A = Q Σ Q − 1 A = Q \Sigma Q^{-1} A=QΣQ1

   Q Q Q是矩阵 A A A的特征向量组成的矩阵,Σ则是一个对角阵,对角线上的元素就是特征值。我们来分析一下特征值分解的式子,分解得到的Σ矩阵是一个对角矩阵,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变换方向(从主要的变化到次要的变化排列)。

  我们通过特征值分解得到的前N个特征向量,就对应了这个矩阵最主要的N个变化方向。我们利用这前N个变化方向,就可以近似这个矩阵变换。也就是说:提取这个矩阵最重要的特征。
矩阵分解,矩阵,算法,机器学习
矩阵分解,矩阵,算法,机器学习
二、奇异值分解 \textbf{\large 二、奇异值分解} 二、奇异值分解
  假设一个矩阵 M M M是一个 m × n m \times n m×n的矩阵,则一定存在一个分解:
M = U Σ V T M = U\Sigma V^T M=UΣVT

  其中 U U U m × m m\times m m×m的正交矩阵, V V V n × n n\times n n×n的正交矩阵, Σ \Sigma Σ m × n m\times n m×n的对角矩阵。 Σ \Sigma Σ对角线上的元素就称为 M M M的奇异值。

例如:

假设矩阵 A A A如下:
矩阵分解,矩阵,算法,机器学习
  矩阵 A A A 6 × 4 6\times 4 6×4的用户评分矩阵,6个用户对4个物品一共有19个评分,0代表没评分。

使用SVD进行分解得到:矩阵分解,矩阵,算法,机器学习
矩阵分解,矩阵,算法,机器学习
矩阵分解,矩阵,算法,机器学习
  分解后, U U U矩阵为 6 × 6 6\times6 6×6的正交矩阵, V V V 4 × 4 4\times4 4×4的正交矩阵。 S S S为对角矩阵即公式中的 Σ \Sigma Σ。选取 S S S中较大的 k k k个元素作为隐含特征。删除 S S S的其他维度以及 U U U V V V对应的维度,矩阵分解就完成了。

  我们可以使用最大的 k k k个值和对应大小的 U U U V V V 矩阵来近似描述原始的评分矩阵。这就是SVD做降维用法的核心思想。

  我们在这里选择 k k k=2,那么 S S S对角矩阵就降维成:
矩阵分解,矩阵,算法,机器学习
  同样, U U U矩阵变成了 6 × 2 6\times2 6×2维, V V V矩阵变成了 4 × 2 4\times2 4×2维,然后将处理过的USV三个矩阵相乘做内积,可以得到新的矩阵 A 2 A2 A2为:
矩阵分解,矩阵,算法,机器学习
  此时, A 2 A2 A2和A数据很接近,同时又补充了空白部分。

三、Basic   Matrix   Factorization(Funk-SVD) \textbf{\large 三、Basic Matrix Factorization(Funk-SVD)} 三、Basic Matrix Factorization(Funk-SVD)
  Funk-SVD的基本思想就是:既然评价指标是均方根误差(Root Mean Squared Error, RMSE),那么可以直接通过训练集中的观察值利用最小化RMSE学习用户特征矩阵P和物品特征矩阵Q。为方便表示,用U表示用户的集合,D表示物品的集合,R表示用户评分矩阵。通过这种方法用户和物品可以被映射到一个K维(K可以自己设置)的潜在特征空间。通过挖 掘用户的潜在特征矩阵P(|U|xK维)和物品潜在特征矩阵Q(|D|xK维)来估计评分。即通过下式来得到评分矩阵:
R ≈ P × Q T = R ^ R \approx P \times Q^T = \hat{R} RP×QT=R^

  因此利用上述公式,可以计算出用户i对物品j的估计评分 r i j ^ \hat{r_{ij}} rij^为:
r i j ^ = p i q j T = ∑ k = 1 K p i k q k j \hat{r_{ij}} = p_iq_j^T = \sum_{k=1}^K p_{ik} q_{kj} rij^=piqjT=k=1Kpikqkj

  其中 p i ∈ R K p_i\in R^K piRK表示用户i的K维潜在特征,表达用户的内部特性; q j ∈ R K q_j\in R^K qjRK表示物品j的K维潜在特征,表达物品的内部特性。

  对于每个用户评分 r i j r_{ij} rij,使用FunkSVD进行矩阵分解,对应的估计评分为 p i T q j p_i^Tq_j piTqj,采用均方差做损失函数为 e i j = ( r i j − p i q j T ) 2 e_{ij} =(r_{ij} -p_iq_j^T)^2 eij=(rijpiqjT)2,我们的期望就是使均方差误差尽可能的小,考虑到所有的用户和物品组合,我们的优化目标函数J(p,q)为:
m i n p ∗ , q ∗ ∑ i , j ∈ M ( r i j − p i q j T ) 2 \mathop{min}_{p^*,q^*} \sum_{i,j\in M} (r_{ij} -p_i q_j^T)^2 minp,qi,jM(rijpiqjT)2

为防止过拟合(过拟合是指模型在训练集上误差很小,但是在测试集上表现很差(即泛化能力 [generalization ability] 差),),加入正则化项(类似惩罚函数,利用先验知识进行约束),损失函数即为:

L o s s = a r g m i n ∑ i , j ( r i j − p i q j T ) 2 + ( ∣ ∣ p i ∣ ∣ + ∣ ∣ q j ∣ ∣ ) 2 Loss = argmin \sum_{i,j}(r_{ij} -p_i q_j^T)^2 + (||p_i||+||q_j||)^2 Loss=argmini,j(rijpiqjT)2+(∣∣pi∣∣+∣∣qj∣∣)2

然后使用梯度下降算法来拟合原矩阵。文章来源地址https://www.toymoban.com/news/detail-804741.html

到了这里,关于矩阵分解(Matrix-Factorization)无门槛的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Matrix pencil矩阵铅笔算法(原始论文记录与复现)(二)

    《Estimating two-dimensional frequencies by matrix enhancement and matrix pencil》 1 这篇上一部分见 Matrix pencil矩阵铅笔算法(原始论文记录与复现)(一) 从 { y i ; i = 1 , ⋯   , I } , { z i ; i = 1 , ⋯   , I } left{ y_i;i=1,cdots ,I right} ,left{ z_i;i=1,cdots ,I right} { y i ​ ; i = 1 , ⋯ , I } , { z i ​ ; i =

    2024年02月03日
    浏览(87)
  • 对称矩阵的三对角分解(Lanzos分解算法)-MINRES算法预热

    这篇博客看完以后接着看下一篇博客添加链接描述专门介绍MINRES算法实现就容易了 首先介绍Lanczos分解,Lanzos把对称矩阵转换为一个三对角对称矩阵。考虑三对角对称矩阵如下,考虑正交分解 T = Q T A Q T = Q^T A Q T = Q T A Q T = ( α 1 β 1 0 ⋯ 0 0 β 1 α 2 β 2 0 ⋯ 0 0 β 2 α 3 β 3 ⋯ 0

    2024年02月03日
    浏览(247)
  • 矩阵分解算法

    目录 一·、定义(什么是矩阵分解) 二、矩阵分解的原理 三、矩阵分解的方法 四、矩阵分解的步骤 五、代码实现 六、矩阵分解的优缺点 矩阵分解就是预测出评分矩阵中的缺失值,然后根据预测值以某种方式向用户推荐。常见的矩阵分解方法有基本矩阵分解(basic MF),正

    2023年04月08日
    浏览(33)
  • 【LeetCode 算法】Matrix Diagonal Sum 矩阵对角线元素的和

    给你一个正方形矩阵 mat ,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 n = = m a t . l e n g t h = = m a t [ i ] . l e n g t h 1 = n = 100 1 = m a t [ i ] [ j ] = 100 n == mat.length == mat[i].length\\\\ 1 = n = 100\\\\ 1 = mat[i][j] = 100 n == ma t . l

    2024年02月13日
    浏览(42)
  • 【算法】Reconstruct a 2-Row Binary Matrix 重构 2 行二进制矩阵

    给你一个 2 行 n 列的二进制数组: 矩阵是一个二进制矩阵,这意味着矩阵中的每个元素不是 0 就是 1。 第 0 行的元素之和为 upper。 第 1 行的元素之和为 lower。 第 i 列(从 0 开始编号)的元素之和为 colsum[i],colsum 是一个长度为 n 的整数数组。 你需要利用 upper,lower 和 colsu

    2024年02月12日
    浏览(53)
  • 【Python】NMF非负矩阵分解算法(测试代码)

    欢迎关注 『Python』 系列,持续更新中 欢迎关注 『Python』 系列,持续更新中 从多元统计的观点看,NMF是在非负性的限制下,在尽可能保持信息不变的情况下,将高维的随机模式简化为低维的随机模式H,而这种简化的基础是估计出数据中的本质结构W;从代数的观点看,NMF是

    2024年02月14日
    浏览(38)
  • 【数学与算法】奇异矩阵、奇异值、奇异值分解、奇异性

    我们经常会碰到几个名词很相近的一些数学术语,例如 奇异矩阵、奇异值、奇异值分解、奇异性 ,经常会混淆,这里把它们的定义放在一起,做一下总结: 1.奇异矩阵: 奇异矩阵 是线性代数的概念,就是该矩阵的 秩不是满秩 。 首先,看这个矩阵是不是方阵,即行数和列数

    2024年02月06日
    浏览(43)
  • 【推荐系统入门到项目实战】(三):矩阵分解和ALS算法

    🌸个人主页:JOJO数据科学 📝个人介绍: 统计学top3 高校统计学硕士在读 💌如果文章对你有帮助,欢迎✌ 关注 、👍 点赞 、✌ 收藏 、👍 订阅 专栏 ✨本文收录于【推荐系统入门到项目实战】 本系列主要分享一些学习推荐系统领域的方法和代码实现。 之前我们介绍了推荐

    2024年02月06日
    浏览(44)
  • 理解非负矩阵和张量分解:快速算法的Matlab实现与优化实践

    第一部分:非负矩阵分解(Non-negative Matrix Factorization,NMF)的基本原理 非负矩阵分解(NMF)是一种广泛应用的线性代数技术,特别适用于大规模的数据集分析。其基本思想是将一个非负矩阵分解为两个低秩的非负矩阵的乘积,使得矩阵的内在结构得以暴露并利于进一步分析。

    2024年02月16日
    浏览(54)
  • 大数据课程K18——Spark的ALS算法与显式矩阵分解

    文章作者邮箱:yugongshiye@sina.cn              地址:广东惠州 ⚪ 掌握Spark的ALS算法与显式矩阵分解; ⚪ 掌握Spark的ALS算法原理; 我们在实现推荐系统时,当要处理的那些数据是由用户所提供的自身的偏好数据,这些数据被称作显式偏好数据,由显示偏好数据建立的矩阵称

    2024年02月09日
    浏览(32)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包