线性代数|机器学习-P2 A的列向量空间

2024-06-02 09:04

本文主要是介绍线性代数|机器学习-P2 A的列向量空间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. Ax矩阵的形式
  • 2. A=CR 矩阵分解
    • 2.1 rank=1 矩阵分解
    • 2.2 rank=2 矩阵分解
    • 2.3 A=CMR,求M
  • 3. Ax 向量

1. Ax矩阵的形式

假设我们有如下矩阵A:
A x = [ 2 1 3 3 1 4 5 7 12 ] [ x 1 x 2 x 3 ] \begin{equation} Ax=\begin{bmatrix} 2&1&3\\\\ 3&1&4\\\\ 5&7&12 \end{bmatrix}\begin{bmatrix}x_1\\\\x_2\\\\x_3\end{bmatrix} \end{equation} Ax= 2351173412 x1x2x3

  • 从行角度计算如下:
    A x = [ 2 1 3 ] [ x 1 x 2 x 3 ] + [ 3 1 4 ] [ x 1 x 2 x 3 ] + [ 5 7 12 ] [ x 1 x 2 x 3 ] \begin{equation} Ax=\begin{bmatrix} 2&1&3 \end{bmatrix}\begin{bmatrix}x_1\\\\x_2\\\\x_3\end{bmatrix}+\begin{bmatrix} 3&1&4 \end{bmatrix}\begin{bmatrix}x_1\\\\x_2\\\\x_3\end{bmatrix}+\begin{bmatrix} 5&7&12 \end{bmatrix}\begin{bmatrix}x_1\\\\x_2\\\\x_3\end{bmatrix} \end{equation} Ax=[213] x1x2x3 +[314] x1x2x3 +[5712] x1x2x3
    这是我们常规的思路,但是有一个问题,现在是 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3三个变量,可以用三维空间想象画图等,但是当我们有 x 1 , x 2 , x 3 , x 4 , x 5 x_1,x_2,x_3,x_4,x_5 x1,x2,x3,x4,x5的时候,我们就无法想到5维度空间,所以我们在矩阵相乘的过程中用到行向量空间的角度思考是低端的思维思路。所以我们提出了列向量的角度
  • 从列角度计算如下:
    A x = x 1 [ 2 3 5 ] + x 2 [ 1 1 7 ] + x 3 [ 3 4 12 ] \begin{equation} Ax=x_1\begin{bmatrix} 2\\\\ 3\\\\ 5 \end{bmatrix}+x_2\begin{bmatrix} 1\\\\ 1\\\\ 7 \end{bmatrix}+x_3\begin{bmatrix} 3\\\\ 4\\\\ 12 \end{bmatrix} \end{equation} Ax=x1 235 +x2 117 +x3 3412
    v 1 = x 1 [ 2 3 5 ] , v 2 = x 2 [ 1 1 7 ] ; v 3 = x 3 [ 3 4 12 ] ; A x = v 1 + v 2 + v 3 \begin{equation} v_1=x_1\begin{bmatrix} 2\\\\ 3\\\\ 5 \end{bmatrix},v_2=x_2\begin{bmatrix} 1\\\\ 1\\\\ 7 \end{bmatrix};v_3=x_3\begin{bmatrix} 3\\\\ 4\\\\ 12 \end{bmatrix};Ax=v_1+v_2+v_3 \end{equation} v1=x1 235 ,v2=x2 117 ;v3=x3 3412 ;Ax=v1+v2+v3

这样可以看出,对于Ax=b来说,矩阵b就是A的列向量的线性组合,这样及时再加几个列向量,我们可以用向量的形式表示,我们处理起来也非常的方便。通过列乘以行的方式是一种更高级的矩阵理解方式。
在这里插入图片描述

  • 小结:
    所以对于矩阵A和向量x相乘得到的结果Ax可以看做是对于矩阵A的列向量的线性组合后得到的向量,那么这个向量也一定在A的列空间中。假设我们x是随机的,那么我们可以得到矩阵A的整个列空间。

2. A=CR 矩阵分解

2.1 rank=1 矩阵分解

