专栏首页企鹅号快讯掌握机器学习数学基础之线代(二)

掌握机器学习数学基础之线代(二)

标量、向量、矩阵和张量

矩阵向量的运算

单位矩阵和逆矩阵

行列式

方差,标准差,协方差矩阵-------(第一部分)

范数

特殊类型的矩阵和向量

特征分解以及其意义

奇异值分解及其意义

Moore-Penrose 伪逆

迹运算

读完估计需要10min,这里主要讲解剩余部分,第一部分详见之前文章^-^

范数

什么是范数,听得那么术语..其实就是衡量一个向量大小的单位。在机器学习中,我们也经常使用被称为范数(norm) 的函数衡量矩阵大小

(为什么是这样的,不要管了,要扯就扯偏了,记得是衡量向量或者矩阵大小的就行了)

这些知识在各大算法(如SVM)中亦有涉及,而且在距离量度中的欧式距离,华盛顿距离都有密切关系。

特殊类型的矩阵和向量

有些特殊类型的矩阵和向量是特别有用的,也相当于一些术语,比如一些文章直接说是XX矩阵或者XX向量,这个时候我们应该要明白这些矩阵或者向量是什么样子的,还有什么样的性质!

对角矩阵(diagonal matrix):只在主对角线上含有非零元素,其他位置都是零。形式上,矩阵 是对角矩阵,当且仅当对于所有的

特殊的:单位矩阵是对角元素全部是 1的对角矩阵。

单位向量:指模等于1(具有 单位范数)的向量。由于是非零向量,单位向量具有确定的方向。单位向量有无数个。

所以正交矩阵受到关注是因为求逆计算代价小。 我们需要注意正交矩阵的定义。 违反直觉的是,正交矩阵的行向量不仅是正交的,还是标准正交的。 对于行向量或列向量互相正交但不是标准正交的矩阵,没有对应的专有术语。

特征分解以及其意义

许多数学对象可以通过将它们分解成多个组成部分,或者找到它们的一些属性而更好地理解,这些属性是通用的,而不是由我们选择表示它们的方式引起的。

例如:整数可以分解为质数。 我们可以用十进制或二进制等不同方式表示整数12,但质因数分解永远是对的12=2×3×3。 从这个表示中我们可以获得一些有用的信息,比如12不能被5整除,或者12的倍数可以被3整除。

正如我们可以通过分解质因数来发现整数的一些内在性质,我们也可以通过分解矩阵来发现矩阵表示成数组元素时不明显的函数性质。

特征分解是使用最广的矩阵分解之一,即我们将矩阵分解成一组特征向量和特征值。

一个变换(或者说矩阵)的特征向量就是这样一种向量,它经过这种特定的变换后保持方向不变,只是进行长度上的伸缩而已。

特征值及特征向量的几何意义和物理意义:

在空间中,对一个变换而言,特征向量指明的方向才是很重要的,特征值不那么重要。虽然我们求这两个量时先求出特征值,但特征向量才是更本质的东西!特征向量是指经过指定变换(与特定矩阵相乘)后不发生方向改变的那些向量,特征值是指在经过这些变换后特征向量的伸缩的倍数,也就是说矩阵对某一个向量或某些向量只发生伸缩变换,不对这些向量产生旋转的效果,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值。

物理的含义就是图像的运动:特征向量在一个矩阵的作用下作伸缩运动,伸缩的幅度由特征值确定。特征值大于1,所有属于此特征值的特征向量身形暴长;特征值大于0小于1,特征向量身形猛缩;特征值小于0,特征向量缩过了界,反方向到0点那边去了。

注意:常有教科书说特征向量是在矩阵变换下不改变方向的向量,实际上当特征值小于零时,矩阵就会把特征向量完全反方向改变,当然特征向量还是特征向量。我也赞同特征向量不改变方向的说法:特征向量永远不改变方向,改变的只是特征值(方向反转特征值为负值了)。特征向量也是线性不变量。

特征分解的重要应用--PCA(主成分分析):

