IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 矩阵分解(EVD-SVD-Funk SVD-LFM-NCF-GMF) -> 正文阅读

[人工智能]矩阵分解(EVD-SVD-Funk SVD-LFM-NCF-GMF)

特征值/特征向量的计算

首先如公式所示
A υ = λ υ A\upsilon =\lambda \upsilon Aυ=λυ
如果向量 υ \upsilon υ λ \lambda λ满足以上公式,那么他们可以分别叫做矩阵A的特征向量和特征值,至于特征向量和特征值的物理含义是什么,可以参考b站3blue1brown的视频(天花板级讲解)

特征值分解(EVD)

同样摆出特征值分解的公式:
A = Q ∑ Q ? 1 A=Q\sum Q^{-1} A=QQ?1

特征值分解表示:如果A的方阵,那么可以分解为如上的右面所示的表达,其计算过程如下
1.求出所有特征值和对应特征向量;
2.所有特征向量构成的矩阵就是Q矩阵;
3. ∑ \sum 就是所有特征值构成的对角矩阵。

问题1:那如果A是不是方阵的时候该怎么解决呢?这就引来了奇异值分解了

奇异值分解(SVD)

奇异值分解的公式如下
A = U ∑ V ? T A=U\sum V^{-T} A=UV?T
这时的A就可以是任何 m × n m\times n m×n的矩阵了,其中分解后的U矩阵是 m × m m\times m m×m的方阵,而V矩阵是 n × n n\times n n×n的方阵, ∑ \sum 择是 m × n m\times n m×n的对角矩阵。

具体计算步骤如下:
1.求 A A ? T AA^{-T} AA?T 的特征值和特征向量,所有特征向量单位化后构成了U矩阵
2.求 A ? T A A^{-T} A A?TA 的特征值和特征向量,所有特征向量单位化后构成了V矩阵
3.求 A A ? T AA^{-T} AA?T A ? T A A^{-T} A A?TA 的特征值的平方根,构成的斜对角矩阵为 $\sum $

PCA(主成分分析)

PCA是做数据降维的一种方法,其原理就是寻找一组能够最大限度表征原始信息的向量作为基。其具体计算过程如下:
对于要进行降维数据集A
1.去平均值(即去中心化),即每一位特征减去各自的平均值。
2.计算协方差矩阵 1 n A A ? T \frac{1}{n} AA^{-T} n1?AA?T
3.计算协方差矩阵的特征值和特征向量
4.对特征值从大到小排序,选择其中最大的k个。然后将其对应的k个特征向量分别作为行向量组成特征向量矩阵P
5.所以降维后的数据X的表达为 Y = P X Y = PX Y=PX

:可以看得出来,PCA只是奇异值分解SVD中的一个子问题,因为其只好比只是求解了右半边的奇异矩阵V。就完成了对列的降维压缩。而在奇异值分解SVD中,还多了一步左奇异矩阵分解得到U,完成对行的压缩,可以看出SVD的数据降维是通过行和列上同时进行的,压缩得更狠。

问题2:在以上的奇异值分解中,要完成特征值特征向量的求解,首要前提是这个矩阵本身要稠密,但是现实的用户的打分(不一定打分)矩阵一定是稀疏的,就好比下图所示
在这里插入图片描述
那这个问题该如何解决呢,这就引出了一个伪SVD,也称为Funk SVD

Funk SVD

Funk SVD本质上就是把直接求解矩阵问题转换为最优化问题,具体的loss公式如下
l o s s = ( y ? U ∑ V ) 2 loss = \left ( y-U\sum V \right )^2 loss=(y?UV)2
其中y为用户对物品的实际打分, u v uv uv ∑ \sum 就是三个矩阵,具体含义可不用纠结,到后面再纠结。在求解的时候,先初始化三个矩阵,然后对有打分的位置求loss,没有打分的地方可以忽略,最终依旧可以求得三个矩阵,依旧可以计算出所有打分。

LFM

在Funk SVD中,需要求解三个矩阵,但是在实际的工程中,如果是基于一个用户打分矩阵进行分解的化,显然是分解为两个矩阵更好解释一些,一个为用户矩阵,一个为物品矩阵,对应行列相乘就是对应的打分情况,所以考虑讲
∑ \sum 融入到 u v uv uv中,具体如下:
l o s s = ∑ ( y ? U V ) 2 loss = \sum \left ( y-UV \right )^2 loss=(y?UV)2
这就是LFM隐语义模型,其他的计算原理和Funk SVD是一样的。

ALS

在LFM求解过程中,肯定是用梯度下降法进行参数更新,但是这里有俩矩阵,那每次更新是更新 u u u矩阵还是 v v v矩阵,还是两个都一起更新吗?这时候就引出了ALS,ALS全称叫交替最小二乘,他的操作是交替着更新矩阵,这一步固定 v v v矩阵更新 u u u矩阵,下一步固定 u u u矩阵,更新 v v v矩阵,就这么交替更新。

:在隐语义模型中,这个隐语义可以理解为就是那个矩阵维度k,这个k如何选择是很巧妙的,诸如在用户的行为打分矩阵的分解中,这个k就好比是用户的爱好,你觉得用户有多少爱好,就可以设置多大的k。

Neural CF(NCF)

到了深度学习发展的阶段,NCF在LFM的基础上进行了扩展,在矩阵的求解过程中,不再是通过点乘来进行学习,而是直接将用户矩阵和物品矩阵送入到MLP中,进行充分的卷积来代替点乘,它的好处在于代替点乘的同时,可以对多个特征进行深度交叉。
在这里插入图片描述

但是这有一个隐患在里面,这种充分的特征交叉之后,可能会损失原来的信息,所以为此,又出来了个GMF

GMF

它的本质是重新加入两个用户矩阵和物品矩阵的点乘,不对其进行卷积,保留原来的信息。
在这里插入图片描述

这就是矩阵分解的一个发展历程,具体实现有空再写吧。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-07 11:11:00  更:2022-05-07 11:12:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:52:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码