矩阵分解

线代:1.9SVD的应用与多元线性回归

狂风中的少年 提交于 2019-12-26 10:49:29
文章目录 任务详解: Svd分解的应用 1.图像压缩 传统网络图片传输与现代传输的原理 2.矩阵乘法加速 多元线性回归 情况1,N>n,样本数>维度(参数个数) 情况2,N 任务详解: 这节课主要介绍了SVD分解的应用,多元线性回归等知识点。 掌握目标: 1、掌握svd分解的应用以及意义 2、掌握多元线性回归,以及矩阵表达形式,以及样本个数和维数不同情况下解的情况 Svd分解的应用 先回顾SVD,就是在矩阵A左右两边分别乘以 U H U^H U H 和 V V V ,得到一个对称矩阵,最后通过证明得到了下面的形式: A = U [ Σ 0 0 0 ] V T (1) A=U\begin{bmatrix} \Sigma &0 \\ 0 & 0 \end{bmatrix}V^T\tag{1} A = U [ Σ 0 ​ 0 0 ​ ] V T ( 1 ) 上式中各自的shape如下: A:m×n U:m×m [ Σ 0 0 0 ] \begin{bmatrix} \Sigma &0 \\ 0 & 0 \end{bmatrix} [ Σ 0 ​ 0 0 ​ ] :m×n V T V^T V T :n×n 如果矩阵A的秩R(A)=r,则 Σ \Sigma Σ 是r×r对角阵,对角线上的元素就是 A T A A^TA A T A 的不为0的特征值,把U写成列向量的形式 [ u 1 , u 2

Numpy的基础知识

我怕爱的太早我们不能终老 提交于 2019-12-26 01:29:05
文章目录 Numerical Python介绍 基础数据结构ndarray数组 为什么引入ndarray数组 ndarray数组和list列表分别完成对每个元素增加1的计算 ndarray数组和list列表分别完成相加计算 如何创建ndarray数组 查看ndarray数组的属性 改变ndarray数组的数据类型和形状 ndarray数组的基本运算 标量和ndarray数组之间的运算 两个ndarray数组之间的运算 ndarray数组的索引和切片 ndarray数组的统计运算 随机数np.random 创建随机ndarray数组 设置随机数种子 随机打乱ndarray数组顺序 随机选取元素 线性代数 Numpy保存和导入文件 Numpy应用举例 Numpy应用举例——计算激活函数 Numpy应用举例——图像翻转和裁剪 课程作业 1 使用numpy计算tanh激活函数 2 统计随机生成矩阵中有多少个元素大于0 Numerical Python介绍 Numpy是Numerical Python的简称,是Python中高性能科学计算和数据分析的基础包。Numpy提供了一个多维数组类型ndarray,它具有矢量算术运算和复杂广播的能力,可以实现快速的计算并且能节省存储空间。在使用Python调用飞桨API完成深度学习任务的过程中,通常会使用Numpy实现数据预处理和一些模型指标的计算

SVD分解技术详解

时光总嘲笑我的痴心妄想 提交于 2019-12-25 15:58:11
版权声明: 本文由LeftNotEasy发布于 http://leftnoteasy.cnblogs.com , 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系 wheeleast@gmail.com 前言: 上一次写了关于 PCA与LDA 的文章,PCA的实现一般有两种,一种是用特征值分解去实现的,一种是用奇异值分解去实现的。在上篇文章中便是基于特征值分解的一种解释。特征值和奇异值在大部分人的印象中,往往是停留在纯粹的数学计算中。而且线性代数或者矩阵论里面,也很少讲任何跟特征值与奇异值有关的应用背景。奇异值分解是一个有着很明显的物理意义的一种方法,它可以将一个比较复杂的矩阵用更小更简单的几个子矩阵的相乘来表示,这些小矩阵描述的是矩阵的重要的特性。就像是描述一个人一样,给别人描述说这个人长得浓眉大眼,方脸,络腮胡,而且带个黑框的眼镜,这样寥寥的几个特征,就让别人脑海里面就有一个较为清楚的认识,实际上,人脸上的特征是有着无数种的,之所以能这么描述,是因为人天生就有着非常好的抽取重要特征的能力,让机器学会抽取重要的特征,SVD是一个重要的方法。 在机器学习领域,有相当多的应用与奇异值都可以扯上关系,比如做feature reduction的PCA,做数据压缩(以图像压缩为代表)的算法,还有做搜索引擎语义层次检索的LSI(Latent Semantic

数据挖掘——层次聚类(Hierarchical clustering)学习及python实现

被刻印的时光 ゝ 提交于 2019-12-24 18:49:17
文章目录 一、前言 二、自底向上的层次算法 三、 python实现层次聚类 四、使用Sklearn中的层次聚类 五、使用Scipy库中的层次聚类 (1). linkage(y, method=’single’, metric=’euclidean’) (2).fcluster(Z, t, criterion=’inconsistent’, depth=2, R=None, monocrit=None) 六、层次聚类的优缺点 参考资料: 一、前言   层次聚类(Hierarchical Clustering)是聚类算法的一种,通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。在聚类树中,不同类别的原始数据点是树的最低层,树的顶层是一个聚类的根节点。层次聚类算法相比划分聚类算法的优点之一是可以在不同的尺度上(层次)展示数据集的聚类情况。   根据创建聚类树有的两种方式:自下而上合并和自上而下。基于层次的聚类算法可以分为:凝聚的(Agglomerative)或者分裂的(Divisive)。 自下而上法就是一开始每个个体(object)都是一个类,然后根据linkage寻找同类,最后形成一个“类”。 自上而下法就是反过来,一开始所有个体都属于一个“类”,然后根据linkage排除异己,最后每个个体都成为一个“类”。   这两种路方法没有孰优孰劣之分

张量分解与应用-学习笔记[03]

江枫思渺然 提交于 2019-12-24 01:32:19
4 压缩与Tucker分解法 4.0 Tucker分解法定义 Tucker分解法可以被视作一种高阶PCA. 它将张量分解为核心张量(core tensor)在每个mode上与矩阵的乘积. 因此, 对三维张量 \(\mathcal{X}\in\mathbb{R}^{I \times J \times K}\) 来说, 我们有如下分解: \[ (4.1) \mathcal{X} \approx \mathcal{G}\times_1 \mathrm{A} \times_2 \mathrm{B} \times_3 \mathrm{C} = \sum_{p=1}^P\sum_{q=1}^Q\sum_{r=1}^R g_{pqr} \: \mathrm{a}_p\circ \mathrm{b}_q\circ \mathrm{c}_r = [\![\mathcal{G}\,;A,B,C]\!]. \] 其中, \(\mathrm{A}\in \mathbb{R}^{I\times P}\) , \(\mathrm{B}\in\mathbb{R}^{J\times Q}\) , 和 \(\mathrm{C} \in \mathbb{R}^{K\times R}\) 被称之为因子矩阵, 他们通常是正交的(orthogonal). 他们通常可以被作每个mode下的主成分principal

奇异值分解(SVD)原理及应用

若如初见. 提交于 2019-12-23 13:45:11
一、奇异值与特征值基础知识: 特征值分解和奇异值分解在机器学习领域都是属于满地可见的方法。两者有着很紧密的关系,我在接下来会谈到,特征值分解和奇异值分解的目的都是一样,就是提取出一个矩阵最重要的特征。先谈谈特征值分解吧: 1)特征值: 如果说一个向量v是方阵A的特征向量,将一定可以表示成下面的形式: 这时候λ就被称为特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。特征值分解是将一个矩阵分解成下面的形式: 其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值。我这里引用了一些参考文献中的内容来说明一下。首先,要明确的是,一个矩阵其实就是一个线性变换,因为一个矩阵乘以一个向量后得到的向量,其实就相当于将这个向量进行了线性变换。比如说下面的一个矩阵: 它其实对应的线性变换是下面的形式: 因为这个矩阵M乘以一个向量(x,y)的结果是: 上面的矩阵是对称的,所以这个变换是一个对x,y轴的方向一个拉伸变换(每一个对角线上的元素将会对一个维度进行拉伸变换,当值>1时,是拉长,当值<1时时缩短),当矩阵不是对称的时候,假如说矩阵是下面的样子: 它所描述的变换是下面的样子:   这其实是在平面上对一个轴进行的拉伸变换(如蓝色的箭头所示),在图中,蓝色的箭头是一个最主要的变化方向(变化方向可能有不止一个),如果我们想要描述好一个变换