举个栗子:机器学习中的分类问题,给出178个葡萄酒样本,每个样本含有13个参数,比如酒精度、酸度、镁含量等,这些样本属于3个不同种类的葡萄酒。任务是提取3种葡萄酒的特征,以便下一次给出一个新的葡萄酒样本的时候,能根据已有数据判断出新样本是哪一种葡萄酒。

原数据有13维,但这之中含有冗余,减少数据量最直接的方法就是降维。做法:把数据集赋给一个178行13列的矩阵R,减掉均值并归一化,它的协方差矩阵C是13行13列的矩阵,对C进行特征分解,对角化,其中U是特征向量组成的矩阵,D是特征值组成的对角矩阵,并按由大到小排列。然后,另R’ =RU,就实现了数据集在特征向量这组正交基上的投影。嗯,重点来了,R’中的数据列是按照对应特征值的大小排列的,后面的列对应小特征值,去掉以后对整个数据集的影响比较小。比如,现在我们直接去掉后面的7列,只保留前6列,就完成了降维。

这个降维方法就叫PCA(Principal Component Analysis)。降维以后分类错误率与不降维的方法相差无几,但需要处理的数据量减小了一半(不降维需要处理13维,降维后只需要处理6维)。在深度学习之前,图像处理是很常用到PCA的,PCA是一个非常不错的降维方法!

奇异值分解及其意义

奇异值分解就是将矩阵 A 分解成三个矩阵的乘积:

假设A是一个 m × n 的矩阵,那么 U 是一个 m × m 的矩阵,D 是一个 m × n的矩阵,V 是一个 n × n 矩阵。这些矩阵中的每一个经定义后都拥有特殊的结构。矩阵 U 和 V 都被定义为正交矩阵,而矩阵 D 被定义为对角矩阵。注意:矩阵 D 不一定是方阵。

求解比较复杂,详细推荐查看这篇奇异值分解

奇异值分解的意义:

奇异值分解的含义是,把一个矩阵A看成线性变换(当然也可以看成是数据矩阵或者样本矩阵),那么这个线性变换的作用效果是这样的,我们可以在原空间找到一组标准正交基V,同时可以在对应空间找到一组标准正交基U,我们知道,看一个矩阵的作用效果只要看它在一组基上的作用效果即可,在内积空间上,我们更希望看到它在一组标准正交基上的作用效果。而矩阵A在标准正交基V上的作用效果恰好可以表示为在U的对应方向上只进行纯粹的伸缩!这就大大简化了我们对矩阵作用的认识,因为我们知道,我们面前不管是多么复杂的矩阵,它在某组 标准正交基上的作用就是在另外一组标准正交基上进行伸缩而已。

更加详细的讲述请看:奇异值的意义

特征分解也是这样的,也可以简化我们对矩阵的认识。对于可对角化的矩阵,该线性变换的作用就是将某些方向(特征向量方向)在该方向上做伸缩。

有了上述认识,当我们要看该矩阵对任一向量x的作用效果的时候,在特征分解的视角下,我们可以把x往特征向量方向上分解,然后每个方向上做伸缩,最后再把结果加起来即可;在奇异值分解的视角下,我们可以把x往V方向上分解,然后将各个分量分别对应到U方向上做伸缩,最后把各个分量上的结果加起来即可。

奇异值分解和上面所讲的特征分解有很大的关系,而我的理解是:

不是所有的矩阵都能对角化(对称矩阵总是可以),而所有矩阵总是可以做奇异值分解的。那么多类型的矩阵,我们居然总是可以从一个统一且简单的视角去看它,我们就会感叹奇异值分解是多么奇妙了!

协方差矩阵(或)的奇异值分解结果和特征值分解结果一致。所以在PCA中,SVD是一种实现方式

上面的知识可能需要其他的一些前置知识,但我认为也不必要非学,用的不多,可以遇到再学吧,我们知道其主要公式,意义和应用就好,重要性也一目了然,对于矩阵的变换运算,比如降维(PCA)或推荐系统中都有其重要的作用。

Moore-Penrose 伪逆

对于非方矩阵而言,其逆矩阵没有定义。假设在下面问题中,我们想通过矩阵A的左逆B来求解线性方程:

是否存在唯一的映射将A映射到B取决于问题的形式。

如果矩阵A的行数大于列数,那么上述方程可能没有解;如果矩阵A的行数小于列数,那么上述方程可能有多个解。

