Moore-Penrose伪逆(pseudoinverse)。

非方矩阵,逆矩阵没有定义。矩阵A的左逆B求解线性方程Ax=y。两边左乘左逆B,x=By。可能无法设计唯一映射将A映射到B。矩阵A行数大于列数,方程无解。矩阵A行数小于列数,矩阵有多个解。

矩阵A的伪逆A + =lim a->0 (A T A+aI) -1 A T。计算伪逆公式,A + =VD + U T。矩阵U、D、V是矩阵A奇异值分解得到矩阵。对角矩阵D伪逆D + 是非零元素取倒数后再转置。矩阵A列数多于行数,伪逆求解线性方程是可能解法。x=A + y是方程所有可行解中欧几里得范数||x|| 2 最小。矩阵A行数多于列数,没有解。伪逆得到x使得Ax和y的欧几里得距离||Ax-y|| 2 最小。

迹运算。

返回矩阵对角元素和,Tr(A)=Sum i A i,i 。通过矩阵乘法和迹运算符号清楚表示矩阵运算。描述矩阵Frobenius范数,||A|| F =SQRT(Tr(AA T ))。迹运算在转置运算下不变,Tr(A)=Tr(A T )。多个矩阵相乘方阵迹,矩阵最后一个挪到最前面相乘迹相同。需考虑挪动后矩阵乘积定义良好,Tr(ABC)=Tr(CAB)=Tr(BCA),Tr(PRODUCT(n,i=1,F (i) ))=Tr(F (n) PRODUCT(n-1,i=1,F (i) ))。循环置换后矩阵乘积矩阵形状变了,迹运算结果依然不变。矩阵A ELEMENT(R m*n ),矩阵B ELEMENT(R n*m ),得到 Tr(AB)=Tr(BA)。AB ELEMENT(R m*m ),BA ELEMENT(R n*n )。标量在迹运算后仍是自己,a=Tr(a)。

行列式。

det(A),方阵A映射到实数函数。行列式等于矩阵特征值的乘积。行列式绝对值衡量矩阵参与矩阵乘法后空间扩大或缩小多少。行列式是0,空间沿着某一维完全收缩,失去所有体积。行列式是1,转换保持空间体积不变。

主成分分析(principal components analysis,PCA)。

简单机器学习算法,基础线性代数知识推导。R n 空间有m个点{x (1) ,…,x (m) },有损压缩,用更少内存,损失精度存储。希望损失精度尽可能少。低维表示,每个点x (i) ELEMENT(R n ),一个对应编码向量c (i) ,按比例放大D :,i ,保持结果不变。为问题有唯一解,限制D所有列向量有单位范数。计算解码器最优编码困难。PCA限制D列向量彼此正交(除非l=n,严格意义D不是正交矩阵)。

想法变算法。明确每一个输入x得到一个最优编码c * 。

最小化原始输入向量x和重构向量g(c * )间距离。范数衡量距离。PCA算法,用L 2 范数,c * =argmin c ||x-g(c)|| 2 。用平方L 2 范数替代L 2 范数。相同值c上取得最小值。L 2 范数非负。平方运算在非负值上单调递增。c * =argmin c ||x-g(c)|| 2 2 。最小化函数简化,(x-g(c)) T (x-g(c))。L 2 范数定义,=x T x-x T g(c)-g(c) T x +g(c) T g(c)。分配律,=x T x-2x T g(c)+g(c) T g(c)。标量g(c) T x转置等于自己。第一项x T x 不依赖c,忽略,优化目标,c * =argmin c -2x T g(c)+g(c) T g(c)。代入g(c),c * =argmin c -2x T Dc+c T D T Dc=argmin c -2x T Dc+c T I l c。矩阵D正交性和单位范数约束,=argmin c -2x T Dc+c T c。

