详细内容请关注微信公众号:运筹优化与数据科学
ID: pomelo_tree_opt
Outline
-
Matrix的基本认识
-
Matrix与Data
-
Matrix的操作
-
Matrix的性质
--------------------------------
1. Matrix definition
我们之所以会分别从行向量和列向量的角度去看待矩阵A,是因为行向量和列向量有不同的几何意义。
==================================
2. Matrix与data
Matrix和data之间的关系,matrix用来表示data的时候,
-
是rectangular matrix多,还是square matrix多?
-
各有什么特点?
-
各有什么好处?
-
要怎么处理它们?
取决于具体应用。
---------------------------------------------
What’s the role of matrices in machine learning?
矩阵从data的角度,从machine learning的角度来理解,到底代表了什么东西?
----------------------------------------
Example 1 – record of objects in terms of features/characteristics specifying the objects.
1个record可以看作是1个vector, 很多record自然而言就是matrix的形式,不管是横着摆放,还是竖着摆放,而且大概率是个长的矩阵。
----------------------------------------
Example 2 – image of data
图片只要是画格子来表示,就是矩阵形式。
一张照片,比如黑白的,写成100*100,或者100*120的方格,如果是黑色的,就写1,否则就写0. 加颜色也可以,无非就是格子里的数字不同而已,彩色照片,最常见的256种颜色。这样一张照片就是一个矩阵。长的也可以,方的也可以。所以image data是最常常变成一个matrix来处理
声音数据也可以,例如电波数据进来,上上下下,把电波切成一截一截的,每一点都有个频率,结果形式就是矩阵形式。
所以,我们看到的、听到的,通通都可以变成matrix.
----------------------------------------
Example 3 – dynamics of a linear system
一个线性系统,一个系统就类似一个黑盒子,给定一组输入,得到一个输出,很多输入和很多输出之间就存在一个linear mapping, 线性映射或线性转变,比如把一个m维的vector转变成一个n维的vector, 需要一个m*n的变化(线性变换),这个线性变换就是一个matrix. 从这个角度看,matrix代表了linear transformation.
linear transformation
-
第一条是在说,两个向量先组合再线性转变,等价于两个向量先分别线性转变再组合起来。
-
第二条,矩阵的行列式不为0,意味着可逆,invertible,也就等价于linearly independent, 这种情况下从x到y的线性转变是一对一的,同构的同质的。其实是在说在一定条件下,这个转变,可以变过去,还可以变回来。
-
第三条,从向量x到向量y的线性转变,如果进一步分解的话,本质上是先对x做旋转,然后做伸缩,之后再做一个旋转。
---------------------------
Linear transformation的demo case
纠正一下,理解错了,这个feature map的映射操作,只是transform, 不是linear的,所以不是矩阵操作
========================
结论:
(1) 从静态的视角来看,一大堆数据排列起来,就是矩阵。尤其是像表格化的数据,一行一列的,是典型的matrix. 另外,figure的东西天生就适合用matrix来存储,在figure上画格子就行,甚至可以细到pixel的颗粒度,每个point上一个数字代表颜色即可。
(2) 从动态的角度来看,矩阵代表着linear transformation, 线性变化。给一个input,然后经过矩阵A的变化得到一个output. 而且这个变化的过程其实包含了3个步骤,先旋转,再伸缩,再旋转,这就意味着一个矩阵A其实包含三个操作。换句话说,就是说A可以分解成三个东西。
(3)矩阵的分解。一大堆数据写成一个矩阵,有可能这个矩阵超级大,像照片那种的按照像素来写,比如1000*5000。简单来说,数据越多,可能矩阵越大,存储和处理起来就越费劲。矩阵分解就是把这个大矩阵分解成一些小的、简单的矩阵,这样无论是存储还是处理都会容易很多。