假设我们有矩阵A表示如下,我们希望将矩阵分解成为列向量和行向量的组合。
A = [ 1 3 8 1 3 8 1 3 8 ] \begin{equation} A=\begin{bmatrix} 1&3&8\\\\ 1&3&8\\\\ 1&3&8 \end{bmatrix} \end{equation} A= 111333888

  • 将矩阵A的第一列拿出来。 v 1 = [ 1 1 1 ] v_1=\begin{bmatrix}1\\\\1\\\\1\end{bmatrix} v1= 111
  • 将矩阵A的第二列拿出来,发现与第二列,第三列线性相关,所以停止拿出来,说以只有一列
    ,最终得到如下分解矩阵
    A = [ 1 1 1 ] [ 1 3 8 ] \begin{equation} A=\begin{bmatrix} 1\\\\1\\\\1 \end{bmatrix}\begin{bmatrix} 1&3&8 \end{bmatrix} \end{equation} A= 111 [138]

2.2 rank=2 矩阵分解

我们有如下矩阵A,将矩阵A进行分解,得到A=CR:
A = [ 2 1 3 3 1 4 5 7 12 ] \begin{equation} A=\begin{bmatrix} 2&1&3\\\\ 3&1&4\\\\ 5&7&12 \end{bmatrix} \end{equation} A= 2351173412

  • 第一步,我们先取矩阵A的第一列, v 1 = [ 2 , 3 , 5 ] T v_1=[2,3,5]^T v1=[2,3,5]T非零,那么就把 v 1 v_1 v1放到列空间中
  • 第二步,我们再取矩阵A的第二列,发现 v 1 T v 2 ≠ 0 v_1^Tv_2\neq0 v1Tv2=0,那么就把 v 2 v_2 v2放到列空间中
  • 第三步,我们再取矩阵A的第三列,发现 v 1 + v 2 = v 3 v_1+v_2=v_3 v1+v2=v3,那么 v 3 v_3 v3就抛弃,这样就形成了列满秩的矩阵C
    C = [ 2 1 3 1 5 7 ] \begin{equation} C=\begin{bmatrix} 2&1\\\\ 3&1\\\\ 5&7 \end{bmatrix} \end{equation} C= 235117
  • 第四步,我们通过矩阵的大小可得矩阵R为2行3列,那么可以发现,矩阵A的第一列为C的第一列,那么可以得到矩阵C的第一列为 c 1 = [ 1 , 0 ] T c_1=[1, 0]^T c1=[1,0]T
  • 第五步,同理可得矩阵A的第二列为矩阵C的第二列,那么 c 2 = [ 0 , 1 ] T c_2=[0, 1]^T c2=[0,1]T
  • 第六步,我们知道矩阵A的第三列为矩阵C的第一列和第二列之和,那么可得 c 3 = [ 1 , 1 ] T c_3=[1, 1]^T c3=[1,1]T
  • 第七步,综上可得方程A=CR表示如下:
    A = C R ⇒ [ 2 1 3 3 1 4 5 7 12 ] = [ 2 1 3 1 5 7 ] [ 1 0 1 0 1 1 ] \begin{equation} A=CR\Rightarrow\begin{bmatrix} 2&1&3\\\\ 3&1&4\\\\ 5&7&12 \end{bmatrix}=\begin{bmatrix} 2&1\\\\ 3&1\\\\ 5&7 \end{bmatrix}\begin{bmatrix} 1&0&1\\\\ 0&1&1 \end{bmatrix} \end{equation} A=CR 2351173412 = 235117 100111
  • 我们再行分解,可得
    [ 2 1 3 ] = 2 [ 1 0 1 ] + 1 [ 0 1 1 ] \begin{equation} \begin{bmatrix}2&1&3\end{bmatrix}=2\begin{bmatrix}1&0&1\end{bmatrix}+1\begin{bmatrix}0&1&1\end{bmatrix} \end{equation} [213]=2[101]+1[011]
    [ 3 1 4 ] = 3 [ 1 0 1 ] + 1 [ 0 1 1 ] \begin{equation} \begin{bmatrix}3&1&4\end{bmatrix}=3\begin{bmatrix}1&0&1\end{bmatrix}+1\begin{bmatrix}0&1&1\end{bmatrix} \end{equation} [314]=3[101]+1[011]
    [ 5 7 12 ] = 5 [ 1 0 1 ] + 7 [ 0 1 1 ] \begin{equation} \begin{bmatrix}5&7&12\end{bmatrix}=5\begin{bmatrix}1&0&1\end{bmatrix}+7\begin{bmatrix}0&1&1\end{bmatrix} \end{equation} [5712]=5[101]+7[011]
  • 那么可以得到如下:
    [ 2 1 3 3 1 4 ] = [ 2 1 3 1 ] [ 1 0 1 0 1 1 ] ⇒ [ 1 0 1 0 1 1 ] = [ − 1 1 3 − 2 ] [ 2 1 3 3 1 4 ] \begin{equation} \begin{bmatrix} 2&1&3\\\\ 3&1&4 \end{bmatrix}=\begin{bmatrix} 2&1\\\\ 3&1 \end{bmatrix}\begin{bmatrix} 1&0&1\\\\ 0&1&1 \end{bmatrix}\Rightarrow \begin{bmatrix} 1&0&1\\\\ 0&1&1 \end{bmatrix}=\begin{bmatrix} -1&1\\\\ 3&-2 \end{bmatrix}\begin{bmatrix} 2&1&3\\\\ 3&1&4 \end{bmatrix} \end{equation} 231134 = 2311 100111 100111 = 1312 231134
  • 那么A=CR公式可以整理为A=CMR公式
    A = C M R ⇒ [ 2 1 3 3 1 4 5 7 12 ] = [ 2 1 3 1 5 7 ] [ − 1 1 3 − 2 ] [ 2 1 3 3 1 4 ] \begin{equation} A=CMR\Rightarrow\begin{bmatrix} 2&1&3\\\\ 3&1&4\\\\ 5&7&12 \end{bmatrix}=\begin{bmatrix} 2&1\\\\ 3&1\\\\ 5&7 \end{bmatrix}\begin{bmatrix} -1&1\\\\ 3&-2 \end{bmatrix}\begin{bmatrix} 2&1&3\\\\ 3&1&4 \end{bmatrix} \end{equation} A=CMR 2351173412 = 235117 1312 231134
  • 小结: 这样做的好处是C,M,R均是满秩矩阵,这样我们可以对矩阵A进行进一步分解,真是神奇的思路,解决了SVD奇异值分解中 Σ \Sigma Σ矩阵无法满秩的情况,而且CR均是来自原始矩阵A的列向量(列满秩)和行向量(行满秩)。真是太神奇了。

