问题引入
已知一个样本存在两个属性,根据属性的不同可以分为三个类别,现需要依据下面的训练集,给出某样本的属性值判断该样本属于下面的哪一个类别。
属性1 | 属性2 | 类别 |
---|---|---|
4 | 2 | 1 |
2 | 4 | 1 |
2 | 3 | 1 |
3 | 6 | 1 |
4 | 4 | 1 |
9 | 10 | 0 |
6 | 8 | 0 |
9 | 5 | 0 |
8 | 7 | 0 |
10 | 8 | 0 |
符号说明
n n n表示列属性的个数。
x i \textbf{x}_i xi为nx1的列向量,在表格中代表一个不包括类别属性的行。
c = 0 , 1 , ⋯ , k , ⋯ c={0,1,\cdots,k,\cdots} c=0,1,⋯,k,⋯表示类别的集合,对应上述表格中的0、1。
m k m^k mk表示类别为c的样本总个数。
X k \textbf{X}^k Xk表示类别k组成的矩阵,大小为 m k × n m^k\times{n} mk×n。
x i k , k ∈ c \textbf{x}_i^k,k\in{c} xik,k∈c为nx1列向量,在表格中表示类别为k的属性行。
m = ∑ k ∈ c m k m=\sum_{k\in{c}}{m^k} m=∑k∈cmk表示所有样本数。
θ \theta θ表示位于直线 l l l上的nx1的单位列向量。
基本思想
之前我们讲过logistic回归进行分类,现在我们要以一种新的方式LDA进行分类,LDA常常用于二分类问题以及多分类的降维处理,本篇文章先讲解关于二分类的问题。
由于两类数据过于繁多,导致无法直接对数据属于哪一类进行判断,LDA的基本思想是对于两类数据,想办法将两类数据映射到一条合适的直线上,此时只需要找到直线上一个可以将两类数据分开到两边的点,就可以直观且简便地判断某个样本数据属于哪一类了。
但并不是所有直线都可以找到这个分界点,如下图所示,紫色与红色分别代表两类数据,左侧将两类数据的一部分映射到一起了显然增加了判断难度,右侧可以找到一个蓝色的点将两类数据区分开来,相对于左侧图像而言,右侧映射到直线的数据,具有类内尽可能聚集,不同类数据尽可能分散的特点,如何利用数学公式去描述这种特点,就是Linear Discriminant Analysis(LDA)的任务了。
推导过程
首先需要理解映射的概念,具体内容在PCA降维的投影部分中讲解过,简单来说,若单位向量 θ \theta θ是直线 l l l上的单位向量,那么样本数据 x i \textbf{x}_i xi在直线 l l l上的投影距离为 θ T x i \theta^T\textbf{x}_i θTxi。
类别k的样本平均向量为
u k = 1 m k ∑ i = 1 m k x i , k ∈ c (1) \textbf{u}^{k}=\frac{1}{m^k}\sum_{i=1}^{m^k}\textbf{x}_i,k\in{c}\tag{1} uk=mk1i=1∑mkxi,k∈c(1)
基本思想中说类内距离尽可能小,描述类内距离的方式千千万,让所有样本向量向平均向量聚集却不失为一种好的策略,那么类别k中的样本向量 x i k \textbf{x}_i^k xik在映射到直线 l l l之后,与平均向量之间的距离(注意该距离不是欧式距离)可以表示为
∑ i = 1 m k ( θ T x i k − θ T u k ) 2 \sum_{i=1}^{m^k}(\theta^T\textbf{x}_i^k-\theta{^T}\textbf{u}^k)^2 i=1∑mk(θTxik−θTuk)2
所有类别的距离和为
∑ k ∈ c ∑ i = 1 m k ( θ T x i k − θ T u k ) 2 \sum_{k\in{c}}\sum_{i=1}^{m^k}(\theta^T\textbf{x}_i^k-\theta{^T}\textbf{u}^k)^2 k∈c∑i=1∑mk(θTxik−θTuk)2
这就表示我们在基本思想中提到过的类内距离和。
全局最小并不代表每一类中都是最小的,即便存在某条直线