向量微积分求解最优化,NABLA(c, (-2x T Dc+c T c))=0,-2D T x+2c=0,c=D T x。算法高效。最优编码x只需要一个矩阵-向量乘法操作。编码向量,编码函数,f(x)=D T x。矩阵乘法,定义PCA重构操作,r(x)=g(f(x))=DD T x。挑选编码矩阵D。相同矩阵D对所有点解码,不能孤立看待每个点。最小化所有维数和所有点上的误差矩阵Frobenius范数。D * =argmin D SQRT(SUM(i,j,(x (i) j -r(x (i)) j )) 2 )subject to D T D=Il。推导寻求D * 算法,l=1,D是单一向量d。简化D为d,问题简化。d * =argmin d SUM(i,||x (i) -dd T x (i) || 2 2 )subject to ||d|| 2 =1。最美观方式。标量d T x (i) 放在向量d右边。标量放在左边写法更传统。d * =argmin d SUM(i,||x (i) -d T x (i) d|| 2 2 )subject to ||d|| 2 =1。标量转置和自身相等。d * =argmin d SUM(i,||x (i) -x (i) T dd|| 2 2 )subject to ||d|| 2 =1。重排写法。

单一矩阵重述问题。更紧凑符号。表示各点向量堆叠成矩阵。记X ELEMENT(R m*n )。X i,: =x (i) T 。重新表述,d * =argmin d ||X-Xdd T || 2 F subject to d T d=1。不考虑约束,Frobenius范数简化。argmin d ||X-Xdd T || 2 F 。=argmin d Tr((X-Xdd T ) T (X-Xdd T ))。=argmin d Tr(X T X-X T Xdd T -dd T X T X+dd T X T Xdd T )。=argmin d Tr(X T X)-Tr(X T Xdd T )-Tr(dd T X T X)+Tr(dd T X T Xdd T )。=argmin d -Tr(X T Xdd T )-Tr(dd T X T X)+Tr(dd T X T Xdd T )。与d无关项不影响argmin,=argmin d -2Tr(X T Xdd T )+Tr(dd T X T Xdd T )。循环改变迹运算相乘矩阵顺序不影响结果,=argmin d -2Tr(X T Xdd T )+Tr(X T X T Xdd T dd T )。考虑约束条件。argmin d -2Tr(X T Xdd T )+Tr(X T X T Xdd T dd T )subject to d T d=1。=argmin d -2Tr(X T Xdd T )+Tr(X T X T Xdd T )subject to d T d=1。=argmin d -Tr(X T X T Xdd T )subject to d T d=1。=argmax d Tr(X T X T Xdd T )subject to d T d=1。=argmax d Tr(d T X T X T Xd)subject to d T d=1。优化问题,特征分解求解。最优d是X T X最大特征值对应特征向量。

以上推导特定于l=1情况,仅得到第一个主成分。得到主成分的基时,矩阵D由前l个最大特征值对应特征向量组成。归纳法证明。

参考资料:

《深度学习》

欢迎推荐上海机器学习工作机会,我的微信:qingxingfengzi

我有一个微信群,欢迎一起学深度学习。

