首页 > 其他分享 >[线性代数补习课] 投影矩阵

[线性代数补习课] 投影矩阵

时间:2023-04-11 15:36:28浏览次数:31  
标签:mathbf 投影 矩阵 补习 线性代数 空间 向量 零空间

为了学习机器学习,发现自己需要补习一下自己的线性代数知识。但是不太希望在机器学习的原篇堆这些东西,所以就另开一篇记录线性代数知识。

本篇记录的是投影矩阵,为了给出多元线性回归问题正规方程证明。


1. 四个特殊空间

我们都知道对于一个矩阵有列空间行空间零空间

如果一个 \(n \times m\) 的矩阵 \(A\) 的列向量分别为 \(\mathbf{x}_1, \mathbf{x}_2, \cdots \mathbf{x}_n\),这个 \(n\) 个向量所能张成的空间叫做矩阵 \(A\) 的列空间。行空间定义同理。对于零空间,则是所有满足 \(A \mathbf{x} = \mathbf{0}\) 方程的解的向量 \(\mathbf{x}\) 所组成的空间称为零空间。

我们现在需要考虑行空间和零空间的关系,我们可以发现它们是正交的,也即行空间中任意一个向量均与零空间中任意一个向量正交。这时因为由于 \(A \mathbf{x} = \mathbf{0}\),所以对于任意一个行向量 \(\mathbf{x}_i\) 和零空间中任意一个向量 \(\mathbf{x}\),都有 \(\mathbf{x}_i \cdot \mathbf{x} = 0\),进而可知零空间的任意向量与行空间的任意一个基正交,进而得证。

同理我们可知,\(A\) 的列空间与 \(A^{\mathbf{T}}\) 的零空间正交。

2. 投影

我们先在考虑对于两个向量,投影意味着什么。

显然对于两个不共线的向量 \(\mathbf{a}, \mathbf{b}\), \(\mathbf{b}\) 在 \(\mathbf{a}\) 方向上的投影为一个向量 \(\mathbf{p}\),这个向量满足 \(\mathbf{p} = \lambda \mathbf{a}\),且 \(\mathbf{b} - \mathbf{p}\) 与 \(\mathbf{a}\) 垂直。

则我们可以根据 \(\mathbf{a}^{\mathbf{T}}(\mathbf{b} - \lambda \mathbf{a}) = 0\),求出:

\[\lambda = \dfrac{\mathbf{a}^{\mathbf{T}} \mathbf{b}}{\mathbf{a}^{\mathbf{T}} \mathbf{a}} \]

则有: \(\mathbf{p} = \mathbf{a} \dfrac{\mathbf{a}^{\mathbf{T}} \mathbf{b}}{\mathbf{a}^{\mathbf{T}} \mathbf{a}}\)

其实我们可以发现,如果我们令 \(P = \dfrac{\mathbf{a} \mathbf{a}^{\mathbf{T}}}{\mathbf{a}^{\mathbf{T}} \mathbf{a}}\),那么我们就可以将上面的结果写为 \(\mathbf{p} = P \mathbf{b}\),其中 \(P\) 即为投影矩阵,其作用即为将任意向量投影到 \(\mathbf{a}\) 的方向上。显然对于向量来说,投影矩阵有下面三条性质:

  1. \(R(P) = 1\);
  2. \(P\) 为对称矩阵;
  3. \(P = P^2\)

第三条是因为由投影的意义,一个向量已经投影到一个方向后,再求一次到这个方向的投影,这个向量就不会改变了。

为什么我们要研究投影呢,因为我们在解方程 \(A \mathbf{x} = \mathbf{b}\) 的时候,这个方程可能无解。显然 \(\mathbf{b}\) 不在矩阵 \(A\) 的列空间。所以我们希望先将 \(\mathbf{b}\) 投影到这个列空间,假设投影为 \(\mathbf{p}\),然后再通过求 \(A \hat{\mathbf{x}} = \mathbf{p}\) 的解,将其当作原方程的近似解。

这里解释一下向量到空间的投影,即上面的投影 \(\mathbf{p}\) 需要满足其在 \(A\) 的列空间,且向量 \(\mathbf{b} - \mathbf{p}\) 与列空间中的任意向量垂直。

我们则可以知道 \(\mathbf{b} - \mathbf{p}\) 在 \(A^{\mathbf{T}}\) 的零空间中,即 \(A^{\mathbf{T}}(\mathbf{b} - \mathbf{p}) = \mathbf{0}\),进而:

\[A^{\mathbf{T}}(\mathbf{b} - A \hat{\mathbf{x}}) = \mathbf{0} \]

则有:

\[\hat{\mathbf{x}} = (A^\mathbf{T} A)^{-1} A^{\mathbf{T}} \mathbf{b} \\ \mathbf{p} = A \hat{\mathbf{x}} = A(A^\mathbf{T} A)^{-1} A^{\mathbf{T}} \mathbf{b} \]