PCA降维及SVD

荒凉一梦 提交于 2019-12-23 12:37:36
PCA降维 1.相关背景 我们在实际工作中经常需要分析不同组呈现来的成千上百个指标的数据,这些指标之间经常有一些相关性指标,比如厘米和英尺,这样的指标我们只要保留一个就可以,还有一些隐藏的高度相关的特征,以通过降维方法来进行数据预处理。 2. 数据降维 主成分分析(Principal Component Analysis,简称PCA)是一种常用的降维方法,属于无监督学习。所谓降维就是将数据指标从高维度减到低维度,因为低维度的数据有如下优点: 1) 更容易进行数据分析和数据可视化 2)更容易进行数据存储 3)降低算法的运行成本 3.PCA原理 样本点分布在正交属性空间中,我们如何找到一个超平面(直线的高维推广)对所有样本点最合适的表达? 1.最近重构性:样本点到这个超平面的距离足够近(类似线性回归) 2.最大可分性:样本点到这个超平面的投影尽可能分开(方差最大化) 以上两种方式得到的主成分分析的推导是等价的,下面从”最大可分析“进行推导PCA的过程。 3.1 向量的表示及基变换 3.1.1 向量的內积 a ⃗ ⋅ b ⃗ = ∣ a ⃗ ∣ ∣ b ⃗ ∣ c o s α ( α 为 两 个 向 量 的 夹 角 ) \vec a\cdot\vec b = |\vec a||\vec b|cos\alpha(\alpha为两个向量的夹角) a ⋅ b = ∣ a ∣ ∣ b ∣ c o

