【Math for ML】矩阵分解(Matrix Decompositions) (上)
I. 行列式(Determinants)和迹(Trace)
1. 行列式(Determinants)
为避免和绝对值符号混淆,本文一般使用\(det(A)\)来表示矩阵\(A\)的行列式。另外这里的\(A∈R^{n×n}\)默认是方阵,因为只有方阵才能计算行列式。
行列式如何计算的就不在这里赘述了,下面简要给出行列式的各种性质和定理。
定理1:当且仅当一个方阵的行列式不为0,则该方阵可逆。
定理2:方阵\(A\)的行列式可沿着某一行或某一列的元素展开,形式如下:
- 沿着第\(i\)行展开:\[det(A)=\sum_{k=1}^n(-1)^{k+i}a_{ik}det(A_{i,k})\]
- 沿着第\(i\)列展开:\[det(A)=\sum_{k=1}^n(-1)^{k+i}a_{ki}det(A_{k,i})\]
定理3:当且仅当一个方阵为满秩时,该方阵行列式不为0,即可逆。
2. 迹(Trace)
矩阵的迹是矩阵对角元素之和,即
\[tr(A)=\sum_{i=1}^na_{ii}\]
迹有如下性质:
- \(tr(A+B)=tr(A)+tr(B)\)
- \(tr(αA)=\alpha tr(A),\alpha∈R\)
- \(tr(I_n)=n\)
- \(tr(ABC)=tr(BCA)=tr(=CAB)\)
- \(tr(AB)=tr(BA), A∈R^{n×m},B∈R^{m×n}\)
II. 特征值(Eigenvalue)&特征向量(Eigenvector)
1. 特征值与特征向量定义:
对于一个给定的矩阵 \(A∈R^{n×n}\),它的特征向量\(v\) 经过这个线性变换之后,得到的新向量仍然与原来的 \(v\)保持在同一条直线上,但其长度或方向也许会改变。即
\[Av=\lambda v\]
则\(\lambda ∈R\)是矩阵\(A\)的特征值,\(v\)是对应的特征向量。
设\(λ=λ_i\)是矩阵\(A\)的一个特征值,则有方程\((A-λ_iv)x=0\),可求得非零解\(x=p_i\)即为\(λ_i\)对应的特征向量。(若\(λ_i\)为实数,则\(p_i\)可取实向量;\(λ_i\)为复数,则\(p_i\)可取复向量)
- 推论
设n阶矩阵\(A=(a_{ij})\)的特征值为\(λ_1,...,λ_n\),不难证明:- 1)\(λ_1+..+λ_n=a_{11}+...+a_{nn}\)
- 2)\(λ_1λ_2...λ_n=|A|\)
由2)可知\(A\)是可逆矩阵的充要条件是它的n个特征值全不为0.
定理
设\(λ_1,...,λ_n\)是方阵\(A\)的n个特征值,\(p_1,...,p_n\)依次是对应的特征向量,如果\(λ_1,...,λ_n\)各不相等,则\(p_1,...,p_n\)线性无关。
2. 特征空间(Eigenspace)和特征谱(Eigenspectrum) 定义
由特征值\(\lambda\)及其对应的特征向量\(v\)所span的空间称为特征空间 ,用\(E_{\lambda}\)表示。矩阵\(A\)的特征值集合称为特征谱。
下面给出两个定理,后面内容很多都是基于它们推导出来的。
- (Hogben(2006)): 一个n阶方阵\(A\)如果有n个不同的特征值,那么对应的n个特征向量互相线性独立。
- (Meyer(2000)): 任何n阶对称矩阵都有n个独立且正交的特征向量。
3. 图解特征向量和特征值
下面使用二维图像的变换来帮助我们直观理解特征值和特征向量的意义。一共给出了两个示例,最左边表示原数据,中间表示不同特征值对应的特征向量方向(红色表示\(λ_1\)对应的特征向量,蓝色表示\(λ_2\)对应的特征向量),最右边表示经过矩阵变换后得到的新的矩阵,该矩阵反应了特征向量和特征值是如何影响变换的。
- 第一个例子
\[
A_1=\left[
\begin{matrix}
0.5 & 0 \\
0 & 2 \\
\end{matrix}
\right]
\]
简单计算后可求出特征值和与之对应的特征向量分别为:
- \(λ_1=0.5:p_1=[1,0]^T\)
- \(λ_2=2\,\,\,\,\,:p_2=[0,1]^T\)
- \(tr(A)=\sum_{i=1}^n \lambda_i\)
可以看到最后得到的新的矩阵\(A_1x\)沿着特征矩阵的方向伸缩,伸缩比例恰巧等于对应特征值大小。
\[
A_4=\left[
\begin{matrix}
1 & -1 \\
-1 & 1 \\
\end{matrix}
\right]
\]
简单计算后可求出特征值和与之对应的特征向量分别为:
- \(λ_1=0:p_1=[1,1]^T\)
- \(λ_2=2\,\,\,\,\,:p_2=[-1,1]^T\)
可以看到最后得到的新的矩阵\(A_1x\)沿着特征矩阵的方向伸缩,伸缩比例恰巧等于对应特征值大小。
关于特征值,特征矩阵等概念更直观,更透彻的理解可以参看文末【理解矩阵】系列文章,这系列文章用非常浅显易懂的语言解释了什么是矩阵,行列式和向量。
III. 平方根法(Cholesky decomposition)
一种矩阵运算方法,又叫Cholesky分解。所谓平方根法,就是利用对称正定矩阵的三角分解得到的求解对称正定方程组的一种有效方法。它是把一个对称正定的矩阵表示成一个下三角矩阵L和其转置的乘积的分解。它要求矩阵的所有特征值必须大于零,故分解的下三角矩阵的对角元也是大于零的。公式如下:
\[
\begin{align}
A&=LL^T \notag \\
\Leftrightarrow
\left[
\begin{matrix}
a_{11} & \cdots &a_{1n} \\
\vdots & \ddots &\vdots \\
a_{n1} & … &a_{nn} \\
\end{matrix}
\right] &=
\left[
\begin{matrix}
l_{11} & \cdots &0 \\
\vdots & \ddots &\vdots \\
l_{n1} & … &l_{nn} \\
\end{matrix}
\right]
\left[
\begin{matrix}
l_{11} & \cdots &l_{n1} \\
\vdots & \ddots &\vdots \\
0 & … &l_{nn} \\
\end{matrix}
\right] \notag
\end{align}
\]
其中\(L\)又称为Cholesky因子。
这里不会详细介绍该方法的计算方法,简单说明一下该方法会带来哪些好处。
1.求逆矩阵
我们都知道求一个矩阵的逆矩阵是一个非常耗时的过程,而对于一个上(下)三角矩阵而言,求逆矩阵就简单很多。假设我们已经将矩阵\(A\)分解,那么有
\[A^{-1}=(LL^T)^{-1}=(L^{-1})^T(L^{-1})\]
2.求行列式
\[det(A)=det(L)^2=\prod_i{l_{ii}^2}\]
IV. 特征分解(Eigendecomposition)&对角化(Diagonalization)
1. 对角矩阵&相似矩阵
常见的对角矩阵形式如下:
\[
\begin{align}
D=
\left[
\begin{matrix}
c_1 & \cdots & 0 \\
\vdots & \ddots & \vdots \\
0 & \cdots & c_n \notag
\end{matrix}
\right]
\end{align}
\]
注意:对角矩阵不一定是方阵,但是为了方便解释默认用对角方阵来说明。
很明显对角矩阵相对于其他形式的矩阵天然有很多计算上的优势,例如计算逆矩阵,行列式时都非常简单,所以如果能把一个矩阵对角化,那么很多问题就可以解决了。
在介绍矩阵对角化之前简单回复一下相似矩阵(similar matrix) 的概念,即
如果存在一个可逆矩阵\(P\)使得两个矩阵\(A,D\)满足\(D=P^{-1}AP\),那么则称\(A,D\)相似。
2. 可对角化(Diagnolizable)
定义
所以可对角化(Diagnolizable) 可定义如下:如果一个矩阵\(A\)和一个对角矩阵相似,则称\(A\)可对角化。也就是说如果存在一个可逆矩阵\(P\)使得两个矩阵\(A,D\)满足\(D=P^{-1}AP\),且\(D\)为对角矩阵,那么则称\(A\)可对角化。
对角化条件
那么什么时候才能对角化呢?答案在下面的特征值分解/对角化定理中:当且仅当方阵\(A∈R^{n×n}\)满秩(即有n个独立的特征向量)时,有
\[A=PDP^{-1}\]
其中\(P\)是由\(A\)的特征矩阵组成的可逆矩阵,\(D\)是由\(A\)的特征值组成的对角矩阵。亏损矩阵
基于上面的介绍,很自然地给出亏损矩阵(defective matrix) 的定义:n阶矩阵\(A\)若有n个线性无关的特征向量(n个特征值也要各不相同),称\(A\)为非亏损矩阵,即\(A\)有完备的线性无关的特征向量系。反之称\(A\)为亏损矩阵。
对称矩阵对角化
任何对称矩阵都可以对角化,即
\[
\begin{align}
S&=PDP^{-1} \notag\\
&=PDP^T \notag
\end{align}
\]
其中\(P\)是由n个正交特征向量组成的矩阵(此时有\(P^{-1}=P^T\),证明略),\(D\)是特征值组成的对角矩阵
下图直观地给出了对称矩阵对角化的过程:
上图可划分成四个部分,按顺时针顺序分别简称为LT(Left-Top),RT(Right-Top),LB(Left-Bottom),RB(Right-Bottom)。
LT的\(p_1,p_2\)表示矩阵\(A∈R^{2×2}\)的单位特征向量(长度为1)。
- LT→RT:单位圆按照\(A\)特征向量的方向伸缩,伸缩比例等于\(A\)的特征值大小。因为\(A\)的对称矩阵,所以其特征向量是互相独立且正交的,由图可以清楚地看到\(p_1⊥p_2\);
- LT→LB: 因为\(A\)的对称矩阵,所以有\(P^T=P^{-1}\),所以可以\(P^T\)理解成将坐标轴体系由\(p_1,p_2\)坐标体系逆向还原成传统的\(e_1,e_2\)坐标体系。所以矩阵的本质其实也可以理解成对坐标轴的变换,这个观点相信你在看了文末给出的【理解矩阵】系列文章后会有更深刻的理解。
- LB→RB: 如果上面的介绍你理解了,那么这一过程也就很自然地能够理解了。没错,该步骤就表示在将坐标轴还原到传统意义上的坐标轴后对LB的单位圆按照特征值大小进行伸缩。
- RB→LT: 对坐标轴进行变换。
参考
【Math for ML】矩阵分解(Matrix Decompositions) (上)的更多相关文章
- 【Math for ML】矩阵分解(Matrix Decompositions) (下)
[Math for ML]矩阵分解(Matrix Decompositions) (上) I. 奇异值分解(Singular Value Decomposition) 1. 定义 Singular V ...
- [线性代数] 矩阵代数進階:矩阵分解 Matrix factorization
Matrix factorization 导语:承载上集的矩阵代数入门,今天来聊聊进阶版,矩阵分解.其他集数可在[线性代数]标籤文章找到.有空再弄目录什麽的. Matrix factorization ...
- 矩阵分解(Matrix Factorization)与推荐系统
转自:http://www.tuicool.com/articles/RV3m6n 对于矩阵分解的梯度下降推导参考如下:
- 推荐系统之矩阵分解及C++实现
1.引言 矩阵分解(Matrix Factorization, MF)是传统推荐系统最为经典的算法,思想来源于数学中的奇异值分解(SVD), 但是与SVD 还是有些不同,形式就可以看出SVD将原始的评 ...
- ML.NET 示例:推荐之矩阵分解
写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...
- Matrix Factorization SVD 矩阵分解
Today we have learned the Matrix Factorization, and I want to record my study notes. Some kownledge ...
- ML.NET 示例:推荐之One Class 矩阵分解
写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...
- 【RS】Sparse Probabilistic Matrix Factorization by Laplace Distribution for Collaborative Filtering - 基于拉普拉斯分布的稀疏概率矩阵分解协同过滤
[论文标题]Sparse Probabilistic Matrix Factorization by Laplace Distribution for Collaborative Filtering ...
- 【RS】List-wise learning to rank with matrix factorization for collaborative filtering - 结合列表启发排序和矩阵分解的协同过滤
[论文标题]List-wise learning to rank with matrix factorization for collaborative filtering (RecSys '10 ...
随机推荐
- SSH整合redis和MongoDB错误笔记
由于毕设中做的是图片搜索网站,选择前端框用SSH,因为之间接触过SSH框架,略有了解,但没有深究,现在在整合redis和mongodb的过程中遇到很多错误,也是十分痛苦,只能通过百度和一步步尝试着解决 ...
- php将用户信息提交到表单并且以txt文档打印出来
1.分析: ====不推荐这种======== <?php function foo(){ // global $message; if(empty($_POST['username'])){ ...
- 构造方法关键字---this
this 可以在构造方法之间进行调用 *this在构造方法之间调用 this() this 可以在构造方法之间进行调用 *this在构造方法之间调用 this() package cn.homewor ...
- 关于mac 系统如何通过终端 连接linux服务器 并传文件!
首先要打开终端 mac远程链接服务器 输入 : ssh root@xxx.xx.xxx.xx xxx.xx.xxx.xx是端口号 后面会要求你输入password 即可远程连接 mac通过终端给 ...
- C++ 对象实例化(转)
C++ 对象实例化的一些概念: C++ 如果直接定义类,如classA a; a存在栈上(也意味着复制了对象a在栈中):如果classA a = new classA就存在堆中. 一.new创建类 ...
- 3、JPA-API
Persistence Persistence 类用于获取 EntityManagerFactory 实例,该类包含一个名为 createEntityManagerFactory 的静态方法 . cr ...
- python 小数据池 is和 == 编码解码
########################总结######################### 今日主要内容 1. 小数据池, id() 小数据池针对的是: int, str, bool 在p ...
- Web API中的传参方式
在Restful风格的WebApi的里面,API服务的增删改查,分别对应着Http Method的Get / Post / Delete /Put,下面简单总结了Get / Post /Delete ...
- [leetcode-108,109] 将有序数组转换为二叉搜索树
109. 有序链表转换二叉搜索树 Given a singly linked list where elements are sorted in ascending order, convert it ...
- solr简介与安装
solr简介: Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展,并对索引 ...