学习笔记DL007:Moore-Penrose伪逆,迹运算,行列式,主成分分析PCA的更多相关文章

  1. scala学习笔记-类型参数中协变(+)、逆变(-)、类型上界(<:)和类型下界(>:)的使用

    转载自  fineqtbull   http://fineqtbull.iteye.com/blog/477994 有位je上的同学来短信向我问起了Scala类型参数中协变.逆变.类型上界和类型下界的 ...

  2. Redis学习笔记之Redis单机,伪集群,Sentinel主从复制的安装和配置

    0x00 Redis简介 Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure server). Redis的键值 ...

  3. 【学习笔记】【C语言】位运算

    1. & 按位与 1> 功能 只有对应的两个二进位均为1时,结果位才为1,否则为0. 2> 举例: 比如9&5,其实就是1001&101=1,因此9&5=1 ...

  4. 【学习笔记】【C语言】赋值运算

    将某一数值赋给某个变量的过程,称为赋值. 1. 简单赋值 C语言规定,变量要先定义才能使用,也可以将定义和赋值在同一个语句中进行 int a = 10 + 5;的运算过程 a = b = 10;的运算 ...

  5. matlab学习笔记11_3高维数组操作 filp, shiftdim, size, permute, ipermute

    一起来学matlab-matlab学习笔记11 11_3 高维数组处理和运算 filp, shiftdim, size, permute, ipermute 觉得有用的话,欢迎一起讨论相互学习~Fol ...

  6. matlab学习笔记11_2高维数组操作 squeeze,ind2sub, sub2ind

    一起来学matlab-matlab学习笔记11 11_2 高维数组处理和运算 squeeze, ind2sub, sub2ind 觉得有用的话,欢迎一起讨论相互学习~Follow Me squeeze ...

  7. SQL反模式学习笔记22 伪键洁癖,整理数据

    目标:整理数据,使不连续的主键Id数据记录变的连续. 反模式:填充断档的数据空缺. 1.不按照顺序分配编号 在插入新行时,通过遍历表,找到的第一个未分配的主键编号分配给新行,来代替原来自动分配的伪主键 ...

  8. V-rep学习笔记:并联机构正逆运动学

    Solving the FK problem of simple kinematic chains is trivial (just apply the desired joint values to ...

  9. 康托展开&逆康托展开学习笔记

    啊...好久没写了...可能是最后一篇学习笔记了吧 题目大意:给定序列求其在全排列中的排名&&给定排名求排列. 这就是康托展开&&逆康托展开要干的事了.下面依次介绍 一 ...

随机推荐

  1. IoT experitment

    Abstract: In order to solve the problems of complex experiment management, complicated teaching task ...

  2. R语言数值积分

    前两天对学习了R里面计算的基本范围,以及一些求解方程的方法,今天来看看积分,其实上个学期学了数值分析,对这部分的算法是有所了解的,当时是用matlab写了一遍,已经忘了怎么实现的了,现在用R重新写一遍 ...

  3. 201671010142 2017-2 《java第十二十三章学习感悟》

    Swing编程第一步,需要导入Swing相关包,即javax.swing.*. 接下里需要设置界面外观风格,使用到UIManager类. 设置完外观之后一定要调用 SwingUtilities.upd ...

  4. JAVA同步锁机制 wait() notify() notifyAll()

    wait() notify() notifyAll() 这3个方法用于协调多个线程对共享数据的存取,所以必须在synchronized语句块中使用. wait() 必须在synchronized函数或 ...

  5. 如何下载最新Xshell版本、免费官方正版软件的技巧过程

    我们在操作和管理Linux VPS.服务器的时候,肯定需要使用SSH工具,对于这个工具网上有很多免费和付费版本.对于我们用户来说肯定会较多的选择免费软件.其中使用较多的还是Xshell工具,也是我认为 ...

  6. 第4次作业 -- 基于Jenkins的持续集成

    Jenkins 配置使用心得 先在 https://jenkins.io/download/ 下载Jenkins 下载之后安装,在指定的地方找到了初始密码,安装了一些插件之后,Jenkins就可以使用 ...

  7. 20175224 2018-2019-2 《Java程序设计》第八周学习总结

    教材学习内容总结 第十五章 泛型与集合框架 泛型 泛型:目的为建立具有类型安全的集合框架. 泛型类声明:class People<E> class 名称<泛型列表> 链表 定义 ...

  8. vue的$nextTick使用总结,this.$refs为undefined的解决办法,element Ui的树形控件setCheckedKeys方法无法使用

    其实这3个讲的是一个问题,先说下问题,我在watch里设置一个监听,当弹窗打开时,自动添加树形的默认选中项, 但奇怪的是this.$refs为undefined,自然setCheckedKeys无法使 ...

  9. 从n个数中随机选出k个数,并判断和是不是素数

    洛谷p1036 #include<iostream> #include<math.h> using namespace std; ],n,k;//依照题目所设 bool isp ...

  10. 测试工具安装(JMeter,Postman)

    Jmeter的安装依赖Java环境,所以必须安装JDK(1.8版本以上的),与JRE集成安装.记得配置环境变量.(5H) Postman,我安装的windows64的,直接在官网下载就好了.不需要在c ...