Moore-Penrose伪逆使我们能够解决这种情况,矩阵A的伪逆定义为:

但是计算伪逆的实际算法没有基于这个式子,而是使用下面的公式:

其中,矩阵U,D 和V 是矩阵A奇异值分解后得到的矩阵。对角矩阵D 的伪逆D+ 是其非零元素取倒之后再转置得到的。

注意,这里的伪逆也是应用奇异值分解来求得的,这就很好体现知识是联系的啦,伪逆的应用在机器学习中也是大量存在的,比如最简单的线性回归中求广义逆矩阵,也就是伪逆。

迹运算

迹运算返回的是矩阵对角元素的和:

迹运算因为很多原因而有用。 若不使用求和符号,有些矩阵运算很难描述,而通过矩阵乘法和迹运算符号可以清楚地表示。 例如,迹运算提供了另一种描述矩阵Frobenius 范数的方式:

(不必知道是什么,只要知道有这样的运算就好,如果有兴趣,当然可以去了解)

用迹运算表示表达式,我们可以使用很多有用的等式巧妙地处理表达式。 例如,迹运算在转置运算下是不变的:

多个矩阵相乘得到的方阵的迹,和将这些矩阵中的最后一个挪到最前面之后相乘的迹是相同的。 当然,我们需要考虑挪动之后矩阵乘积依然定义良好:Tr(ABC) =Tr(CAB) =Tr(BCA).

迹运算也是常用的数学知识,比如这些知识在正规方程组计算中就有着重要的作用。

本文来自企鹅号 - 全球大搜罗媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 人工智能AI(5):线性代数之矩阵、线性空间

    在前面的篇幅中,我们简单的介绍过矩阵的定义,按照原计划本来,今天准备写特征分解以及奇异值分解,但是发现这其中涉及到比较多的矩阵相关的知识,所以在讨论这些问题之前...

    企鹅号小编
  • C+实现神经网络之壹—Net类的设计和神经网络的初始化

    闲言少叙,直接开始 既然是要用C++来实现,那么我们自然而然的想到设计一个神经网络类来表示神经网络,这里我称之为Net类。由于这个类名太过普遍,很有可能跟其他人...

    企鹅号小编
  • 2017全球人工智能人才白皮书

    THE END 智能制造|行业资讯 回复“1”教你成为智能人 回复“2领取人工智能研究报告

    企鹅号小编
  • 分析机器学习中的核心算法

    在数据分析的过程中,我们会通过观察一系列的特征属性来对我们感兴趣的对象进行分析研究,一方面特征属性越多,越有利于我们细致刻画事物,但另一方面也会增加后续数据处理...

    CSDN技术头条
  • 「Workshop」第十七期 奇异值分解

    奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以...

    王诗翔呀
  • 图深度学习入门教程(一)——基础类型

    主要是基于图深度学习的入门内容。讲述最基本的基础知识,其中包括深度学习、数学、图神经网络等相关内容。该教程由代码医生工作室出版的全部书籍混编节选而成。偏重完整的...

    代码医生工作室
  • OpenGL矩阵变换的数学推导

    说起OpenGL的矩阵变换,我是之前在我们的项目天天P图、布丁相机中开发3D效果时才比较深入地研究了其中的原理,当时一开始时,也只是知道怎么去用这些矩阵,却不知...

    腾讯Bugly
  • 深度学习笔记系列(二):特征值,特征向量与SVD奇异值分解

    本文是深度学习笔记系列文章,本次文章将介绍线性代数里比较重要的概念:特征值,特征向量以及SVD奇异值分解。

    linhw
  • matlab基础2

    Matlab基本运算 数组: 数组的乘法和除法分别用“.*”和“./”表示。右除和左除的关系为:A./B=B.\A,其中A是被除数,B是除数。 size()和l...

    瓜大三哥
  • 生成组合仿射变换矩阵,裁剪+缩放+平移+斜切+旋转

    在翻以前oschina上写的博客的时候,看到这篇觉得还挺有趣的,就重新修改并添加一些新的内容发到再公号上。

    BBuf

扫码关注云+社区

领取腾讯云代金券