一.高斯判别分析
高斯判别分析(Gaussian Discriminant Analysis, GDA)是一种统计分类方法,用于根据输入特征将数据点分配到不同的类别中。它假设每个类别的数据服从多元高斯分布,并通过最大化似然估计来确定模型参数。GDA 是一种生成模型,它不仅建模了每个类别的条件概率分布,还建模了类别的先验概率。
基本原理
- 假设 :对于每个类别 y y y,特征 x x x 服从一个多元高斯分布。
p ( x ∣ y = k ) = 1 ( 2 π ) n / 2 ∣ Σ k ∣ 1 / 2 exp ( − 1 2 ( x − μ k ) T Σ k − 1 ( x − μ k ) ) p(x|y=k) = \frac{1}{(2\pi)^{n/2} |\Sigma_k|^{1/2}} \exp \left( -\frac{1}{2} (x - \mu_k)^T \Sigma_k^{-1} (x - \mu_k) \right) p(x∣y=k)=(2π)n/2∣Σk∣1/21exp(−21(x−μk)TΣk−1(x−μk))
其中 μ k \mu_k μk 是类别 k k k 的均值向量, Σ k \Sigma_k Σk 是类别 k k k 的协方差矩阵,n是特征维度。
-
先验概率 :类别 y y y 的先验概率 p ( y = k ) p(y=k) p(y=k) 可以通过训练数据中的类别频率估计。
-
联合概率 :利用贝叶斯定理,计算后验概率 p ( y = k ∣ x ) p(y=k|x) p(y=k∣x)。
p ( y = k ∣ x ) = p ( x ∣ y = k ) p ( y = k ) p ( x ) p(y=k|x) = \frac{p(x|y=k) p(y=k)}{p(x)} p(y=k∣x)=p(x)p(x∣y=k)p(y=k)
其中 p ( x ) p(x) p(x) 是所有类别的联合概率的总和。
为了简化决策过程,我们引入了判别函数 f c ( x ) f_c(x) fc(x),它是 P ( Y = c ∣ x ) P(Y = c \mid x) P(Y=c∣x) 的对数变换。
决策边界:最后,我们使用判别函数来确定决策边界。对于一个二分类问题,如果 f 1 ( x ) > f 2 ( x ) f_1(x) > f_2(x) f1(x)>f2(x),则我们将 α \alpha α 分配给类别 1;否则,将其分配给类别 2。
我们可以通过一个具体的例子来更好地理解高斯判别分析(GDA)。假设我们想要根据花瓣的长度和宽度来分类鸢尾花的数据集(Iris dataset),将花分为三种类别:Setosa、Versicolor 和 Virginica。
数据准备
假设我们有以下训练数据(为了简化,只列出少量数据):
花瓣长度 (cm) | 花瓣宽度 (cm) | 类别 |
---|---|---|
1.4 | 0.2 | Setosa |
1.3 | 0.2 | Setosa |
4.7 | 1.4 | Versicolor |
4.5 | 1.5 | Versicolor |
5.1 | 1.8 | Virginica |
5.9 | 2.3 | Virginica |
步骤 1:计算均值向量
对于每个类别,计算花瓣长度和宽度的均值。
- Setosa:
μ Setosa = ( 1.4 + 1.3 2 , 0.2 + 0.2 2 ) = ( 1.35 , 0.2 ) \mu_{\text{Setosa}} = \left( \frac{1.4 + 1.3}{2}, \frac{0.2 + 0.2}{2} \right) = (1.35, 0.2) μSetosa=(21.4+1.3,20.2+0.2)=(1.35,0.2)
- Versicolor:
μ Versicolor = ( 4.7 + 4.5 2 , 1.4 + 1.5 2 ) = ( 4.6 , 1.45 ) \mu_{\text{Versicolor}} = \left( \frac{4.7 + 4.5}{2}, \frac{1.4 + 1.5}{2} \right) = (4.6, 1.45) μVersicolor=(24.7+4.5,21.4+1.5)=(4.6,1.45)
- Virginica:
μ Virginica = ( 5.1 + 5.9 2 , 1.8 + 2.3 2 ) = ( 5.5 , 2.05 ) \mu_{\text{Virginica}} = \left( \frac{5.1 + 5.9}{2}, \frac{1.8 + 2.3}{2} \right) = (5.5, 2.05) μVirginica=(25.1+5.9,21.8+2.3)=(5.5,2.05)
步骤 2:计算协方差矩阵
对于每个类别,计算协方差矩阵。
- Setosa:
Σ Setosa = 1 2 − 1 ( [ 1.4 0.2 ] − [ 1.35 0.2 ] ) ( [ 1.4 0.2 ] − [ 1.35 0.2 ] ) T + 1 2 − 1 ( [ 1.3 0.2 ] − [ 1.35 0.2 ] ) ( [ 1.3 0.2 ] − [ 1.35 0.2 ] ) T \Sigma_{\text{Setosa}} = \frac{1}{2-1} \left( \begin{bmatrix} 1.4 \\ 0.2 \end{bmatrix} - \begin{bmatrix} 1.35 \\ 0.2 \end{bmatrix} \right) \left( \begin{bmatrix} 1.4 \\ 0.2 \end{bmatrix} - \begin{bmatrix} 1.35 \\ 0.2 \end{bmatrix} \right)^T + \frac{1}{2-1} \left( \begin{bmatrix} 1.3 \\ 0.2 \end{bmatrix} - \begin{bmatrix} 1.35 \\ 0.2 \end{bmatrix} \right) \left( \begin{bmatrix} 1.3 \\ 0.2 \end{bmatrix} - \begin{bmatrix} 1.35 \\ 0.2 \end{bmatrix} \right)^T ΣSetosa=2−11([1.40.2]−[1.350.2])([1.40.2]−[1.350.2])T+2−11([1.30.2]−[1.350.2])([1.30.2]−[1.350.2])T
计算结果为:
Σ Setosa = [ 0.005 0 0 0 ] \Sigma_{\text{Setosa}} = \begin{bmatrix} 0.005 & 0 \\ 0 & 0 \end{bmatrix} ΣSetosa=[0.005000]
- Versicolor:
Σ Versicolor = [ 0.01 − 0.005 − 0.005 0.005 ] \Sigma_{\text{Versicolor}} = \begin{bmatrix} 0.01 & -0.005 \\ -0.005 & 0.005 \end{bmatrix} ΣVersicolor=[0.01−0.005−0.0050.005]
- Virginica:
Σ Virginica = [ 0.16 0.125 0.125 0.125 ] \Sigma_{\text{Virginica}} = \begin{bmatrix} 0.16 & 0.125 \\ 0.125 & 0.125 \end{bmatrix} ΣVirginica=[0.160.1250.1250.125]
步骤 3:计算先验概率
假设训练数据中每个类别的样本数量相等,则每个类别的先验概率 p ( y = k ) p(y=k) p(y=k) 为 1 3 \frac{1}{3} 31。
步骤 4:判别规则
对于一个新的样本 x = ( 4.6 , 1.5 ) x = (4.6, 1.5) x=(4.6,1.5),计算每个类别的后验概率 p ( y = k ∣ x ) p(y=k|x) p(y=k∣x),然后选择后验概率最大的类别作为预测结果。
- Setosa:
p ( x ∣ y = Setosa ) ≈ 0 (由于协方差矩阵几乎为零) p(x|y=\text{Setosa}) \approx 0 \quad \text{(由于协方差矩阵几乎为零)} p(x∣y=Setosa)≈0(由于协方差矩阵几乎为零)
- Versicolor:
p ( x ∣ y = Versicolor ) = 1 ( 2 π ) ∣ Σ Versicolor ∣ 1 / 2 exp ( − 1 2 ( x − μ Versicolor ) T Σ Versicolor − 1 ( x − μ Versicolor ) ) p(x|y=\text{Versicolor}) = \frac{1}{(2\pi) |\Sigma_{\text{Versicolor}}|^{1/2}} \exp \left( -\frac{1}{2} (x - \mu_{\text{Versicolor}})^T \Sigma_{\text{Versicolor}}^{-1} (x - \mu_{\text{Versicolor}}) \right) p(x∣y=Versicolor)=(2π)∣ΣVersicolor∣1/21exp(−21(x−μVersicolor)TΣVersicolor−1(x−μVersicolor))
- Virginica:
p ( x ∣ y = Virginica ) = 1 ( 2 π ) ∣ Σ Virginica ∣ 1 / 2 exp ( − 1 2 ( x − μ Virginica ) T Σ Virginica − 1 ( x − μ Virginica ) ) p(x|y=\text{Virginica}) = \frac{1}{(2\pi) |\Sigma_{\text{Virginica}}|^{1/2}} \exp \left( -\frac{1}{2} (x - \mu_{\text{Virginica}})^T \Sigma_{\text{Virginica}}^{-1} (x - \mu_{\text{Virginica}}) \right) p(x∣y=Virginica)=(2π)∣ΣVirginica∣1/21exp(−21(x−μVirginica)TΣVirginica−1(x−μVirginica))
通过计算后验概率,发现 Versicolor 的后验概率最大,因此我们将样本 x = ( 4.6 , 1.5 ) x = (4.6, 1.5) x=(4.6,1.5) 分类为 Versicolor。
总结
通过这个例子,我们展示了如何利用高斯判别分析来分类数据。尽管实际应用中数据和计算会更复杂,但基本步骤是相同的:计算均值向量和协方差矩阵,估计先验概率,然后利用贝叶斯定理进行分类。
另一个例子
设以下两个类别具有正态概率密度函数,并用样本
类别 1: ( 0 , 0 ) T , ( 2 , 0 ) T , ( 2 , 2 ) T , ( 0 , 2 ) T (0, 0)^T, (2, 0)^T, (2, 2)^T, (0, 2)^T (0,0)T,(2,0)T,(2,2)T,(0,2)T
类别 2: ( 4 , 4 ) T , ( 6 , 4 ) T , ( 6 , 6 ) T , ( 4 , 6 ) T (4, 4)^T, (6, 4)^T, (6, 6)^T, (4, 6)^T (4,4)T,(6,4)T,(6,6)T,(4,6)T
(1) 求这两类模式之间的贝叶斯判别界面的方程式。
答:
μ ^ 1 = 1 4 ( ( 0 0 ) + ( 2 0 ) + ( 2 2 ) + ( 0 2 ) ) = ( 1 1 ) \hat{\mu}_1 = \frac{1}{4}\left(\begin{pmatrix} 0 \\ 0 \end{pmatrix} + \begin{pmatrix} 2 \\ 0 \end{pmatrix} + \begin{pmatrix} 2 \\ 2 \end{pmatrix} + \begin{pmatrix} 0 \\ 2 \end{pmatrix}\right) = \begin{pmatrix} 1 \\ 1 \end{pmatrix} μ^1=41((00)+(20)+(22)+(02))=(11)
μ ^ 2 = 1 4 ( ( 4 4 ) + ( 6 4 ) + ( 6 6 ) + ( 4 6 ) ) = ( 5 5 ) \hat{\mu}_2 = \frac{1}{4}\left(\begin{pmatrix} 4 \\ 4 \end{pmatrix} + \begin{pmatrix} 6 \\ 4 \end{pmatrix} + \begin{pmatrix} 6 \\ 6 \end{pmatrix} + \begin{pmatrix} 4 \\ 6 \end{pmatrix}\right) = \begin{pmatrix} 5 \\ 5 \end{pmatrix} μ^2=41((44)+(64)+(66)+(46))=(55)
Σ ^ 1 = 1 4 [ ( ( 0 0 ) − ( 1 1 ) ) ( ( 0 0 ) − ( 1 1 ) ) T + ( ( 2 0 ) − ( 1 1 ) ) ( ( 2 0 ) − ( 1 1 ) ) T + ... + ( ( 0 2 ) − ( 1 1 ) ) ( ( 0 2 ) − ( 1 1 ) ) T ] \hat{\Sigma}_1 = \frac{1}{4}\left[(\begin{pmatrix} 0 \\ 0 \end{pmatrix} - \begin{pmatrix} 1 \\ 1 \end{pmatrix})(\begin{pmatrix} 0 \\ 0 \end{pmatrix} - \begin{pmatrix} 1 \\ 1 \end{pmatrix})^T + (\begin{pmatrix} 2 \\ 0 \end{pmatrix} - \begin{pmatrix} 1 \\ 1 \end{pmatrix})(\begin{pmatrix} 2 \\ 0 \end{pmatrix} - \begin{pmatrix} 1 \\ 1 \end{pmatrix})^T + \ldots + (\begin{pmatrix} 0 \\ 2 \end{pmatrix} - \begin{pmatrix} 1 \\ 1 \end{pmatrix})(\begin{pmatrix} 0 \\ 2 \end{pmatrix} - \begin{pmatrix} 1 \\ 1 \end{pmatrix})^T\right] Σ^1=41[((00)−(11))((00)−(11))T+((20)−(11))((20)−(11))T+...+((02)−(11))((02)−(11))T]
Σ ^ 2 = 1 4 [ ( ( 4 4 ) − ( 5 5 ) ) ( ( 4 4 ) − ( 5 5 ) ) T + ... + ( ( 4 6 ) − ( 5 5 ) ) ( ( 4 6 ) − ( 5 5 ) ) T ] \hat{\Sigma}_2 = \frac{1}{4}\left[(\begin{pmatrix} 4 \\ 4 \end{pmatrix} - \begin{pmatrix} 5 \\ 5 \end{pmatrix})(\begin{pmatrix} 4 \\ 4 \end{pmatrix} - \begin{pmatrix} 5 \\ 5 \end{pmatrix})^T + \ldots + (\begin{pmatrix} 4 \\ 6 \end{pmatrix} - \begin{pmatrix} 5 \\ 5 \end{pmatrix})(\begin{pmatrix} 4 \\ 6 \end{pmatrix} - \begin{pmatrix} 5 \\ 5 \end{pmatrix})^T\right] Σ^2=41[((44)−(55))((44)−(55))T+...+((46)−(55))((46)−(55))T]
Σ ^ 1 = Σ ^ 2 = [ 1 0 0 1 ] = Σ , 所以 Σ − 1 = [ 1 0 0 1 ] \hat{\Sigma}_1 = \hat{\Sigma}_2 = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} = \Sigma, \quad \text{所以} \quad \Sigma^{-1} = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} Σ^1=Σ^2=[1001]=Σ,所以Σ−1=[1001]
所以判别函数为 x = ( x 1 x 2 ) x = \begin{pmatrix} x_1 \\ x_2 \end{pmatrix} x=(x1x2) 的线性函数:
d 1 ( x ) − d 2 ( x ) = ( μ 1 T − μ 2 T ) Σ − 1 x − 1 2 μ 1 T Σ − 1 μ 1 + 1 2 μ 2 T Σ − 1 μ 2 d_1(x) - d_2(x) = (\mu_1^T - \mu_2^T)\Sigma^{-1}x - \frac{1}{2}\mu_1^T\Sigma^{-1}\mu_1 + \frac{1}{2}\mu_2^T\Sigma^{-1}\mu_2 d1(x)−d2(x)=(μ1T−μ2T)Σ−1x−21μ1TΣ−1μ1+21μ2TΣ−1μ2
= ( 1 − 5 , 1 − 5 ) [ 1 0 0 1 ] ( x 1 x 2 ) − 1 2 ( 1 , 1 ) [ 1 0 0 1 ] ( 1 1 ) + 1 2 ( 5 , 5 ) [ 1 0 0 1 ] ( 5 5 ) = (1-5, 1-5)\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}\begin{pmatrix} x_1 \\ x_2 \end{pmatrix} - \frac{1}{2}(1, 1)\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}\begin{pmatrix} 1 \\ 1 \end{pmatrix} + \frac{1}{2}(5, 5)\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}\begin{pmatrix} 5 \\ 5 \end{pmatrix} =(1−5,1−5)[1001](x1x2)−21(1,1)[1001](11)+21(5,5)[1001](55)
= ( − 4 , − 4 ) ( x 1 x 2 ) − 1 + 25 = (-4, -4)\begin{pmatrix} x_1 \\ x_2 \end{pmatrix} - 1 + 25 =(−4,−4)(x1x2)−1+25
= − 4 x 1 − 4 x 2 + 24 = 0 = -4x_1 - 4x_2 + 24 = 0 =−4x1−4x2+24=0
* x_1 - x_2 + 6 = 0
x 1 + x 2 − 6 = 0 x_1 + x_2 - 6 = 0 x1+x2−6=0
协方差矩阵计算方法:
举例说明
假设有二维数据点 ( x 1 , x 2 ) (x_1, x_2) (x1,x2),有3个样本数据: ( 1 , 2 ) , ( 3 , 4 ) , ( 5 , 6 ) (1,2), (3,4), (5,6) (1,2),(3,4),(5,6)。
首先计算均值:
μ ^ 1 = 1 + 3 + 5 3 = 3 \hat{\mu}_1 = \frac{1+3+5}{3} = 3 μ^1=31+3+5=3
μ ^ 2 = 2 + 4 + 6 3 = 4 \hat{\mu}_2 = \frac{2+4+6}{3} = 4 μ^2=32+4+6=4
然后计算协方差矩阵的元素:
σ ^ 11 = 1 3 [ ( 1 − 3 ) 2 + ( 3 − 3 ) 2 + ( 5 − 3 ) 2 ] = 1 3 ( 4 + 0 + 4 ) = 8 3 \hat{\sigma}_{11} = \frac{1}{3}[(1-3)^2 + (3-3)^2 + (5-3)^2] = \frac{1}{3}(4+0+4) = \frac{8}{3} σ^11=31[(1−3)2+(3−3)2+(5−3)2]=31(4+0+4)=38
σ ^ 12 = σ ^ 21 = 1 3 [ ( 1 − 3 ) ( 2 − 4 ) + ( 3 − 3 ) ( 4 − 4 ) + ( 5 − 3 ) ( 6 − 4 ) ] = 1 3 ( 4 + 0 + 4 ) = 8 3 \hat{\sigma}{12} = \hat{\sigma}{21} = \frac{1}{3}[(1-3)(2-4) + (3-3)(4-4) + (5-3)(6-4)] = \frac{1}{3}(4+0+4) = \frac{8}{3} σ^12=σ^21=31[(1−3)(2−4)+(3−3)(4−4)+(5−3)(6−4)]=31(4+0+4)=38
σ ^ 22 = 1 3 [ ( 2 − 4 ) 2 + ( 4 − 4 ) 2 + ( 6 − 4 ) 2 ] = 1 3 ( 4 + 0 + 4 ) = 8 3 \hat{\sigma}_{22} = \frac{1}{3}[(2-4)^2 + (4-4)^2 + (6-4)^2] = \frac{1}{3}(4+0+4) = \frac{8}{3} σ^22=31[(2−4)2+(4−4)2+(6−4)2]=31(4+0+4)=38
所以协方差矩阵 Σ ^ \hat{\Sigma} Σ^ 为:
Σ ^ = [ 8 3 8 3 8 3 8 3 ] \hat{\Sigma} = \begin{bmatrix} \frac{8}{3} & \frac{8}{3} \\ \frac{8}{3} & \frac{8}{3} \end{bmatrix} Σ^=[38383838]
二.Fisher判别分析
Fisher判别分析(Fisher Discriminant Analysis, FDA)是一种统计方法,用于在多变量数据集中寻找一个或多个线性组合,以最大化类间方差与类内方差的比值,从而实现数据的降维和分类。它由英国统计学家罗纳德·费舍尔(Ronald A. Fisher)在20世纪30年代提出,广泛应用于模式识别、机器学习和数据挖掘等领域。
基本思想
Fisher判别分析的基本思想是通过线性变换将高维数据投影到一个低维空间,使得不同类别的数据尽可能分开,同时同一类别的数据尽可能紧密。具体来说,FDA试图找到一个投影向量 w \mathbf{w} w,使得投影后的类间散布矩阵(between-class scatter matrix)和类内散布矩阵(within-class scatter matrix)的比值最大。
数学描述
假设我们有两个类别的数据集 C 1 \mathcal{C}_1 C1 和 C 2 \mathcal{C}_2 C2,它们的均值向量分别为 m 1 \mathbf{m}_1 m1 和 m 2 \mathbf{m}_2 m2,类内散布矩阵分别为 S 1 \mathbf{S}_1 S1 和 S 2 \mathbf{S}_2 S2。类间散布矩阵 S B \mathbf{S}_B SB 和类内散布矩阵 S W \mathbf{S}_W SW 定义如下:
S B = ( m 1 − m 2 ) ( m 1 − m 2 ) T \mathbf{S}_B = (\mathbf{m}_1 - \mathbf{m}_2)(\mathbf{m}_1 - \mathbf{m}_2)^T SB=(m1−m2)(m1−m2)T
S W = S 1 + S 2 \mathbf{S}_W = \mathbf{S}_1 + \mathbf{S}_2 SW=S1+S2
Fisher判别分析的目标是找到一个投影向量 w \mathbf{w} w,使得以下目标函数最大化:
J ( w ) = w T S B w w T S W w J(\mathbf{w}) = \frac{\mathbf{w}^T \mathbf{S}_B \mathbf{w}}{\mathbf{w}^T \mathbf{S}_W \mathbf{w}} J(w)=wTSWwwTSBw
通过求解这个优化问题,可以得到最优的投影向量 w \mathbf{w} w。
两类Fisher的判别面方程是怎么来的?
在两类Fisher判别分析中,判别面是用于将数据投影到一维后进行分类的边界。通过寻找在投影空间中能够最大化类间方差和最小化类内方差的方向向量 w \mathbf{w} w,我们可以确定判别面的位置。
求解过程
- 确定投影向量 w \mathbf{w} w :
通过Fisher判别分析的解析解,我们已经得到了最优投影向量 w \mathbf{w} w:
w = S W − 1 ( m 1 − m 2 ) \mathbf{w} = \mathbf{S}_W^{-1} (\mathbf{m}_1 - \mathbf{m}_2) w=SW−1(m1−m2)
其中, m 1 \mathbf{m}_1 m1 和 m 2 \mathbf{m}_2 m2 分别是两个类别的均值向量, S W \mathbf{S}_W SW 是类内散布矩阵。
- 投影后的类中心 :
将两个类别的均值向量 m 1 \mathbf{m}_1 m1 和 m 2 \mathbf{m}_2 m2 投影到向量 w \mathbf{w} w 上,得到投影后的类中心:
w T m 1 和 w T m 2 \mathbf{w}^T \mathbf{m}_1 \quad \text{和} \quad \mathbf{w}^T \mathbf{m}_2 wTm1和wTm2
- 判别面的位置 :
判别面位于投影后的两个类中心的中点。也就是说,判别面在投影空间中的位置是:
1 2 ( w T m 1 + w T m 2 ) \frac{1}{2} (\mathbf{w}^T \mathbf{m}_1 + \mathbf{w}^T \mathbf{m}_2) 21(wTm1+wTm2)
因此,判别面可以表示为:
w T x = 1 2 ( w T m 1 + w T m 2 ) \mathbf{w}^T \mathbf{x} = \frac{1}{2} (\mathbf{w}^T \mathbf{m}_1 + \mathbf{w}^T \mathbf{m}_2) wTx=21(wTm1+wTm2)
- 代入 w \mathbf{w} w 的表达式 :
将 w \mathbf{w} w 的解析解代入上述判别面方程中:
( S W − 1 ( m 1 − m 2 ) ) T x = 1 2 ( S W − 1 ( m 1 − m 2 ) ) T ( m 1 + m 2 ) \left(\mathbf{S}_W^{-1} (\mathbf{m}_1 - \mathbf{m}_2)\right)^T \mathbf{x} = \frac{1}{2} \left(\mathbf{S}_W^{-1} (\mathbf{m}_1 - \mathbf{m}_2)\right)^T (\mathbf{m}_1 + \mathbf{m}_2) (SW−1(m1−m2))Tx=21(SW−1(m1−m2))T(m1+m2)
这可以进一步简化为:
( m 1 − m 2 ) T S W − 1 x = 1 2 ( m 1 − m 2 ) T S W − 1 ( m 1 + m 2 ) (\mathbf{m}_1 - \mathbf{m}_2)^T \mathbf{S}_W^{-1} \mathbf{x} = \frac{1}{2} (\mathbf{m}_1 - \mathbf{m}_2)^T \mathbf{S}_W^{-1} (\mathbf{m}_1 + \mathbf{m}_2) (m1−m2)TSW−1x=21(m1−m2)TSW−1(m1+m2)
总结
因此,判别面的位置由以下方程确定:
( m 1 − m 2 ) T S W − 1 x = 1 2 ( m 1 − m 2 ) T S W − 1 ( m 1 + m 2 ) (\mathbf{m}_1 - \mathbf{m}_2)^T \mathbf{S}_W^{-1} \mathbf{x} = \frac{1}{2} (\mathbf{m}_1 - \mathbf{m}_2)^T \mathbf{S}_W^{-1} (\mathbf{m}_1 + \mathbf{m}_2) (m1−m2)TSW−1x=21(m1−m2)TSW−1(m1+m2)
这个方程表示了在投影空间中,数据点 x \mathbf{x} x 的位置与类中心的距离关系,从而确定了分类的边界。这个判别面将数据分为两类,使得投影后类间方差最大化,类内方差最小化。
对于一个新的数据点 x x x,将其代入判别面方程。如果 w T x > 1 2 ( w T μ 1 + w T μ 2 ) w^T x > \frac{1}{2}(w^T \mu_1 + w^T \mu_2) wTx>21(wTμ1+wTμ2),则将 x x x 判为第一类;如果 w T x < 1 2 ( w T μ 1 + w T μ 2 ) w^T x < \frac{1}{2}(w^T \mu_1 + w^T \mu_2) wTx<21(wTμ1+wTμ2),则将 x x x 判为第二类。
求解方法
求解上述优化问题通常通过以下步骤实现:
- 计算类内散布矩阵 S W \mathbf{S}_W SW 和类间散布矩阵 S B \mathbf{S}_B SB。
- 求解广义特征值问题 :将目标函数转化为广义特征值问题,求解 S W − 1 S B w = λ w \mathbf{S}_W^{-1} \mathbf{S}_B \mathbf{w} = \lambda \mathbf{w} SW−1SBw=λw。
- 选择最大特征值对应的特征向量 :特征值 λ \lambda λ 表示投影后的类间方差与类内方差的比值,选择最大特征值对应的特征向量作为最优投影向量。
一个例子
给定两类样本,其中
类别 1 有 5 个样本: ( 1 , 2 ) T , ( 2 , 3 ) T , ( 3 , 3 ) T , ( 4 , 5 ) T , ( 5 , 5 ) T (1,2)^T, (2,3)^T, (3,3)^T, (4,5)^T, (5,5)^T (1,2)T,(2,3)T,(3,3)T,(4,5)T,(5,5)T
类别 2 有 6 个样本: ( 1 , 0 ) T , ( 2 , 1 ) T , ( 3 , 1 ) T , ( 3 , 2 ) T , ( 5 , 3 ) T , ( 6 , 5 ) T (1,0)^T, (2,1)^T, (3,1)^T, (3,2)^T, (5,3)^T, (6,5)^T (1,0)T,(2,1)T,(3,1)T,(3,2)T,(5,3)T,(6,5)T
(1) 求这两类的 Fisher 判别投影向量、判别函数;
答:
μ 1 = ∑ i = 1 N I ( Y i = 1 ) x i ∑ i = 1 N I ( Y i = 1 ) = 1 5 [ ( 1 2 ) + ( 2 3 ) + ( 3 3 ) + ( 4 5 ) + ( 5 5 ) ] = ( 3 3.6 ) \mu_1 = \frac{\sum_{i=1}^{N} \mathbb{I}(Y_i=1) x_i}{\sum_{i=1}^{N} \mathbb{I}(Y_i=1)} = \frac{1}{5}\left[\begin{pmatrix} 1 \\ 2 \end{pmatrix} + \begin{pmatrix} 2 \\ 3 \end{pmatrix} + \begin{pmatrix} 3 \\ 3 \end{pmatrix} + \begin{pmatrix} 4 \\ 5 \end{pmatrix} + \begin{pmatrix} 5 \\ 5 \end{pmatrix}\right] = \begin{pmatrix} 3 \\ 3.6 \end{pmatrix} μ1=∑i=1NI(Yi=1)∑i=1NI(Yi=1)xi=51[(12)+(23)+(33)+(45)+(55)]=(33.6)
μ 2 = ∑ i = 1 N I ( Y i = 2 ) x i ∑ i = 1 N I ( Y i = 2 ) = 1 6 [ ( 1 0 ) + ( 2 1 ) + ( 3 1 ) + ( 3 2 ) + ( 5 3 ) + ( 6 5 ) ] = ( 3.3 2 ) \mu_2 = \frac{\sum_{i=1}^{N} \mathbb{I}(Y_i=2) x_i}{\sum_{i=1}^{N} \mathbb{I}(Y_i=2)} = \frac{1}{6}\left[\begin{pmatrix} 1 \\ 0 \end{pmatrix} + \begin{pmatrix} 2 \\ 1 \end{pmatrix} + \begin{pmatrix} 3 \\ 1 \end{pmatrix} + \begin{pmatrix} 3 \\ 2 \end{pmatrix} + \begin{pmatrix} 5 \\ 3 \end{pmatrix} + \begin{pmatrix} 6 \\ 5 \end{pmatrix}\right] = \begin{pmatrix} 3.3 \\ 2 \end{pmatrix} μ2=∑i=1NI(Yi=2)∑i=1NI(Yi=2)xi=61[(10)+(21)+(31)+(32)+(53)+(65)]=(3.32)
S 1 = ∑ i = 1 N I ( Y i = 1 ) ( x i − μ 1 ) ( x i − μ 1 ) T = [ ( 1 − 3 ) ( 1 − 3 ) ( 1 − 3 ) ( 2 − 3.6 ) ( 2 − 3.6 ) ( 1 − 3 ) ( 2 − 3.6 ) ( 2 − 3.6 ) ] + ... = [ 10 8 8 7.2 ] S_1 = \sum_{i=1}^{N} \mathbb{I}(Y_i=1)(x_i - \mu_1)(x_i - \mu_1)^T = \begin{bmatrix} (1-3)(1-3) & (1-3)(2-3.6) \\ (2-3.6)(1-3) & (2-3.6)(2-3.6) \end{bmatrix} + \ldots = \begin{bmatrix} 10 & 8 \\ 8 & 7.2 \end{bmatrix} S1=i=1∑NI(Yi=1)(xi−μ1)(xi−μ1)T=[(1−3)(1−3)(2−3.6)(1−3)(1−3)(2−3.6)(2−3.6)(2−3.6)]+...=[10887.2]
S 2 = ∑ i = 1 N I ( Y i = 2 ) ( x i − μ 2 ) ( x i − μ 2 ) T = [ ( 0 − 3.3 ) ( 0 − 3.3 ) ( 0 − 3.3 ) ( 6 − 3.3 − 5 − 2 ) ( 6 − 3.3 ) ( 0 − 3.3 ) ( 6 − 3.3 ) ( 6 − 3.3 ) + ( 5 − 2 ) ( 5 − 2 ) ] = [ 17.3 16 16 16 ] S_2 = \sum_{i=1}^{N} \mathbb{I}(Y_i=2)(x_i - \mu_2)(x_i - \mu_2)^T = \begin{bmatrix} (0-3.3)(0-3.3) & (0-3.3)(6-3.3-5-2) \\ (6-3.3)(0-3.3) & (6-3.3)(6-3.3) + (5-2)(5-2) \end{bmatrix} = \begin{bmatrix} 17.3 & 16 \\ 16 & 16 \end{bmatrix} S2=i=1∑NI(Yi=2)(xi−μ2)(xi−μ2)T=[(0−3.3)(0−3.3)(6−3.3)(0−3.3)(0−3.3)(6−3.3−5−2)(6−3.3)(6−3.3)+(5−2)(5−2)]=[17.3161616]
S w = S 1 + S 2 = [ 27.3 24 24 23.2 ] S_w = S_1 + S_2 = \begin{bmatrix} 27.3 & 24 \\ 24 & 23.2 \end{bmatrix} Sw=S1+S2=[27.3242423.2]
S w − 1 = [ 27.3 24 24 23.2 ] − 1 = [ 0.39 − 0.41 − 0.41 0.47 ] S_w^{-1} = \begin{bmatrix} 27.3 & 24 \\ 24 & 23.2 \end{bmatrix}^{-1} = \begin{bmatrix} 0.39 & -0.41 \\ -0.41 & 0.47 \end{bmatrix} Sw−1=[27.3242423.2]−1=[0.39−0.41−0.410.47]
w = S w − 1 ( μ 1 − μ 2 ) = [ 0.39 − 0.41 − 0.41 0.47 ] ( − 0.3 − 0.79 ) = ( − 0.79 0.89 ) w = S_w^{-1}(\mu_1 - \mu_2) = \begin{bmatrix} 0.39 & -0.41 \\ -0.41 & 0.47 \end{bmatrix} \begin{pmatrix} -0.3 \\ -0.79 \end{pmatrix} = \begin{pmatrix} -0.79 \\ 0.89 \end{pmatrix} w=Sw−1(μ1−μ2)=[0.39−0.41−0.410.47](−0.3−0.79)=(−0.790.89)
分类阈值为:
z 0 = μ ~ 1 + μ ~ 2 2 = w T ( μ 1 + μ 2 ) 2 = 1 2 ( − 0.79 0.89 ) [ ( 3 3.6 ) + ( 3.3 2 ) ] = 0.0035 z_0 = \frac{\tilde{\mu}_1 + \tilde{\mu}_2}{2} = \frac{w^T(\mu_1 + \mu_2)}{2} = \frac{1}{2}(-0.79 \quad 0.89)\left[\left(\begin{array}{l} 3 \\ 3.6 \end{array}\right) + \left(\begin{array}{l} 3.3 \\ 2 \end{array}\right)\right] = 0.0035 z0=2μ~1+μ~2=2wT(μ1+μ2)=21(−0.790.89)[(33.6)+(3.32)]=0.0035
判别面方程为:
x T w = z 0 x^T w = z_0 xTw=z0
即
( x 1 x 2 ) ( − 0.79 0.89 ) = 0.0035 \left(x_1 \quad x_2\right)\left(\begin{array}{l} -0.79 \\ 0.89 \end{array}\right) = 0.0035 (x1x2)(−0.790.89)=0.0035
(2) 计算每个样本点投影后的坐标。
z i = w T x i = ( − 0.79 0.89 ) ( x i , 1 x i , 2 ) z_i = w^T x_i = (-0.79 \quad 0.89)\left(\begin{array}{l} x_{i,1} \\ x_{i,2} \end{array}\right) zi=wTxi=(−0.790.89)(xi,1xi,2)
三.logistic回归
Logistic回归是一种广泛应用于统计学和机器学习中的分类算法,主要用于解决二分类问题。它的基本思想是通过一个线性模型来估计事件发生的概率,并使用一个非线性函数(通常是Sigmoid函数)将线性组合的结果映射到一个0到1之间的概率值。
主要特点
- 模型形式:
Logistic回归模型的形式为:
P ( y = 1 ∣ X ) = σ ( w T X + b ) P(y=1|X) = \sigma(w^TX + b) P(y=1∣X)=σ(wTX+b)
其中, σ \sigma σ 是Sigmoid函数,定义为:
σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1+e^{-z}} σ(z)=1+e−z1
w w w 是权重向量, X X X 是输入特征向量, b b b 是偏置项。 - 决策边界:
Logistic回归的决策边界是线性的,即它将特征空间划分为两个区域,一个区域预测为类别1,另一个区域预测为类别0。 - 损失函数:
Logistic回归通常使用对数损失函数(Log Loss)来衡量模型的预测效果:
L ( y , y ^ ) = − [ y log ( y ^ ) + ( 1 − y ) log ( 1 − y ^ ) ] L(y, \hat{y}) = -[y\log(\hat{y}) + (1-y)\log(1-\hat{y})] L(y,y^)=−[ylog(y^)+(1−y)log(1−y^)]
其中, y y y 是实际标签, y ^ \hat{y} y^ 是预测的概率。
1. 函数族:线性函数
首先,Logistic回归模型的预测值是通过线性函数和Sigmoid函数的组合来计算的:
μ ( x ) = σ ( w T x ) \mu(x) = \sigma(w^T x) μ(x)=σ(wTx)
其中, σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+e−z1 是Sigmoid函数, w T x w^T x wTx 是线性组合。
2. 条件概率
Logistic回归模型假设类别 y y y 的条件概率由以下公式给出:
p ( y ∣ x ; μ ) = μ ( x ) y ( 1 − μ ( x ) ) ( 1 − y ) p(y|x; \mu) = \mu(x)^y (1 - \mu(x))^{(1-y)} p(y∣x;μ)=μ(x)y(1−μ(x))(1−y)
这个公式表示在给定输入特征 x x x 和模型参数 μ \mu μ 下,类别 y y y 的概率。具体来说:
- 当 y = 1 y = 1 y=1 时,公式变为 μ ( x ) \mu(x) μ(x),表示预测正类的概率。
- 当 y = 0 y = 0 y=0 时,公式变为 1 − μ ( x ) 1 - \mu(x) 1−μ(x),表示预测负类的概率。
3. 损失函数
为了训练Logistic回归模型,我们需要定义一个损失函数来衡量模型的预测与实际标签之间的差异。常用的损失函数是交叉熵损失(负对数似然损失):
L ( μ ( x ) , y ) = − y ln ( μ ( x ) ) − ( 1 − y ) ln ( 1 − μ ( x ) ) L(\mu(x), y) = -y \ln(\mu(x)) - (1 - y) \ln(1 - \mu(x)) L(μ(x),y)=−yln(μ(x))−(1−y)ln(1−μ(x))
这个损失函数是从最大似然估计(MLE)推导出来的,对应于最大化训练数据在模型参数 w w w 下的对数似然函数。
4. 优化算法
为了找到最优的参数 w w w,我们通常使用优化算法来最小化损失函数。常用的优化算法包括:
- 梯度下降:通过计算损失函数对参数的梯度,逐步更新参数以最小化损失。
5. 梯度计算
图片中展示了损失函数对参数 w w w 的梯度计算过程:
∂ L ∂ w = ∂ L ∂ μ ∂ μ ∂ w \frac{\partial L}{\partial w} = \frac{\partial L}{\partial \mu} \frac{\partial \mu}{\partial w} ∂w∂L=∂μ∂L∂w∂μ
具体步骤如下:
- 计算损失函数对预测值 μ \mu μ 的偏导数:
∂ L ∂ μ = − y μ + 1 − y 1 − μ \frac{\partial L}{\partial \mu} = -\frac{y}{\mu} + \frac{1 - y}{1 - \mu} ∂μ∂L=−μy+1−μ1−y
- 计算预测值 μ \mu μ 对参数 w w w 的偏导数:
∂ μ ∂ w = μ ( 1 − μ ) x \frac{\partial \mu}{\partial w} = \mu(1 - \mu) x ∂w∂μ=μ(1−μ)x
- 应用链式法则:
∂ L ∂ w = ( − y μ + 1 − y 1 − μ ) μ ( 1 − μ ) x \frac{\partial L}{\partial w} = \left( -\frac{y}{\mu} + \frac{1 - y}{1 - \mu} \right) \mu(1 - \mu) x ∂w∂L=(−μy+1−μ1−y)μ(1−μ)x
简化后得到:
∂ L ∂ w = ( μ − y ) x \frac{\partial L}{\partial w} = (\mu - y) x ∂w∂L=(μ−y)x
这个梯度用于梯度下降算法中,以更新参数 w w w:
w ← w − η ∂ L ∂ w w \leftarrow w - \eta \frac{\partial L}{\partial w} w←w−η∂w∂L
其中 η \eta η 是学习率。
- 加入偏置 b b b后的线性函数和概率模型
- 首先,将线性函数修改为 μ ( x ) = σ ( w T x + b ) \mu(x)=\sigma(w^{T}x + b) μ(x)=σ(wTx+b),其中 σ \sigma σ是激活函数(如Sigmoid函数)。
- 概率模型依然为 p ( y ∣ x ; μ ) = μ ( x ) y ( 1 − μ ( x ) ) ( 1 − y ) p(y|x;\mu)=\mu(x)^{y}(1 - \mu(x))^{(1 - y)} p(y∣x;μ)=μ(x)y(1−μ(x))(1−y)。
- 损失函数
- 损失函数 L ( μ ( x ) , y ) = − y ln ( μ ( x ) ) − ( 1 − y ) ln ( 1 − μ ( x ) ) L(\mu(x),y)=-y\ln(\mu(x))-(1 - y)\ln(1 - \mu(x)) L(μ(x),y)=−yln(μ(x))−(1−y)ln(1−μ(x))不变。
- 对 b b b求偏导
- 根据链式法则, ∂ L ∂ b = ∂ L ∂ μ ∂ μ ∂ b \frac{\partial L}{\partial b}=\frac{\partial L}{\partial\mu}\frac{\partial\mu}{\partial b} ∂b∂L=∂μ∂L∂b∂μ。
- 首先求 ∂ L ∂ μ \frac{\partial L}{\partial\mu} ∂μ∂L:
- 已知 L ( μ ( x ) , y ) = − y ln ( μ ( x ) ) − ( 1 − y ) ln ( 1 − μ ( x ) ) L(\mu(x),y)=-y\ln(\mu(x))-(1 - y)\ln(1 - \mu(x)) L(μ(x),y)=−yln(μ(x))−(1−y)ln(1−μ(x)),对其求关于 μ \mu μ的偏导数:
- ∂ L ∂ μ = − y μ ( x ) + 1 − y 1 − μ ( x ) \frac{\partial L}{\partial\mu}=-\frac{y}{\mu(x)}+\frac{1 - y}{1 - \mu(x)} ∂μ∂L=−μ(x)y+1−μ(x)1−y。
- 已知 L ( μ ( x ) , y ) = − y ln ( μ ( x ) ) − ( 1 − y ) ln ( 1 − μ ( x ) ) L(\mu(x),y)=-y\ln(\mu(x))-(1 - y)\ln(1 - \mu(x)) L(μ(x),y)=−yln(μ(x))−(1−y)ln(1−μ(x)),对其求关于 μ \mu μ的偏导数:
- 然后求 ∂ μ ∂ b \frac{\partial\mu}{\partial b} ∂b∂μ:
- 因为 μ ( x ) = σ ( w T x + b ) \mu(x)=\sigma(w^{T}x + b) μ(x)=σ(wTx+b),设 z = w T x + b z = w^{T}x + b z=wTx+b,则 μ ( x ) = σ ( z ) \mu(x)=\sigma(z) μ(x)=σ(z)。
- 根据激活函数(如Sigmoid函数)的导数性质, σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) \sigma^\prime(z)=\sigma(z)(1-\sigma(z)) σ′(z)=σ(z)(1−σ(z)),这里 z = w T x + b z = w^{T}x + b z=wTx+b。
- 所以 ∂ μ ∂ b = σ ′ ( w T x + b ) = μ ( x ) ( 1 − μ ( x ) ) \frac{\partial\mu}{\partial b}=\sigma^\prime(w^{T}x + b)=\mu(x)(1 - \mu(x)) ∂b∂μ=σ′(wTx+b)=μ(x)(1−μ(x))。
- 最后求 ∂ L ∂ b \frac{\partial L}{\partial b} ∂b∂L:
- ∂ L ∂ b = ( − y μ ( x ) + 1 − y 1 − μ ( x ) ) ⋅ μ ( x ) ( 1 − μ ( x ) ) \frac{\partial L}{\partial b}=\left(-\frac{y}{\mu(x)}+\frac{1 - y}{1 - \mu(x)}\right)\cdot\mu(x)(1 - \mu(x)) ∂b∂L=(−μ(x)y+1−μ(x)1−y)⋅μ(x)(1−μ(x))
- 化简得 ∂ L ∂ b = ( 1 − y ) μ ( x ) − y ( 1 − μ ( x ) ) = μ ( x ) − y \frac{\partial L}{\partial b}=(1 - y)\mu(x)-y(1 - \mu(x))=\mu(x)-y ∂b∂L=(1−y)μ(x)−y(1−μ(x))=μ(x)−y。
综上所述,当加入偏置 b b b后,损失函数对 b b b的偏导数为 μ ( x ) − y \mu(x)-y μ(x)−y。
6. 例题
1.给定如下 4 个输入特征的 4 个样本,采用 Logistic 回归,
X 1 X_1 X1 | X 2 X_2 X2 | X 3 X_3 X3 | X 4 X_4 X4 | Y Y Y | |
---|---|---|---|---|---|
T1 | 5 | 3 | 1 | 1 | 1 |
T2 | 4 | 2 | 1 | 1 | 1 |
T3 | 2 | 1 | 2 | 3 | 0 |
T4 | 1 | 2 | 3 | 2 | 0 |
(1)初始化权重 w = ( 0.5 , 0.5 , 0.5 , 0.5 ) T , b = 0.5 w=(0.5,0.5,0.5,0.5)^T, b=0.5 w=(0.5,0.5,0.5,0.5)T,b=0.5 ,采用梯度下降,计算每个样本上的梯度;
四.特征选择和提取
非线性降维
自编码器(Autoencoder)作为一种基于神经网络的降维方法,其核心思想是通过神经网络学习数据的低维表示,同时尽量保留原始数据的重要特征。以下是详细解释自编码器如何实现降维的过程:
自编码器的基本结构
自编码器由两个主要部分组成:编码器(Encoder)和解码器(Decoder)。
- 编码器(Encoder) :
- 编码器将高维输入数据 x x x 映射到低维隐空间表示 h h h。
- 编码过程可以表示为 h = f ( x ) h = f(x) h=f(x),其中 f f f 是一个由神经网络实现的非线性函数。
- 解码器(Decoder) :
- 解码器将低维隐空间表示 h h h 重新映射回原始数据空间,得到重构数据 x ^ \hat{x} x^。
- 解码过程可以表示为 x ^ = g ( h ) \hat{x} = g(h) x^=g(h),其中 g g g 也是一个由神经网络实现的非线性函数。
自编码器的训练
训练自编码器的目标是最小化输入数据 x x x 和重构数据 x ^ \hat{x} x^ 之间的差异。常用的损失函数是均方误差(MSE):
L ( x , x ^ ) = ∥ x − x ^ ∥ 2 L(x, \hat{x}) = \| x - \hat{x} \|^2 L(x,x^)=∥x−x^∥2
通过反向传播和梯度下降算法,调整编码器和解码器的权重和偏置,使得重构误差最小化。
五.统计学习基础
- 经验风险 :
- 经验风险是模型在训练数据上的误差。它反映了模型对已知数据的拟合程度。是训练数据上的平均误差。
- 期望风险 :
- 期望风险是模型在整个数据分布上的误差。它是模型泛化能力的衡量标准。
- 结构风险:期望风险可以分解为经验风险和正则项之和。正则项用于防止过拟合。
- 训练误差、验证误差、测试误差 :
- 训练误差:模型在训练集上的误差。
- 验证误差:模型在验证集上的误差,用于模型选择和超参数调优。
- 测试误差:模型在测试集上的误差,用于评估模型的泛化能力。
- 交叉验证:一种评估模型性能的技术,通过将数据集划分为多个子集,多次训练和验证模型,从而更可靠地估计模型的泛化误差。
- 过拟合和欠拟合 :
- 过拟合:模型过于复杂,过度拟合训练数据,包括噪声,从而在新数据上表现不佳。
- 欠拟合:模型过于简单,无法捕捉训练数据中的模式,从而在训练数据和新数据上表现都不佳。
- 泛化误差分解:偏差-方差分解 :
- 泛化误差可以分解为偏差、方差和噪声三部分。
- 偏差:模型的预测值与真实值之间的差异,反映了模型的拟合能力。当模型的偏差较大时,意味着模型在训练数据上和新数据上的预测结果都偏离了真实值。高偏差通常是由于模型过于简单,无法捕捉数据中的复杂模式(欠拟合)。高偏差,欠拟合。
- 方差:模型对训练数据的敏感程度,反映了模型的稳定性。高方差通常是由于模型过于复杂,能够很好地拟合训练数据(包括噪声),但在新数据上表现不佳(过拟合)。高方差,过拟合。
- 噪声:数据本身的不可预测部分。
- 简单模型(低复杂度)通常具有高偏差和低方差,容易欠拟合。
- 复杂模型(高复杂度)通常具有低偏差和高方差,容易过拟合。
如何利用偏差-方差分解优化模型
1.增加模型复杂度:
-如果偏差较高,可以考虑增加模型的复杂度,例如使用更多的特征,更深的神经网络或更高次的多项式模型。
-这样做的目的是减少偏差,但需要注意不要过度增加方差。
2.减少模型复杂度:
-如果方差较高,可以考虑减少模型的复杂度,例如减少特征数量,使用更简单的模型或增加正则化。
-这样做的目的是减少方差,但需要注意不要过度增加偏差。
3.增加训练数据:
-增加训练数据通常可以同时减少偏差和方差,因为更多的数据可以帮助模型更好地学习目标函数。
4.使用集成学习:
-集成学习方法(如Bagging和Boosting)可以帮助降低方差,同时保持较低的偏差。
- 泛化误差上界 :
- 泛化误差上界公式展示了训练误差、训练样本数、VC维度以及置信度之间的关系。
- 公式中的符号解释:
- E train ( f ∗ ) E_{\text{train}}(f^*) Etrain(f∗):训练误差。
- N N N:训练样本数。
- d v c d_{vc} dvc:VC维度,衡量模型的复杂度。
- δ \delta δ:置信度。
- 公式表示泛化误差上界由训练误差和模型复杂度的函数决定。
为了降低测试误差和训练误差,可以从以下几个方面进行调整:
1. 增加训练样本数 N N N
效果:
- 增加训练样本数 N N N 可以显著降低测试误差(泛化误差),因为更多的数据可以提供更好的模型估计,从而减少过拟合的风险。
- 随着训练样本数的增加,训练误差也可能稍微增加,因为模型可能会变得更加泛化,不会过度拟合训练数据中的噪声。(不包真)
2. 降低模型复杂度(VC维度 d VC d_{\text{VC}} dVC=模型复杂度)
效果:
- 降低模型的VC维度可以减少测试误差,因为较低的模型复杂度意味着模型不容易过拟合训练数据。
- 训练误差可能会增加,因为较简单的模型可能无法完全拟合训练数据。
在机器学习中,数据集的划分和验证方法对于模型的训练和评估至关重要。以下是训练集、验证集、测试集和交叉验证的详细解释:
1. 训练集(Training Set)
定义:
- 训练集是用于训练机器学习模型的数据集。模型通过学习训练集中的样本和对应的标签,调整其参数以最小化误差。
作用:
- 训练集用于拟合模型,即找到模型参数,使得模型能够尽可能准确地预测训练数据中的标签。
2. 验证集(Validation Set)
定义:
- 验证集是用于调整模型超参数和选择最佳模型的数据集。它独立于训练集,用于评估模型在未见过的数据上的表现。
作用:
- 验证集帮助选择最佳的模型结构和超参数(如正则化参数、学习率等),避免过拟合或欠拟合。
- 验证集用于早停法(Early Stopping),即在验证误差开始增加时停止训练。
3. 测试集(Test Set)
定义:
- 测试集是用于最终评估模型性能的数据集。它完全独立于训练集和验证集。
作用:
- 测试集用于评估模型的泛化能力,即模型在完全新数据上的表现。
- 测试集的结果用于报告模型的最终性能指标,如准确率、精度、召回率等。
4. 交叉验证(Cross-Validation)
定义:
- 交叉验证是一种评估模型性能的技术,通过将数据集多次划分为训练集和验证集,来减少模型评估的偏差。
常见方法:
- K折交叉验证(K-Fold Cross-Validation) :
- 将数据集分成 K K K 个互斥的子集(折)。
- 每次用 K − 1 K-1 K−1 个折作为训练集,剩下的一个折作为验证集。
- 重复 K K K 次,每次选择不同的折作为验证集。
- 最终的模型性能是 K K K 次验证结果的平均值。
- 留一法交叉验证(Leave-One-Out Cross-Validation, LOOCV) :
- 每次将一个样本作为验证集,其余样本作为训练集。
- 重复 N N N 次(其中 N N N 是样本数量),每次选择不同的样本作为验证集。
- 最终的模型性能是 N N N 次验证结果的平均值。
作用:
- 交叉验证提供了更稳定和可靠的模型性能评估,特别是在数据量有限的情况下。
- 它帮助选择最佳模型和超参数,减少过拟合的风险。
数据集划分的示例
假设我们有一个包含1000个样本的数据集,可以按照以下比例进行划分:
- 训练集:70%(700个样本)
- 验证集:15%(150个样本)
- 测试集:15%(150个样本)
具体步骤
- 划分数据集 :
- 将数据集分成训练集、验证集和测试集。
- 保证各个数据集的样本分布相似,以提高评估结果的可靠性。
- 模型训练 :
- 使用训练集训练模型,调整模型参数以最小化训练误差。
- 模型验证 :
- 使用验证集调整模型超参数,选择最佳模型结构。
- 通过交叉验证进一步评估模型性能,减少过拟合风险。
- 模型测试 :
- 使用测试集评估最终模型的泛化能力,报告模型性能指标。
总结
- 训练集:用于训练模型。
- 验证集:用于选择模型和调整超参数。
- 测试集:用于最终评估模型性能。
- 交叉验证:通过多次划分数据集,提供更稳定和可靠的模型性能评估。
例题
5. 假设我们采用不同的验证集划分方式
- 2折交叉验证
- 10折交叉验证
- 留一交叉验证
- 单次70%/30%的训练集/验证集划分
(1) 不同的验证集划分方式会对模型性能产生什么影响?(如训练误差、泛化误差)
答: 从2折交叉验证、10折交叉验证、留一交叉验证,训练样本数目越来越多,得到的训练误差和泛化误差更接近采用所有数据训练模型时的性能。
(2) 哪种方式得到的验证误差会提供在"未见过的测试集"上误差的最佳近似?
答: 一般而言,留一交叉验证的验证误差是测试误差的好估计,但留一交叉验证需要重复 N N N次的模型训练,每次训练的训练数据多,运行成本高。( N N N为数据集中的样本数目)
(3) 原始数据集有多大有影响吗?对于一个非常大或非常小的数据集,你会得到不同的结论吗?
答: 原始数据集大小有影响。对非常大的数据集,上述方法会得到的相似的结果。但一般选择单次留出验证集的方式,只需训练一次模型,运行成本低,此时训练数据充分,验证集也足够多,验证误差为测试误差的很好估计;对非常小的数据集,留一交叉验证才能得到足够多的训练数据,此时验证误差是测试误差的较好估计。
(4) 就计算而言,哪种方式最快?
答: 单次的70%/30%的训练集/验证集划分最快。
六.集成学习
集成学习(Ensemble Learning)是一种机器学习技术,它通过结合多个基模型(也称为弱模型或弱学习器)来构建一个更强的模型,以提高预测性能和泛化能力。集成学习的主要思想是通过集成多个模型的预测结果来减少单个模型的偏差和方差,从而获得更好的整体表现。
集成学习通常分为以下几类:
- Bagging(Bootstrap Aggregating) :
- 通过在训练集中随机抽取有放回的样本,生成多个训练子集,每个子集训练一个基模型。最终的预测结果通过对所有基模型的预测结果进行平均(回归问题)或投票(分类问题)来确定。
- 代表方法:随机森林(Random Forest)。
- Boosting :
- 通过逐步训练一系列基模型,每个基模型都试图纠正前一个基模型的错误。每个新的基模型在训练时会更多关注前一个模型预测错误的样本。
- 代表方法:AdaBoost、梯度提升树(Gradient Boosting Trees, GBT)、XGBoost。
Bagging: 降低方差、偏差不变
- 基学习器类型相同:通常较复杂,偏差较小,方差较大
- 通过对样本和特征进行随机采样得到不同的训练集训练各基学习器
- 模型融合:多个基学习器结果的平均/投票
- 多个基学习器可并行训练
Boosting: 降低偏差、方差不变
- 基学习器类型相同:通常较简单,偏差较大,方差较小
- 每次迭代通过改变样本的权重(AdaBoost)或改变标签(GBM)得到不同的训练集训练各基学习器,样本和特征可随机采样
- 模型融合:多个基学习器结果的加权平均
- 多个基学习器顺序训练,不能并行
七.聚类
聚类(Clustering)是一种数据挖掘和机器学习技术,旨在将一组对象分成多个簇(Cluster),使得同一个簇中的对象在某种意义上是相似的,而不同簇中的对象则有显著差异。聚类分析在许多领域中都有广泛应用,比如市场营销、图像处理、生物信息学、文档分类等。
聚类方法的基本思想是根据数据对象之间的相似性或距离度量,将对象划分到不同的群组中。常见的距离度量包括欧几里得距离、曼哈顿距离、余弦相似度等。
常见的聚类算法包括:
- K-means聚类 :将数据分成 K K K个簇,通过迭代优化簇中心的位置,使得同一簇内的数据点距离簇中心的距离之和最小。
- DBSCAN(基于密度的空间聚类应用噪声):通过识别高密度区域来形成簇,能够发现任意形状的簇,并且能够识别噪声点。
- Gaussian Mixture Models(高斯混合模型):假设数据是由多个高斯分布成分混合而成,通过期望最大化(EM)算法来估计模型参数。
- 层次聚类:通过构建一个树状的层次结构来表示数据的聚类关系。可以是自底向上的(凝聚层次聚类)或自顶向下的(分裂层次聚类)。
总结
- K均值:适用于球形簇,计算速度快,但需要预先指定簇数,对噪声敏感。Kmeans的判别界面应该是簇的中垂线。
- GMM:适用于复杂分布,能够发现椭圆形簇,但计算复杂度较高,需要预先指定成分数。
- DBSCAN:适用于任意形状的簇,对噪声鲁棒,但对参数选择敏感,计算复杂度较高。适用于密度均匀的聚类。可以分离出噪声。以圆的形式向外扩张。
八.半监督学习
半监督学习的三个基本假设
- 高密度区域平滑假设:两个数据点在高密度区域内彼此接近,那么它们的标签也应该相同。
- 聚类假设/低密度分隔假设:同一簇内的数据点具有相同的标签。
- 流形假设:在一个流形上相似的样本,它的标签是相似的。
常用的半监督学习算法
1.自训练
自训练是一种迭代的方法,最初使用标注数据训练一个初始分类器,然后用这个分类器对未标注数据进行预测,并将高置信度的预测结果作为新的标注数据加入训练集,重复这个过程。
2.多视角学习
利用两个视角的分类器相互训练。首先用少量标记数据训练两个初始分类器,然后用一个分类器对未标记数据进行预测,并将预测结果中置信度高的样本加入到另一个分类器的训练集中,反复迭代。