矩阵运算

亡梦爱人 提交于 2019-12-23 11:21:45
二、 矩阵运算 1. 什么是矩阵 矩阵就是由多组数据按方形排列的阵列,在 3D 运算中一般为方阵,即 M*N ,且 M=N ,使用矩阵可使计算坐标 3D 坐标变得很方便快捷。下面就是一个矩阵的实例: 看似没什么特殊的,可是后面你可以看到矩阵的魅力,为什么矩阵这么有效,我也不知道,这个由数学家去论述,我们只要可以用就是了。 2. 向量的点乘和叉乘 向量的点乘和叉乘与矩阵一样是数学定义,点乘在矩阵运算中起到很重要的作用,称为内积,叉乘称为外积,通过叉乘运算可以计算出一个向量,该向量垂直于由两个向量构成的平面,该向量也称为该平面的法线。这两个计算方法在 3D 运算中的作用就是向量计算工具。 l 点乘公式 其实就是两个向量的各分量相乘后形成新的向量 l 叉乘公式 Uc=U1* U2 两个向量进行叉乘的矩阵如下: 其中 x1 , y1 , z1 以及 x2 , y2 , z2 分别为向量 U1 和 U2 的分量,设 UC 为叉乘的向量积,其计算公式如下: 3. 三维几何变换矩阵 几何绘图中,常常需要将一个模型从一个位置移动到另一个位置,或者将模型进行缩放旋转,称为几何变换。每个模型都存在一个局部的坐标系,在制作模型的时候是不考虑模型在场景中的具体位置的,模型中的所有顶点的坐标值都相对于局部坐标系,而模型在应用中会发生很多变化,其中大部分情况都是由多种变化复合的结果,这些变化涉及很多复杂的运算

线性代数-MIT-第4讲

半城伤御伤魂 提交于 2019-12-23 03:12:49
线性代数-MIT-第4讲 目录 线性代数-MIT-第4讲 1.矩阵AB的逆 2.消元矩阵的乘积 3.转置与置换 1.矩阵AB的逆 2.消元矩阵的乘积 最基础的矩阵分解A=LU: A通过消元矩阵得到上三角阵U,L联系这A和U; E21 A = U A=LU 左乘初等矩阵,将矩阵转化为上三角阵U; L是下三角阵,对角线为1,U是上三角阵,对角线为主元; 举例A为3x3,则消元成为上三角阵U(假设没有行交换): 此处为何转化成右侧的逆? 解释(以3x3举例): (E32为单位阵,E是A的左乘,(3,3)位置是10,不友好) (E32为单位阵,L是U的左乘,L是E的逆,(3,3)位置0,更友好) 因此,A=LU,如果没有行交换,则消元乘数可以直接写入L中; 消元的过程,需要多少次操作?例如nxn的矩阵A: 例如,100x100的矩阵; 第一步,第一行不变,使除第一行外第一列变为0,该过程除第一行其余均变化, 即是100x99,近似于100x100; 第二部,第一二行不变,使除第一二行外第二列变0,该过程除第一二行和和第一列变化, 即是99x98,近似于99x99 因此总的次数为,100x100+99x99+98x98...2x2+1x1,根据微积分可得 而右侧向量b,则需要1+2+3+...+n-1+n-2= 次; 3.转置与置换 下面讨论主元位置存在0的情况,即需要进行行交换(置换矩阵)

机器学习数学基础-线性代数

≡放荡痞女 提交于 2019-12-23 00:04:45
前言 AI(人工智能)现在火的一塌糊涂,其实在AI领域,机器学习已广泛应用在搜索引擎、自然语言处理、计算机视觉、生物特征识别、医学诊断、证券市场分析等领域,并且机器学习已经是各大互联网公司的基础设施,不再是一个新鲜的技术。但当你真的开始学习机器学习的时候,就会发现上手门槛其实还挺高的,这主要是因为机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。 本文主要介绍一下机器学习涉及到的一些最常用的的数学知识,方便大家在学习机器学习的时候,能扫除一些基础障碍。 标量(scalar) 标量是一个单独的数,一般用普通小写字母或希腊字母表示,如 等。 向量(vector)相关 向量的定义 把数排成一列就是向量,比如: 向量一般用粗体小写字母或粗体希腊字母表示,如 等(有时候也会用箭头来标识,如 ),其元素记作 。 向量默认为列向量,行向量需要用列向量的转置表示,例如 等。 物理专业视角:向量是空间中的箭头,决定一个向量的是它的长度和方向 计算机专业视角:向量是有序的数字列表 数学专业视角:向量可以是任何东西,只要保证两个向量相加以及数字与向量相乘是有意义的即可 运算规则 向量的加法和数量乘法定义: 加法 相同维数的向量之间的加法为: 数量乘法 任意的常数 和向量的乘法为: 在给定数 及向量 的情况下 张成空间 张成空间是向量 和