Part I/ Chapter 2 线性代数基础2 实例:PCA

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

用基础的线性代数知识能够推导出主成分分析(principal components analysis,PCA)这一简单的机器学习算法。

1、出发点:在n维实线性空间中我们有m个点的集合{x(1),x(2),...,x(m)},对这些点进行有损压缩,希望在压缩的过程中损失的精度尽可能少。一种编码的方式就是用低维来表示高维,就是说对于这m个点中的每一个点x(i),都对应着一个l维的编码向量c(i),如果c(i)的维度低于x(i),那么我们就实现了用更少的内存来存储原有数据。

2、我们的目的变为:①寻找一个编码函数,使得f(x)=c ②寻找一个解码函数,使得x≈g(f(x))。

3、为了简化解码器,我们用矩阵乘法的方式将编码c映射回原来的n维空间中,即g(c)=Dc,其中D就是定义解码的n×l维矩阵,为了简化编码问题,我们限制D中所有列向量具有单位范数且互相正交。严格意义上讲,除非l=n,D是一个非正交矩阵。

4、编码:输入x→最优编码c*:最小化输入x与重构输出g(c*)之间的距离,即c*=argmin||x-g(c)||2,通过线性代数的运算以及向量微积分,可以得到c=DTx,因此,获得编码函数f(x)=DTx。

5、解码:r(x)=g(f(x))=DDTx,重构时挑选编码矩阵D,由于使用相同的一个矩阵D对所有点进行解码,因此需要最小化所有维数和所有点上的误差矩阵的Frobenius范数。可以从l=1开始求解,经过运算得到,l=1时的最优的d是XTX的最大特征值对应的特征向量,这样仅仅得到了第一个主成分,更一般地,如果想要得到主成分的基时,矩阵D由前l个最大的特征值对应的特征向量组成。

原文地址:https://www.cnblogs.com/rainton-z/p/11615600.html

时间: 2024-08-29 18:20:14

Part I/ Chapter 2 线性代数基础2 实例:PCA的相关文章

Part I/ Chapter 2 线性代数基础1

1.标量(scalar).向量(vector).矩阵(matrix).张量(tensor). 2.一些关于矩阵的概念:主对角线(main diagonal).单位矩阵(identity matrix).逆矩阵(matrix inversion).对角矩阵(diagonal matrix).对称矩阵(symmetric matrix).正交矩 阵(orthogonal matrix). 3.对于矩阵的一些操作和运算:转置(transpose).标量与矩阵相加.标量与矩阵相乘.广播(broadcas

SQL 查询基础(2)-实例

上次说到SQL查询语句的逻辑执行过程,现在来用一个实例说明一下逻辑执行的过程. 前提:我们有三个表,分别记住客户信息.订单信息和产品信息 客户信息表:Customer ID,Name,Adress,PhoneNumber ID Name Adress PhoneNumber 1 CompanyA No.1 Street 123456 2 CompanyB No.2 Street 23453 3 CompanyC No.3 Street 45321 4 CompanyD No.4 Street 4

C#基础与实例教程最简单的C#快速入门教程【转自:http://www.82011433.com/Html/?6982.html】

c#基础与实例教程最简单的C#快速入门教程 在一小时内学会C#.使用例程,简单却完整的探索C#语言的构造和特点.本文特别适合有C++基础却没有太多精力学习C#的读者. 简介 C#是一种具有C++特性,Java样式及BASIC快速建模特性的编程语言.如果你已经知晓C++语言,本文将在不到一小时的时间内带你快速浏览C#的语法.如果熟悉Java语言,Java的编程结构.打包和垃圾回收的概念肯定对你快速学习C#大有帮助.所以我在讨论C#语言构造的时候会假设你知道C++. c#基础与实例教程最简单的C#快

AutoCAD ObjectARX(VC)开发基础与实例教程2014版光盘镜像

AutoCAD ObjectARX(VC)开发基础与实例教程2014,最新版,光盘镜像 作者:张帆 朱文俊 编著 出版社:中国电力出版社 出版时间:2014年6月 点击一下

numpy线性代数基础 - Python和MATLAB矩阵处理的不同

http://blog.csdn.net/pipisorry/article/details/39087583 在介绍工具之前先对理论基础进行必要的回顾是很必要的.没有理论的基础,讲再多的应用都是空中楼阁.本文主要设涉及线性代数和矩阵论的基本内容.先回顾这部分理论基础,然后给出MATLAB,继而给出Python的处理.个人感觉,因为Python是面向对象的,操纵起来会更接近人的正常思维:而MATLAB大多是以函数实现的,是向对象施加的一个操作.比如,A是一个矩阵,它有一个属性attr.用Pyth

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

关闭 yunqishequ1的博客 目录视图 摘要视图 订阅 管理博客 写新文章 评论送书 | 7月书讯:众多畅销书升级!      CSDN日报20170727--<想提高团队技术,来试试这个套路!>      评论送书 | 机器学习.Java虚拟机.微信开发 机器学习--线性代数基础 2017-07-28 14:05 6人阅读 评论(0) 收藏 编辑 删除  分类: 机器x 目录(?)[+] 原文地址 数学是计算机技术的基础,线性代数是机器学习和深度学习的基础,了解数据知识最好的方法我觉得

Java 找出四位数的全部吸血鬼数字 基础代码实例

/** * 找出四位数的全部吸血鬼数字 * 吸血鬼数字是指位数为偶数的数字,能够由一对数字相乘而得到,而这对数字各包括乘积的一半位数的数字,当中从最初的数字中选取的数字能够随意排序. * 以两个0结尾的数字是不同意的. *   比例如以下列数字都是吸血鬼数字 1260=21*60 1827=21*87 2187=27*81 ... * 比較笨的低效率的做法: 遍历全部四位数, 每生成一个四位数的时候, *         在双重循环遍历两位数,在两位数的内层循环中推断是否与最外层循环的四位数相等

WinForm之BindingSource基础操作实例教程

通常我们在进行数据绑定的时候,常用的数据源有DataSet.DataTable.BindingList<T>.还有强类型数据源.今天我们来通过实例了解一下BindingSource组建,分享给大家供大家参考借鉴之用. BindingSource的两个用途: (1)首先,它提供一个将窗体上的控件绑定到数据的间接层.这是通过将 BindingSource 组件绑定到数据源,然后将窗体上的控件绑定到 BindingSource 组件来完成的.与数据的所有进一步交互(包括导航.排序.筛选和更新)都是通

C#反射之基础应用实例总结

本文将反射的东西整理了一下 , 提供了最全面的东西 , 当然也是基础的东西 , 在学好了这一切的基础上 , 大家可以学习反射的具体插件等应用 首先我们建立一个类库 , 将它生成为 reflectPrj .dll, 代码如下: using System; using System.Collections.Generic; using System.Text; namespace reflectPrj { /// <summary> /// 接口 /// </summary> publ