<aside> 📖 定义
设问题中涉及一个因素A,有 k 个水平,以 $Y_{ij}$记第 i 个水平的第 j 个观察值,
模型为 $Y_{ij}=a_i+e_{ij},~j = 1,…,n_i,~i=1,…,k$
$a_i$ 表示水平$i$ 的理论平均值,称为水平$i$ 的效应
$E(e_{ij})=0$
总平方和
$SS=\sum_{i=1}^k\sum_{j=1}^{n_i}(Y_{ij}-\bar Y)^2$
因素$A$ 的平方和
$SS_A=SS-SS_e=\sum_{i=1}^{k}n_i(\bar Y_i - \bar Y)^2$
误差平方和
$SS_e=\sum_{i=1}^{k}\sum_{j=1}^{n_i}(Y_{ij}-\bar Y_i)^2$
方差分析
$SS = SS_A + SS_e$
</aside>
<aside> 📖 速算
计算前先做线性变化
<aside> 📖 检验
$H_0:a_1=a_2=…=a_k$
假定随机误差 $e_{ij}$ 满足正态分布 $N(0,\sigma^2)$
记 $MS_A=\frac{SS_A}{(k-1)},~MS_e=\frac{SS_e}{(n-k)}$,则当 $H_0$ 成立时,
$$ \frac{MS_A}{MS_e}\sim F(k-1,n-k) $$
</aside>
$SS$ | 自由度 | 偏差平方和/$MS$ | F值 | |
---|---|---|---|---|
A | $SS_A$ | $k-1$ | $MS_A$ | $MS_A/MS_e$ |
误差 | $SS_e$ | $n-k$ | $MS_e$ | $-$ |
总和 | $SS$ | $n-1$ | $-$ | $-$ |
<aside> 📖 定义
设问题中涉及两个因素A、B,分别有 k, l 个水平,以 $Y_{ij}$记组合 $(i,j)$ 的试验结果,
模型为 $Y_{ij}=\mu+a_i+b_j+e_{ij},~i=1,…,k, ~j = 1,…,l$
$E(e_{ij})=0$
$Y_{\cdot\cdot}=\sum_{i=1}^k\sum_{j=1}^l Y_{ij}/kl$
总平方和
$SS=\sum_{i=1}^k\sum_{j=1}^l(Y_{ij}-Y_{\cdot \cdot})^2$
因素$A$ 的平方和
$SS_A=l\sum_{i=1}^k(Y_{i\cdot}-Y_{\cdot\cdot})^2$
因素$B$ 的平方和
$SS_B=k\sum_{j=1}^l(Y_{\cdot j}-Y_{\cdot\cdot})^2$
误差平方和
$SS_e=\sum_{i=1}^k\sum_{j=1}^l(Y_{ij}-Y_{i \cdot}-Y_{\cdot j}+Y_{\cdot \cdot})^2$
方差分析
$SS = SS_A + SS_b + SS_e$
并非在任何模型中总平方和SS都有适当的分解,这要看没计如何
比方说,如在全部W个组合中少做了 1个(即有一个未观察),则分解式作不出来.
</aside>
$SS$ | 自由度 | 偏差平方和/$MS$ | F值 | |
---|---|---|---|---|
A | $SS_A$ | $k-1$ | $MS_A$ | $MS_A/MS_e$ |
B | $SS_B$ | $l-1$ | $MS_B$ | $MS_B/MS_e$ |
误差 | $SS_e$ | $(k-1)(l-1)$ | $MS_e$ | $-$ |
总和 | $SS$ | $kl-1$ | $-$ | $-$ |
<aside> 📖 主成分分析 (Principal components analysis,PCA)
现代数据分析中的标准工具,是一种简单的非参数方法,用于从混乱的数据集中提取相关信息。
无监督
</aside>
<aside> 💡 Prerequisites
<aside> 📖 奇异值分解 SVD, Singular Value Decomposition
任意 $m\times n$ 阶实矩阵 $A$ 均可被分解成 $U\Sigma V^T$ 的形式
其中:
$\Sigma$ 为对角矩阵扩展成的 $m\times n$ 矩阵,对角元素为降序排列的 $A$ 的特征值
$U$ 为 $m$ 阶正交矩阵,列向量分别为对应特征值所属的特征向量
$V^T$ 为 $n$ 阶正交矩阵,各列向量代表相应特征向量在 $A$ 的行方向上的分布情况
e.g. 水流中:不同时间点上不同流向的分布情况;
人脸识别中:一种面部特征在不同人脸上的表现情况
左奇异矩阵可以用于对行数的压缩
右奇异矩阵可以用于对列(即特征维度)的压缩 </aside>
<aside> 📖 散度矩阵 Scatter Matrix
对 $m\times n$ 矩阵 $X=[x_1,x_2,…,x_n]$
$$ S=\sum_{j}^n (x_j-\overline x)(x_j-\overline x)^T,\overline x=\frac1n\sum^n_{j=1}x_j $$
而协方差矩阵即为 $\frac 1{n-1}S$ (除n也可以)
特别地,当各 $\overline x=0$ 时,$S=XX^T$
$R = \frac{1}{m}XX^\mathsf{T}=\begin{pmatrix} \frac{1}{m}\sum_{i=1}^m{a_i^2} & \frac{1}{m}\sum_{i=1}^m{a_ib_i} \\ \frac{1}{m}\sum_{i=1}^m{a_ib_i} & \frac{1}{m}\sum_{i=1}^m{b_i^2} \end{pmatrix}$
</aside>
</aside>
<aside> 📖 基本原理
<aside> 📖 基于特征值分解协方差矩阵实现PCA算法
输入:数据集 $p\times n$ 矩阵 $X=[x_1,x_2,…,x_n]$,
$x_i=(x_{i1},…,x_{ip})^T,~i=1,2,…n,~n>p$,$n$ 个样本 $p$ 个特征
对样本阵做标准化变换:$z_{ij}=\frac {x_{ij}-\overline x_j}{s_j},~i=1,2,…,n;j=1,2,…,p$
得到标准化矩阵 $Z$ (只减去均值也可以)
计算得其相关系数矩阵 $R=\frac{ZZ^T}{n-1}$ ,因方差为1,此时等同协方差矩阵
计算出 $R$ 的特征向量与特征值,按 $\frac{\sum^{m}{j=1}}{\sum^{p}{j=1}}\geq 85\%$ 取前 $m$ 大的特征根,使信息利用率高于 $85\%$
将数据转换到由 $m$ 个特征向量作为基构建的新空间中
特征值的第 $i$ 大的基即为 第 $i$ 主成分 (PC$i$) </aside>
<aside> 📖 基于SVD协方差矩阵实现PCA算法
用SVD分解协方差矩阵实现PCA可以得到两个方向的PCA降维(可以分解非方阵)
</aside>
# Python实现PCA
import numpy as np
def pca(X, k): # k is the components you want
# mean of each feature
n_samples, n_features = X.shape
print(X.shape)
mean = np.array([np.mean(X[:, i]) for i in range(n_features)])
# normalization
norm_X = X - mean
# scatter matrix
scatter_matrix = np.dot(np.transpose(norm_X), norm_X)
# Calculate the eigenvectors and eigenvalues
eig_val, eig_vec = np.linalg.eig(scatter_matrix)
eig_pairs = [(np.abs(eig_val[i]), eig_vec[:, i]) for i in range(n_features)]
# sort eig_vec based on eig_val from highest to lowest
eig_pairs.sort(reverse=True)
# select the top k eig_vec
feature = np.array([ele[1] for ele in eig_pairs[:k]])
# get new data
data = np.dot(norm_X, np.transpose(feature))
return data
X = np.array([[-1, 1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
if __name__ == '__main__':
print(pca(X, 1))
<aside> 📖 线性判别分析, LDA
是一种找到最佳分离两个或多个类的变量的线性组合的方法
主要思想:最大化类间均值,最小化类内方差
有监督
</aside>
<aside> 💡 Prerequisites
<aside> 📖 类内散度矩阵 Within-class Scatter Matrix
$x_{ij} (𝑖=1,...,𝑘; j=1,...,𝑁_𝑖)$: $N_i (𝑖=1,...,𝑘)$ vectors from 𝑘 classes.
The class sample means are $\bar{x}{i}=\frac{1}{N{i}}\sum_{j=1}^{N_{i}}{x}_{ij}$.
$$ S_w = \sum_{i=1}^{k}\sum_{j=1}^{N_{i}}(\mathbf{x}{ij}-\mathbf{\bar{x}}{i})(\mathbf{x}{ij}-\mathbf{\bar{x}}{i})^{T} $$
</aside>
<aside> 📖 类间散度矩阵 Between-class Scatter Matrix
$x_{ij} (𝑖=1,...,𝑘; j=1,...,𝑁_𝑖)$: $N_i (𝑖=1,...,𝑘)$ vectors from 𝑘 classes.
$$ S_b = \sum_{i=1}^{k}N_{i}(\mathbf{\bar{x}}{i}-\mathbf{\bar{x}})(\mathbf{\bar{x}}{i}-\mathbf{\bar{x}})^{T} $$
</aside>
<aside> 📖 瑞利商 Rayleigh Quotient
$R(A,x)=\frac{x^HAx}{x^Hx}$,其中$A$ 为 $n\times n$ 的 Hermitan矩阵(共轭转置与原矩阵相等)
$$ \lambda_{min}\leq R(A,x) \leq \lambda_{max} $$
</aside>
</aside>