IDSS 复习笔记 | Vectors & Matrices

基于自己的理解做的IDSS (Introduction to Data Science and Systems) 课程内容整理。 本文主要内容来自课程课件 Lecture 2: Vectors and matrices (v20202021b)。侧重点是代码实现和理论的结合。

基本向量运算

标量乘法(Scalar multiplication)

\(a{\bf x} = [a x_1, a x_2, \dots a x_n]\), \(( \mathbb{R} , \mathbb{R}^n) \rightarrow \mathbb{R}^n\)

1
a * x

向量加法(Vector addition)

\({\bf x} + {\bf y} = [x_1 + y_1, x_2 + y_2, \dots x_d + y_d]\) , \((\mathbb{R}^n, \mathbb{R}^n) \rightarrow \mathbb{R}^n\)

1
x + y

向量距离——范数(Norm)

\(\|{\bf x}\|_p = \left(\sum_i x_i^p\right)^\frac{1}{p}\) , \(\mathbb{R}_n \rightarrow \mathbb{R}_{\geq 0}\)

1
np.linalg.norm(x, ord = p) #p = 1/2/np.inf/-np.inf etc.
p 名称 计算方法
2 欧几里得范数 (Euclidean norm) \(\| x\|_2 = \sqrt{x_0^2 + x_1^2 + x_2^2 + \dots + x_n^2 }\)
1 曼哈顿范数(Manhattan norm) \(\| x\|_1 = \sum_{i=1}^N |x_i|\)
0 Zero pseudo-norm; non-zero sum \(\|x\|_0 = \#(i|x_i) \neq 0\)
\(\infty\) Infinity norm; max norm \(\|x\|_\inf = \max_i |x_i|\)
\(-\infty\) Min norm \(\|x\|_{-\inf} = \min_i |x_i|\)

各种\(L_p\)范式在\(\mathbb{R}^2\)的距离等高线。第一行是标准范数,第二行是伪范数(pseudo-norms)。

  • 用不同范数求出来的距离对数据做归一化,得到的单位向量也不一样。(eg. \(L_2\)范数的单位向量总是落在单位球面上)

内积(Inner product):

\(\langle {\bf x} | {\bf y} \rangle\) or \({\bf x}\bullet{\bf y} = x_1 y_1 + x_2 y_2 + x_3 y_3 \dots x_d y_d\), \((\mathbb{R}^n, \mathbb{R}^n) \rightarrow \mathbb{R}\)

1
2
3
x @ y
np.dot(x,y)
np.inner(x,y)

  • np.dot()np.inner()用起来似乎没什么区别,简单查了下点积是算是内积的一种特殊情况吧。
  • 其实还是有一点区别的,比如二维矩阵运算中实际是np.dot(x, y)np.inner(x, y.T)的输出相同。

外积(Outer product)

\({\bf x} \otimes {\bf y} = {\bf x}^T {\bf y}\)

1
np.outer(x,y)

  • 三维空间中可以通过计算\({\bf x}\)\({\bf y}\)的外积得到垂直于\({\bf x},{\bf y}\)构成的平面的法向量\({\bf z}\)
  • 此条待完善

矩阵的线性运算

  • 单位矩阵: \(\text{Identity}= \begin{bmatrix} 1 & 0 \\ 0 & 1 \\ \end{bmatrix}\)
  • 均匀缩放: \(\text{Uniform scale}= \begin{bmatrix} 0.5 & 0 \\ 0 & 0.5 \\ \end{bmatrix}\)
  • 非均匀缩放: \(\text{Non-uniform scale}= \begin{bmatrix} 0.5 & 0 \\ 0 & 1 \\ \end{bmatrix}\) (仅在横向缩放了0.5)
  • 旋转矩阵: \(\text{Rotate } \theta= \begin{bmatrix} \cos\theta & \sin\theta \\ -\sin\theta & \cos\theta \\ \end{bmatrix}\)
  • 翻转矩阵: \(\text{Flip X} = \begin{bmatrix} -1 & 0 \\ 0 & 1 \\ \end{bmatrix}\)
  • 仿射变换矩阵: \(\text{Shear} = \begin{bmatrix} 0.2 & 0.8 \\ 0.6 & 0.4 \\ \end{bmatrix}\)
  • 旋转缩放矩阵: \(\text{Rotate then scale}=\begin{bmatrix} \cos\theta & \sin\theta \\ -\sin\theta & \cos\theta \\ \end{bmatrix} \bullet \begin{bmatrix} 0.5 & 0 \\ 0 & 1 \\ \end{bmatrix}\)
  • 缩放旋转矩阵: \(\text{Scale then rotate}=\begin{bmatrix} 0.5 & 0 \\ 0 & 1 \\ \end{bmatrix} \bullet \begin{bmatrix} \cos\theta & \sin\theta \\ -\sin\theta & \cos\theta \\ \end{bmatrix}\) (注意这两个是不一样的)

基本统计量

均值(Mean)

\(\text{mean}({\bf x_1}, {\bf x_2}, \dots, {\bf x_n}) = \frac{1}{N} \sum_i {\bf x_i}\)

1
np.mean(X, axis=0)  #axis=0 纵向求均值,得到cols个元素。axis=1 横向求均值,得到rows个元素。
  • 通常通过减去均值的方法对数据集做中心化处理。

方差(Variance)

\(\sigma^2 = \frac{1}{N-1} \sum_{i=0}^{N-1} (x_i - \mu_i)^2\), \(\mu\)是均值。

1
2
3
4
mu = np.mean(x)
variance = np.sum((x - mu)**2) / (len(x))

np.var(x)

协方差矩阵(Covariance matrices)

将方差推广到多维情况下: \(\Sigma_{ij} = \frac{1}{N-1} \sum_{k=1}^{N} (X_{ki}-\mu_i)(X_{kj}-\mu_j)\)

1
2
3
4
mu = np.mean(x, axis=0)
sigma_cross = ((x - mu).T @ (x - mu)) / (x.shape[0]-1)

np.cov(x, rowvar=False)#传入的数据每一行代表一个样本,列代表维度。

1
2
3
4
mu = np.mean(x, axis=1)
sigma_cross = ((x.T - mu).T @ (x.T - mu))/ (x.shape[1]-1)

np.cov(x, rowvar=True)#传入的数据每一列代表一个样本,行代表维度。
  • 协方差矩阵是正方形、对称的半正定矩阵(positive semi-definite)。
  • 协方差矩阵的形状与维度的选择有关。\(x \in \mathbb{R}^{n \times m}\)以每行为样本,得到的协方差矩阵是\(\mathbb{R}^{m \times m}\)
  • 此条待完善(协方差椭圆)

特殊矩阵的初始化方法

  • 对角矩阵: np.diag([1,2,3]\(\rightarrow \begin{bmatrix} 1 & 0 & 0 \\ 0 & 2 & 0 \\ 0 & 0 & 3 \\ \end{bmatrix}\)
  • 反对角矩阵: np.fliplr(np.diag([1,2,3]))\(\rightarrow \begin{bmatrix} 0 & 0 & 1 \\ 0 & 2 & 0 \\ 3 & 0 & 0 \\ \end{bmatrix}\)
  • 单位矩阵: np.eye(3)\(\rightarrow \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix}\)
  • 零矩阵: np.zero((3,3))\(\rightarrow \begin{bmatrix} 0 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \\ \end{bmatrix}\)
  • 上三角矩阵:np.tri(3)\(\rightarrow \begin{bmatrix} 1 & 1 & 1 \\ 0 & 1 & 1 \\ 0 & 0 & 1 \\ \end{bmatrix}\)
  • 下三角矩阵:np.tri(3).T\(\rightarrow \begin{bmatrix} 1 & 0 & 0 \\ 1 & 1 & 0 \\ 1 & 1 & 1 \\ \end{bmatrix}\)