显然我们这里同时也得到了将一个向量投影到 \(A\) 行空间的投影矩阵 \(P\):

\[P = A(A^\mathbf{T} A)^{-1} A^{\mathbf{T}} \]

对于投影矩阵 \(P\) 来说,我们可以确定的是它仍满足上面的两条性质:

  1. \(P\) 为对称矩阵;
  2. \(P = P^2\)

由于我们在讨论投影矩阵的时候 \(A\) 通常不为方阵(实际应用中,一般是因为未知量少,方程比较多的情况导致 \(A \mathbf{x} = \mathbf{b}\) 无解),故 \(A^{-1}, (A^{\mathbf{T}})^{-1}\) 是不存在的,进而我们不能将 \((A^\mathbf{T} A)^{-1}\) 化为 \(A^{-1}(A^{\mathbf{T}})^{-1}\);另外由于公式中要求 \(A^\mathbf{T} A\) 可逆,所以我们需要要求 \(A\) 列满秩。

标签:mathbf,投影,矩阵,补习,线性代数,空间,向量,零空间
From: https://www.cnblogs.com/Nickel-Angel/p/17306386.html

相关文章

  • 用 Go 剑指 Offer 12. 矩阵中的路径
    给定一个 mxn二维字符网格 board和一个字符串单词 word。如果 word存在于网格中,返回true;否则,返回false。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 例如,......
  • 1605. 给定行和列的和求可行矩阵
    题目链接:1605.给定行和列的和求可行矩阵方法:贪心解题思路参考:思路?一个动画秒懂!附优化写法(Python/Java/C++/Go)代码classSolution{public:vector<vector<int>>restoreMatrix(vector<int>&rowSum,vector<int>&colSum){intm=rowSum.size(),n=colS......
  • ROS2-发布矩阵类消息
    这个困扰我两个周的难题终于在翻阅官方文档之后得到了解答,简而言之就是对于相关头文件的理解(其实是我懒得自定义头文件),下面解释一下相关代码。发布者代码#include<chrono>#include<memory>#include"rclcpp/rclcpp.hpp"#include"std_msgs/msg/float64_multi_array.hpp"......
  • OpenCV获取相机旋转矩阵和平移矩阵
    想要求解旋转矩阵和平移矩阵,先要了解相机内参矩阵和畸变矩阵如何获取,不了解的可以先移步https://www.cnblogs.com/nobodyx/p/17297074.html先上代码#include<iostream>#include<vector>#include<glob.h>#include<opencv2/opencv.hpp>intmain(){//使用glob库......
  • OpenCV获取相机的内参矩阵和畸变矩阵
    实验室任务要截止了,赶紧来上传一下学习成果,终极目的是获取视频每帧的旋转矩阵和平移矩阵,但没办法一口吃个胖子,所以先写一下相机内参矩阵和畸变矩阵的求解办法先上代码#include<opencv2/opencv.hpp>#include<iostream>#include<vector>usingnamespacecv;usingnamespace......
  • 用 Go 剑指 Offer 29. 顺时针打印矩阵
    给你一个m行n列的矩阵 matrix,请按照顺时针螺旋顺序,返回矩阵中的所有元素。 示例1:  输入:matrix=[[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例2:  输入:matrix=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7] 提示:m......
  • UVA - 108 Maximum Sum 求子矩阵的最大和
    题目大意:给出一个矩阵,求出这个矩阵中的子矩阵的最大和解题思路:和UVA507的题目类似,只不过这次是个矩阵了,换个角度思考,将这个二维数组转换成一维数组思考,用sum存储该列的前N个数字的和,如,sum[3][1]就是第一列的前三个数字的和,这样就可以将其想象成一维的最大连续和了,在枚举行,求其最大的和......
  • 剑指 Offer 12. 矩阵中的路径
    题目链接:剑指Offer12.矩阵中的路径方法:DFS解题思路根据\(word\)中的第一个字母,从\(board\)网格中开始查找,通过\(DFS\)算法思想实现。注意:在每一轮开始查找前,每个位置的标记应该清除;每一个位置有上下左右四个方向可以选择;\(DFS\)查找进入下一步时要将位置标记......
  • 861. 翻转矩阵后的得分
    题目描述给了一个二维矩阵,矩阵的元素不是0就是1你可以进行任意次操作,让某行或者某列进行翻转元素的得分是每一行二进制的和问怎么操作可以让总得分最大?f1贪心+计算增量基本分析为啥可以贪心?(1)对每行来说,首位肯定是1最好,遮掩某些行需要翻转,某些不翻;(2)对同一列来说,大家的优先......
  • 题目 1024: [编程入门]矩阵对角线求和
    求一个3×3矩阵对角线元素之和。 解题思路和注意事项: 这道题还是蛮简单,首先要求求一个矩阵的主副对角线的元素和,那肯定要用到的就是多维数组。        多维数组的形式应该为:array[i][j]; 知道这个后我们开始分析题目:        先是主对角线,就是从左上到......