2.3 A=CMR,求M

当我们知道 A=CMR, 那么如何求快速的求得M呢?
A = C M R → C T A R T = ( C T C ) M ( R R T ) → M = ( C T C ) − 1 ( C T A R T ) ( R R T ) − 1 \begin{equation} A=CMR\rightarrow C^TAR^T=(C^TC)M(RR^T)\rightarrow M=(C^TC)^{-1}(C^TAR^T)(RR^T)^{-1} \end{equation} A=CMRCTART=(CTC)M(RRT)M=(CTC)1(CTART)(RRT)1

3. Ax 向量

假设x是一个随机的列向量,如果我们给了100个随机的x,那么我们可以通过Ax来得到一系列的列向量空间,这个列向量空间也会随着x的增多而和A的列空间相似,这个就是随机采样的思路。

这篇关于线性代数|机器学习-P2 A的列向量空间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1023533

相关文章

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

Linux环境变量&&进程地址空间详解

《Linux环境变量&&进程地址空间详解》本文介绍了Linux环境变量、命令行参数、进程地址空间以及Linux内核进程调度队列的相关知识,环境变量是系统运行环境的参数,命令行参数用于传递给程序的参数,... 目录一、初步认识环境变量1.1常见的环境变量1.2环境变量的基本概念二、命令行参数2.1通过命令编程

numpy求解线性代数相关问题

《numpy求解线性代数相关问题》本文主要介绍了numpy求解线性代数相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 在numpy中有numpy.array类型和numpy.mat类型,前者是数组类型,后者是矩阵类型。数组

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss