title: 【线性代数】4-2:投影(Porjections)

categories:

  • Mathematic
  • Linear Algebra

    keywords:
  • Projections
  • Projection Onto a Subspace

    toc: true

    date: 2017-10-17 09:28:46

Abstract: 本篇主要介绍的就是向量的映射,以映射到直线为引导,重点在于映射到子空间。

Keywords: Projections,Projection Onto a Subspace

开篇废话

开篇废话,喜迎十九大,嚯嚯哈哈。

Projections

映射,投影,感觉怎么翻译都不太对,总能想到函数,不过好像在这部分,投影矩阵和函数的功能非常类似。在典型的三维正交基向量空间内,一个向量的投影到一个平面上一般是下面这种形式:

向量b投影到xy平面,和b投影到z轴的一种几何上的反应,当然超过三维,就没办法画出来的,但是原理都一样,通过垂直(正交),将不在子空间的向量转换到子空间内最接近原始向量 b⃗\vec{b}b 的投影向量 b⃗^\hat{\vec{b}}b^来近似原始向量,这种方法在最小二乘法中得到了完美的应用,以及后面将要做的一些分解,上一篇提到的split(分解到子空间的split),都可以利用projection的原理。

继续解读上图,向量被分级到了正交的两个子空间,xy平面,和z轴,这两个子空间互为orthogonal complements,并且满足下面两种关系:

p1⃗+p2⃗=b⃗P1+P2=I
\vec{p_1}+\vec{p_2}=\vec{b}\\
P_1+P_2=I
p1​​+p2​​=bP1​+P2​=I

第一个式子就是个典型的split,比如物理里面力的分解,速度分解,都是把向量分解到你想要的方向,然后我们把向量分解到orthogonal complements的子空间中,就得到了我们想要的projection

第二个式子是projection matrix之间的关系,这里可以轻易的看出来,映射到xy平面P1=[100010000]P_1=\begin{bmatrix}1&0&0\\0&1&0\\0&0&0\end{bmatrix}P1​=⎣⎡​100​010​000​⎦⎤​,同理到z轴的就是P2=[000000001]P_2=\begin{bmatrix}0&0&0\\0&0&0\\0&0&1\end{bmatrix}P2​=⎣⎡​000​000​001​⎦⎤​,可以看出P1+P2=IP_1+P_2=IP1​+P2​=I

Projection Onto a Line(映射到直线)

Dot product to Projections

把一个向量 b⃗\vec{b}b 映射到一条直线aaa,等价于问题类似于把一个向量projection到另一个向量上,这个和我们之前学习的dot product有点像,如果

when ∣i⃗∣=1b⃗⋅i⃗=∣b⃗∣∣i⃗∣cos(θ)=∣b⃗∣cos(θ)
when\,|\vec{i}|=1\\
\vec{b} \cdot \vec{i}=|\vec{b}||\vec{i}|cos(\theta)=|\vec{b}|cos(\theta)
when∣i∣=1b⋅i=∣b∣∣i∣cos(θ)=∣b∣cos(θ)

其中夹角就是下图中 θ\thetaθ

可以看到映射到向量a上等价于和a方向上的单位向量dot product,假设 p⃗\vec{p}p​ 是 b⃗\vec{b}b 的投影结果,那么 i⃗=a⃗∣a⃗∣\vec{i}=\frac{\vec{a}}{|\vec{a}|}i=∣a∣a​

∣p⃗∣=∣b⃗∣cos(θ)=b⃗⋅i⃗=b⃗⋅a⃗∣a⃗∣p⃗=∣p⃗∣i⃗=∣p⃗∣a⃗∣a⃗∣so:p⃗=b⃗⋅a⃗∣a⃗∣∣a⃗∣a⃗
|\vec{p}|=|\vec{b}|cos(\theta)=\vec{b} \cdot \vec{i}=\vec{b} \cdot \frac{\vec{a}}{|\vec{a}|}\\
\vec{p}=|\vec{p}|\vec{i}=|\vec{p}|\frac{\vec{a}}{|\vec{a}|}\\
so:\\
\vec{p}=\frac{\vec{b}\cdot\vec{a}}{|\vec{a}||\vec{a}|}\vec{a}
∣p​∣=∣b∣cos(θ)=b⋅i=b⋅∣a∣a​p​=∣p​∣i=∣p​∣∣a∣a​so:p​=∣a∣∣a∣b⋅a​a

把向量中的dot product都换成转置相乘的模式就得到了

p⃗=b⃗Ta⃗a⃗Ta⃗a⃗
\vec{p}=\frac{\vec{b}^T\vec{a}}{\vec{a}^T \vec{a}}\vec{a}
p​=aTabTa​a

本文为节选,完整内容地址:https://www.face2ai.com/Math-Linear-Algebra-Chapter-4-2转载请标明出处

【线性代数】4-2:投影(Porjections)的更多相关文章

  1. MIT线性代数:16.投影矩阵和最小二乘

  2. Python爬取CSDN博客文章

    0 url :http://blog.csdn.net/youyou1543724847/article/details/52818339Redis一点基础的东西目录 1.基础底层数据结构 2.win ...

  3. MIT线性代数:15.子空间的投影

  4. 斯坦福大学CS224d基础1:线性代数回顾

    转自 http://blog.csdn.net/han_xiaoyang/article/details/51629242 斯坦福大学CS224d基础1:线性代数知识 作者:Zico Kolter ( ...

  5. [OpenGL ES 03]3D变换:模型,视图,投影与Viewport

    [OpenGL ES 03]3D变换:模型,视图,投影与Viewport 罗朝辉 (http://blog.csdn.net/kesalin) 本文遵循“署名-非商业用途-保持一致”创作公用协议 系列 ...

  6. 线性代数导论 | Linear Algebra 课程

    搞统计的线性代数和概率论必须精通,最好要能锻炼出直觉,再学机器学习才会事半功倍. 线性代数只推荐Prof. Gilbert Strang的MIT课程,有视频,有教材,有习题,有考试,一套学下来基本就入 ...

  7. 【脚下生根】之深度探索安卓OpenGL投影矩阵

    世界变化真快,前段时间windows开发技术热还在如火如荼,web技术就开始来势汹汹,正当web呈现欣欣向荣之际,安卓小机器人,咬过一口的苹果,winPhone开发平台又如闪电般划破了混沌的web世界 ...

  8. PCA算法详解——本质上就是投影后使得数据尽可能分散(方差最大),PCA可以被定义为数据在低维线性空间上的正交投影,这个线性空间被称为主⼦空间(principal subspace),使得投影数据的⽅差被最⼤化(Hotelling, 1933),即最大方差理论。

    PCA PCA(Principal Component Analysis,主成分分析)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量 ...

  9. 三维投影总结:数学原理、投影几何、OpenGL教程、我的方法

    如果要得到pose视图,除非有精密的测量方法,否则进行大量的样本采集时很耗时耗力的.可以采取一些取巧的方法,正如A Survey on Partial of 3d shapes,描述的,可以利用已得到 ...

随机推荐

  1. Linux(CentOS7)系统中部署Django web框架

    1. 概述 部署django和vue架在逻辑上可以分为web层与数据库层:web前端通过实现了WSGI协议的模块对python代码进行解析,而python代码中则通过特定于数据库的操作接口对数据库进行 ...

  2. hdu 2610 2611 dfs的判重技巧

    对于全排列枚举的数列的判重技巧 1:如果查找的是第一个元素 那么 从0开始到当前的位置看有没有出现过这个元素 出现过就pass 2: 如果查找的不是第一个元素 那么 从查找的子序列当前位置的前一个元素 ...

  3. Java门面模式(思维导图)

    图1 门面模式[点击查看图片] 1,实体对象类 package com.cnblogs.mufasa.demo1; //3个子系统,解决问题的实体 public class StoreA { //示意 ...

  4. python selenium4 模拟点击+拖动+保存验证码 测试对象+以验证码的返回ID保存命名 58同城验证码

    #!/usr/bin/python # -*- coding: UTF-8 -*- # @Time : 2019/12/5 17:30 # @Author : shenghao/10347899@qq ...

  5. Java面试题之Java虚拟机垃圾回收

    JVM的垃圾回收机制,在内存充足的情况下,除非你显式的调用System.gc(),否则不会进行垃圾回收:在内存充足的情况下垃圾回收会自动运行. 一.引用计数算法 1.定义:引用计数算法会给对象添加一个 ...

  6. idea的EasyCode使用

    EasyCode可以自动根据表格生成:entity,dao,service,serviceImpl,controller 使用方法: 一.安装EasyCode插件: File-setting-Plug ...

  7. localStorage、sessionStorage和cookie的区别

    本地客户端(浏览器)查看三者信息: HTML4的本地存储:cookie 浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等根服务端进行数据交互. 一.co ...

  8. golang在linux后台执行的方法

    go build ./index.go 会生成一个index的运行文件 nohup index & 后台运行index文件 killall index 你可能还要关闭index set GOA ...

  9. String s=new String("xyz");创建了几个String Object?二者之前的区别是什么?

    两个.第一个对象是字符串常量"xyz",第二个对象是new String("xyz")的时候产生的,在堆中分配内存给这个对象,只不过这个对象的内容是指向字符串常 ...

  10. 【Git】六、分支管理&冲突解决

    上一节讲了如何和远端的仓库协同工作,这一节介绍一下分支 ---------------------------- 提要 //创建一个分支dev $ git branch dev //切换到dev分支 ...