【ML学习笔记】3:机器学习中的数学基础3(特征值,特征向量,认识SVD)

矩阵乘以向量的几何意义

【ML学习笔记】3:机器学习中的数学基础3(特征值,特征向量,认识SVD)_第1张图片
实际上也就是
这里写图片描述
所以,它还可以写成
【ML学习笔记】3:机器学习中的数学基础3(特征值,特征向量,认识SVD)_第2张图片
那么把原来的矩阵按照列视图来看,也就是
【ML学习笔记】3:机器学习中的数学基础3(特征值,特征向量,认识SVD)_第3张图片
而[x]和[y]作为1x1的矩阵,在刚刚那个式子里可以看成一个标量,也就变成了
【ML学习笔记】3:机器学习中的数学基础3(特征值,特征向量,认识SVD)_第4张图片
所以矩阵乘以一个列向量,可以看成把这个列向量的每一个分量当做一个权重,而把刚刚那个矩阵分成几个列向量,用这些权重去对这些分解出的列向量做一定的线性组合,然后得到了一个新的列向量。
而(x,y)也就可以看成(1,5)这个向量在(2,1)向量和(-1,1)向量为单位构成的坐标系上的坐标
【ML学习笔记】3:机器学习中的数学基础3(特征值,特征向量,认识SVD)_第5张图片

方阵的特征值和特征向量

如果对于方阵A,存在一个列向量x,满足Ax=λx,则x就是矩阵A的特征向量,而λ是相应的特征值。

一个例子

【ML学习笔记】3:机器学习中的数学基础3(特征值,特征向量,认识SVD)_第6张图片
比如对于方阵A,我们去看一下A矩阵乘以这三个向量得到的向量:
【ML学习笔记】3:机器学习中的数学基础3(特征值,特征向量,认识SVD)_第7张图片
显然Ax1,Ax2是找不到一个对应的λ使得前面的等式成立的,而对于Ax3可以找到λ=5,所以x3是A的一个特征向量,5就是对应的特征值。

几何意义

对于列向量x,在其前面乘以了这个方阵A相当于对向量进行了旋转和缩放:
【ML学习笔记】3:机器学习中的数学基础3(特征值,特征向量,认识SVD)_第8张图片
在上图中可以看到,x1和x2经过方阵A给予的旋转缩放后,所得向量和之前的列向量并不共线,所以找不到一个特征值λ。而对于x3这个向量:
【ML学习笔记】3:机器学习中的数学基础3(特征值,特征向量,认识SVD)_第9张图片
经过方阵A给予的旋转缩放后,所得向量和之前的列向量(x3)是共线的,所以就能找到一个常数λ,作为这个缩放的方向和倍数,这里λ=+5也就是与x3同方向放大了5倍。

初识SVD

SVD(矩阵的奇异值分解)是机器学习中一个重要的降维算法。假如有这样一个矩阵,每一行表示一个文本,这个文本中只可能出现n种单词,在这行记录每一个单词的出现次数,也就形成了一个矩阵:
【ML学习笔记】3:机器学习中的数学基础3(特征值,特征向量,认识SVD)_第10张图片
列数n可能会非常大,也就是每一行对应的向量维数会很大,不便于处理。我们想把它截短成一个较小的长度,实际上也就是降维的工作。
SVD所做的也就是把这个原始矩阵拆分成三个矩阵相乘的形式:
【ML学习笔记】3:机器学习中的数学基础3(特征值,特征向量,认识SVD)_第11张图片
中间的矩阵是一个对角矩阵,表示原来信息矩阵中的特征和向量(也就是行和列)相关的重要程度。对这个对角矩阵Σ的主对角元排一下序(从左上角到右下角从大到小排序),然后从中截取出左上角的一个小方阵:
【ML学习笔记】3:机器学习中的数学基础3(特征值,特征向量,认识SVD)_第12张图片
因为剩下的那些主对角元都比较小,干脆就把它们删去,这样之前一个比较大的对角矩阵就变成了一个比较小的对角矩阵。因为它的行和列压缩了,相应地,第一个矩阵的列数和第三个矩阵的行数也会被压缩,这样就把原来的信息矩阵的列数压缩(每一行的向量降维)了。
【ML学习笔记】3:机器学习中的数学基础3(特征值,特征向量,认识SVD)_第13张图片
SVD所做的也就是从一堆特征中提取出最重要的那些特征,放弃那些不那么重要的特征,从而实现降维。

矩阵运算的优势

因为矩阵运算在底层有优化(例如学过的矩阵连乘的优化算法),所以在机器学习中尽量将多重循环等复杂的运算变成矩阵运算的方式,能优化性能。
比如之前学习过的得分函数的一个简单例子,Function(色泽,口感,…,大小)=w0+w1*色泽+w2*口感+..+wn*大小,那么权重w1~wn就是一个列向量,而每个商家的苹果的特征构成了一个矩阵,所做的正是矩阵乘以这个列向量(矩阵列视图下列向量根据这个权重列向量的线性组合)。
【ML学习笔记】3:机器学习中的数学基础3(特征值,特征向量,认识SVD)_第14张图片
类似地,算损失函数也可以用矩阵运算来做,更快更好。

你可能感兴趣的:(机器学习)