中国海洋大学机器学习期末复习 Part1
基本术语
机器学习
假设用P来评估计算机程序在某任务类T上的性能,若一个程序通过利用经验E在T中任务上获得了性能改善,则我们就说关于T和P,该程序对E进行了学习
泛化能力
机器学习的目标是使得学到的模型能很好的适用于“新样本”, 而不仅仅是训练集合,我们称模型适用于新样本的能力为泛化(generalization)能力。
假设空间
假设空间: 监督学习(supervised learning)的任务是学习一个模型,使模型能够对任意给定的输入,对其相应的输出做出一个好的预测。模型属于由输入空间到输出空间的映射的集合,这个集合就是假设空间(hypothesis space)。 我们也可以将学习过程看作一个在所有假设组成的空间中进行搜索的过程,搜索目标是找到与训练集"匹配"的假设,即能够将训练集中的瓜判断正确的假设。假设的表示一旦确定,假设空间及其规模大小就确定了。
假设有以下三个属性,假设空间求解方法:
- 色泽:(青绿,乌黑,浅白)
- 根蒂:(蜷缩,硬挺,稍蜷)
- 敲声:(浊响,清脆,沉闷)
色泽有“青绿”和“乌黑”两种取值,还需考虑无论色泽取什么值都合适的情况,用通配符(*)表示。色泽属性共 3 种取值;
根蒂有“蜷缩”、“硬挺”和“稍蜷”三种取值,同理再加通配符(*)表示,根蒂属性共 4 种取值;
敲声有“浊响”、“清脆”和“沉闷”三种取值,同理再加通配符(*)表示,敲声属性共 4 种取值;
还有一种假设组成——可能"好瓜”这个概念就不成立,我们用 ∅
表示这种假设。
那么,所对应的假设组成的个数为:3 x 4 x 4 + 1 = 49
归纳偏好
机器学习算法在学习过程中对某种类型假设的偏好,称为“归纳偏好”,或简称为“偏好”。
归纳偏好可看作学习算法自身在一个可能很庞大的假设空间中对假设进行选择的启发式或者价值观。这种价值观的一个典型叫做**“奥卡姆剃刀”**:若有多个假设与观察一致,则选择最简单那个。
事实上,归纳偏好对应了学习算法本身所做出的关于“什么样的模型更好”的假设。在具体的现实问题中,这个假设是否成立,即算法的归纳偏好是否与问题本身匹配,大多数时候直接决定了算法能否取得好的性能。
没有免费的午餐定理(NFL):在所有”问题“出现的机会相同、或者所有问题同等重要的前提下,任何两个学习算法的期望性能相同。
NFL定理的意义在于——脱离具体问题,空泛地谈论”什么学习算法更好“毫无意义,因为若考虑所有潜在问题,则所有的学习算法都一样好。
模型评估与选择
经验误差与过拟合
性能度量
- 测试性能并不等于泛化性能
- 测试性能随着测试集的变化而变化
- 很多机器学习算法本身有一定的随机性
- 直接选取相应评估方法在相应度量下比大小的方法不可取
各类计算指标
均方误差: E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 E(f;D)=\frac{1}{m}\sum_{i=1}^m(f(x_i)-y_i)^2 E(f;D)=m1∑i=1m(f(xi)−yi)2
分类错误率: E ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ≠ y i ) ) E(f;D)=\frac{1}{m}\sum_{i=1}^m\Iota(f(x_i\neq y_i)) E(f;D)=m1∑i=1mI(f(xi=yi))
精度acc: a c c ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i = y i ) ) acc(f;D)=\frac{1}{m}\sum_{i=1}^m\Iota(f(x_i=y_i)) acc(f;D)=m1∑i=1mI(f(xi=yi))
真实类\预测类 | Yes | No | Total |
---|---|---|---|
Yes | TP | FN | P |
No | FP | TN | N |
Total | P’ | N’ | P+N |
真正率(True Positive Rate, TPR):TPR = TP/(TP+FN)
假负率(False Negative Rate,FNR):FNR = FN/(TP+FN)
假正率(False Positive Rate,FPR):FPR = FP/(FP+TN)
真负率(True Negative Rate,TNR):TNR = TN/(FP+TN)
正确率Accuracy: acc = (TP+TN)/(P+N)
错误率Error Rate: ER = (FP+FN)/(P+N)
灵敏度(sensitive): sensitive = TP/P
特效度(specificity): specificity = TN/N
精度(precision): precision = TP/(TP+FP)
召回率(recall): recall = TP/(TP+FN) = TP/P = sensitive
P-R曲线
F1度量
F β F_\beta Fβ即加权调和平均: F β = 1 1 ( 1 + β 2 ) ( 1 P + β 2 1 R ) F_\beta=\frac{1}{\frac{1}{(1+\beta^2)}(\frac{1}{P}+\beta^2\frac{1}{R})} Fβ=(1+β2)1(P1+β2R1)1
受试者工作特征ROC与AUC
类似P-R曲线,根据学习器的预测结果对样例排序,并逐个作为正例进行预测,以“假正例率”为横轴,“真正例率”为纵轴可得到ROC曲线,全称“受试者工作特征”;ROC下方面积即为AUC
代价敏感错误率
偏差与方差
- 偏差度量了学习算法期望预测与真实结果的偏离程度;即刻画了学习算法本身的拟合能力;
- 方差度量了同样大小训练集的变动所导致的学习性能的变化;即刻画了数据扰动所造成的影响;
- 噪声表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界;即刻画了学习问题本身的难度。
推导
偏差-方差窘境
线性回归
最小二乘
对数几率回归
极大似然法
LDA
线性判别分析(LDA)是一种监督学习算法,常用于分类任务。LDA的目标是找到一个投影方向,使得投影后类间距离最大化,同时类内距离最小化。换句话说,LDA通过最大化类间方差和最小化类内方差来实现数据的最佳分离。
LDA的步骤
- 计算每个类的均值向量。
- 计算类内散布矩阵(Sw)和类间散布矩阵(Sb)。
- 求解广义特征值问题。
- 选择特征向量。
- 将数据投影到新空间。
实例讲解
假设有两个类别的二维数据集,如下:
类别 | $x_1 $ | $x_2 $ |
---|---|---|
A | 2.0 | 3.0 |
A | 3.0 | 4.0 |
A | 4.0 | 5.0 |
B | 5.0 | 4.0 |
B | 6.0 | 5.0 |
B | 7.0 | 6.0 |
步骤 1: 计算每个类的均值向量
计算类别 A 和 B 的均值向量:
- 类别 A 的均值向量:
μ A = ( 2.0 + 3.0 + 4.0 3 , 3.0 + 4.0 + 5.0 3 ) = ( 3.0 , 4.0 ) \mu_A = \left( \frac{2.0 + 3.0 + 4.0}{3}, \frac{3.0 + 4.0 + 5.0}{3} \right) = (3.0, 4.0) μA=(32.0+3.0+4.0,33.0+4.0+5.0)=(3.0,4.0)
- 类别 B 的均值向量:
μ B = ( 5.0 + 6.0 + 7.0 3 , 4.0 + 5.0 + 6.0 3 ) = ( 6.0 , 5.0 ) \mu_B = \left( \frac{5.0 + 6.0 + 7.0}{3}, \frac{4.0 + 5.0 + 6.0}{3} \right) = (6.0, 5.0) μB=(35.0+6.0+7.0,34.0+5.0+6.0)=(6.0,5.0)
步骤 2: 计算类内散布矩阵(Sw)和类间散布矩阵(Sb)
类内散布矩阵 $ S_w $:
S w = ∑ i ∈ A ( x i − μ A ) ( x i − μ A ) T + ∑ i ∈ B ( x i − μ B ) ( x i − μ B ) T S_w = \sum_{i \in A} (x_i - \mu_A)(x_i - \mu_A)^T + \sum_{i \in B} (x_i - \mu_B)(x_i - \mu_B)^T Sw=∑i∈A(xi−μA)(xi−μA)T+∑i∈B(xi−μB)(xi−μB)T
对于类别 A:
( 2.0 − 3.0 , 3.0 − 4.0 ) T ( 2.0 − 3.0 , 3.0 − 4.0 ) = ( − 1 − 1 ) ( − 1 − 1 ) = ( 1 1 1 1 ) ( 3.0 − 3.0 , 4.0 − 4.0 ) T ( 3.0 − 3.0 , 4.0 − 4.0 ) = ( 0 0 ) ( 0 0 ) = ( 0 0 0 0 ) ( 4.0 − 3.0 , 5.0 − 4.0 ) T ( 4.0 − 3.0 , 5.0 − 4.0 ) = ( 1 1 ) ( 1 1 ) = ( 1 1 1 1 ) \begin{aligned} & (2.0 - 3.0, 3.0 - 4.0)^T (2.0 - 3.0, 3.0 - 4.0) = \begin{pmatrix} -1 \\ -1 \end{pmatrix} \begin{pmatrix} -1 & -1 \end{pmatrix} = \begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix} \\ & (3.0 - 3.0, 4.0 - 4.0)^T (3.0 - 3.0, 4.0 - 4.0) = \begin{pmatrix} 0 \\ 0 \end{pmatrix} \begin{pmatrix} 0 & 0 \end{pmatrix} = \begin{pmatrix} 0 & 0 \\ 0 & 0 \end{pmatrix} \\ & (4.0 - 3.0, 5.0 - 4.0)^T (4.0 - 3.0, 5.0 - 4.0) = \begin{pmatrix} 1 \\ 1 \end{pmatrix} \begin{pmatrix} 1 & 1 \end{pmatrix} = \begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix} \\ \end{aligned} (2.0−3.0,3.0−4.0)T(2.0−3.0,3.0−4.0)=(−1−1)(−1−1)=(1111)(3.0−3.0,4.0−4.0)T(3.0−3.0,4.0−4.0)=(00)(00)=(0000)(4.0−3.0,5.0−4.0)T(4.0−3.0,5.0−4.0)=(11)(11)=(1111)
对于类别 B:
( 5.0 − 6.0 , 4.0 − 5.0 ) T ( 5.0 − 6.0 , 4.0 − 5.0 ) = ( − 1 − 1 ) ( − 1 − 1 ) = ( 1 1 1 1 ) ( 6.0 − 6.0 , 5.0 − 5.0 ) T ( 6.0 − 6.0 , 5.0 − 5.0 ) = ( 0 0 ) ( 0 0 ) = ( 0 0 0 0 ) ( 7.0 − 6.0 , 6.0 − 5.0 ) T ( 7.0 − 6.0 , 6.0 − 5.0 ) = ( 1 1 ) ( 1 1 ) = ( 1 1 1 1 ) \begin{aligned} & (5.0 - 6.0, 4.0 - 5.0)^T (5.0 - 6.0, 4.0 - 5.0) = \begin{pmatrix} -1 \\ -1 \end{pmatrix} \begin{pmatrix} -1 & -1 \end{pmatrix} = \begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix} \\ & (6.0 - 6.0, 5.0 - 5.0)^T (6.0 - 6.0, 5.0 - 5.0) = \begin{pmatrix} 0 \\ 0 \end{pmatrix} \begin{pmatrix} 0 & 0 \end{pmatrix} = \begin{pmatrix} 0 & 0 \\ 0 & 0 \end{pmatrix} \\ & (7.0 - 6.0, 6.0 - 5.0)^T (7.0 - 6.0, 6.0 - 5.0) = \begin{pmatrix} 1 \\ 1 \end{pmatrix} \begin{pmatrix} 1 & 1 \end{pmatrix} = \begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix} \\ \end{aligned} (5.0−6.0,4.0−5.0)T(5.0−6.0,4.0−5.0)=(−1−1)(−1−1)=(1111)(6.0−6.0,5.0−5.0)T(6.0−6.0,5.0−5.0)=(00)(00)=(0000)(7.0−6.0,6.0−5.0)T(7.0−6.0,6.0−5.0)=(11)(11)=(1111)
所以对于类别 A 的贡献是:
S w , A = ( 1 1 1 1 ) + ( 0 0 0 0 ) + ( 1 1 1 1 ) = ( 2 2 2 2 ) S_{w, A} = \begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix} + \begin{pmatrix} 0 & 0 \\ 0 & 0 \end{pmatrix} + \begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix} = \begin{pmatrix} 2 & 2 \\ 2 & 2 \end{pmatrix} Sw,A=(1111)+(0000)+(1111)=(2222)
类别 B 的贡献是:
S w , B = ( 1 1 1 1 ) + ( 0 0 0 0 ) + ( 1 1 1 1 ) = ( 2 2 2 2 ) S_{w, B} = \begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix} + \begin{pmatrix} 0 & 0 \\ 0 & 0 \end{pmatrix} + \begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix} = \begin{pmatrix} 2 & 2 \\ 2 & 2 \end{pmatrix} Sw,B=(1111)+(0000)+(1111)=(2222)
因此,总的类内散布矩阵 S w S_w Sw 为:
S w = S w , A + S w , B = ( 2 2 2 2 ) + ( 2 2 2 2 ) = ( 4 4 4 4 ) S_w = S_{w, A} + S_{w, B} = \begin{pmatrix} 2 & 2 \\ 2 & 2 \end{pmatrix} + \begin{pmatrix} 2 & 2 \\ 2 & 2 \end{pmatrix} = \begin{pmatrix} 4 & 4 \\ 4 & 4 \end{pmatrix} Sw=Sw,A+Sw,B=(2222)+(2222)=(4444)
类间散布矩阵 S b S_b Sb:
类间散布矩阵 S b S_b Sb是基于各类别均值向量和总体均值向量计算的:
S b = n A ( μ A − μ ) ( μ A − μ ) T + n B ( μ B − μ ) ( μ B − μ ) T S_b = n_A (\mu_A - \mu)(\mu_A - \mu)^T + n_B (\mu_B - \mu)(\mu_B - \mu)^T Sb=nA(μA−μ)(μA−μ)T+nB(μB−μ)(μB−μ)T
其中, μ \mu μ 是总体均值向量, n A n_A nA 和 n B n_B nB 分别是类别 A 和 B 的样本数。
总体均值向量 μ \mu μ :
μ = ( 2.0 + 3.0 + 4.0 + 5.0 + 6.0 + 7.0 6 , 3.0 + 4.0 + 5.0 + 4.0 + 5.0 + 6.0 6 ) = ( 27 6 , 27 6 ) = ( 4.5 , 4.5 ) \mu = \left( \frac{2.0 + 3.0 + 4.0 + 5.0 + 6.0 + 7.0}{6}, \frac{3.0 + 4.0 + 5.0 + 4.0 + 5.0 + 6.0}{6} \right) = \left( \frac{27}{6}, \frac{27}{6} \right) = (4.5, 4.5) μ=(62.0+3.0+4.0+5.0+6.0+7.0,63.0+4.0+5.0+4.0+5.0+6.0)=(627,627)=(4.5,4.5)
类别 A 的样本数 n A = 3 n_A = 3 nA=3,类别 B 的样本数 n B = 3 n_B = 3 nB=3。
计算 ( μ A − μ ) (\mu_A - \mu) (μA−μ) 和 ( μ B − μ ) (\mu_B - \mu) (μB−μ):
μ A − μ = ( 3.0 − 4.5 , 4.0 − 4.5 ) = ( − 1.5 , − 0.5 ) \mu_A - \mu = (3.0 - 4.5, 4.0 - 4.5) = (-1.5, -0.5) μA−μ=(3.0−4.5,4.0−4.5)=(−1.5,−0.5)
μ B − μ = ( 6.0 − 4.5 , 5.0 − 4.5 ) = ( 1.5 , 0.5 ) \mu_B - \mu = (6.0 - 4.5, 5.0 - 4.5) = (1.5, 0.5) μB−μ=(6.0−4.5,5.0−4.5)=(1.5,0.5)
因此,类间散布矩阵 S b S_b Sb为:
S b = 3 ( − 1.5 − 0.5 ) ( − 1.5 − 0.5 ) + 3 ( 1.5 0.5 ) ( 1.5 0.5 ) = 3 ( 2.25 0.75 0.75 0.25 ) + 3 ( 2.25 0.75 0.75 0.25 ) = 3 ( 2.25 0.75 0.75 0.25 ) + 3 ( 2.25 0.75 0.75 0.25 ) = 3 ⋅ 2 ( 2.25 0.75 0.75 0.25 ) = 6 ( 2.25 0.75 0.75 0.25 ) = ( 13.5 4.5 4.5 1.5 ) \begin{aligned} S_b & = 3 \begin{pmatrix} -1.5 \\ -0.5 \end{pmatrix} \begin{pmatrix} -1.5 & -0.5 \end{pmatrix} + 3 \begin{pmatrix} 1.5 \\ 0.5 \end{pmatrix} \begin{pmatrix} 1.5 & 0.5 \end{pmatrix} \\ & = 3 \begin{pmatrix} 2.25 & 0.75 \\ 0.75 & 0.25 \end{pmatrix} + 3 \begin{pmatrix} 2.25 & 0.75 \\ 0.75 & 0.25 \end{pmatrix} \\ & = 3 \begin{pmatrix} 2.25 & 0.75 \\ 0.75 & 0.25 \end{pmatrix} + 3 \begin{pmatrix} 2.25 & 0.75 \\ 0.75 & 0.25 \end{pmatrix} \\ & = 3 \cdot 2 \begin{pmatrix} 2.25 & 0.75 \\ 0.75 & 0.25 \end{pmatrix} \\ & = 6 \begin{pmatrix} 2.25 & 0.75 \\ 0.75 & 0.25 \end{pmatrix} \\ & = \begin{pmatrix} 13.5 & 4.5 \\ 4.5 & 1.5 \end{pmatrix} \end{aligned} Sb=3(−1.5−0.5)(−1.5−0.5)+3(1.50.5)(1.50.5)=3(2.250.750.750.25)+3(2.250.750.750.25)=3(2.250.750.750.25)+3(2.250.750.750.25)=3⋅2(2.250.750.750.25)=6(2.250.750.750.25)=(13.54.54.51.5)
步骤 3: 求解广义特征值问题
我们需要求解以下广义特征值问题:
S w − 1 S b w = λ w S_w^{-1} S_b \mathbf{w} = \lambda \mathbf{w} Sw−1Sbw=λw
首先计算 S w S_w Sw 的逆矩阵之前,我们需要确保 S w S_w Sw 是可逆的。如果 S w S_w Sw 是奇异矩阵,我们可以通过添加一个小的正则化参数 $ \epsilon $ 来使其可逆。
假设我们添加一个小的正则化参数 ϵ = 0.01 \epsilon = 0.01 ϵ=0.01:
S w = ( 4 4 4 4 ) + 0.01 ( 1 0 0 1 ) = ( 4.01 4 4 4.01 ) S_w = \begin{pmatrix} 4 & 4 \\ 4 & 4 \end{pmatrix} + 0.01 \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} = \begin{pmatrix} 4.01 & 4 \\ 4 & 4.01 \end{pmatrix} Sw=(4444)+0.01(1001)=(4.01444.01)
然后计算 S w S_w Sw 的逆矩阵:
S w − 1 = 1 det ( S w ) ( 4.01 − 4 − 4 4.01 ) S_w^{-1} = \frac{1}{\text{det}(S_w)} \begin{pmatrix} 4.01 & -4 \\ -4 & 4.01 \end{pmatrix} Sw−1=det(Sw)1(4.01−4−44.01)
其中, det ( S w ) = 4.01 ⋅ 4.01 − 4 ⋅ 4 = 16.0801 − 16 = 0.0801 \text{det}(S_w) = 4.01 \cdot 4.01 - 4 \cdot 4 = 16.0801 - 16 = 0.0801 det(Sw)=4.01⋅4.01−4⋅4=16.0801−16=0.0801,所以:
S w − 1 = 1 0.0801 ( 4.01 − 4 − 4 4.01 ) = ( 50.0 − 49.94 − 49.94 50.0 ) S_w^{-1} = \frac{1}{0.0801} \begin{pmatrix} 4.01 & -4 \\ -4 & 4.01 \end{pmatrix} = \begin{pmatrix} 50.0 & -49.94 \\ -49.94 & 50.0 \end{pmatrix} Sw−1=0.08011(4.01−4−44.01)=(50.0−49.94−49.9450.0)
然后我们计算 S w − 1 S b S_w^{-1} S_b Sw−1Sb:
S b = ( 13.5 4.5 4.5 1.5 ) S_b = \begin{pmatrix} 13.5 & 4.5 \\ 4.5 & 1.5 \end{pmatrix} Sb=(13.54.54.51.5)
S w − 1 S b = ( 50.0 − 49.94 − 49.94 50.0 ) ( 13.5 4.5 4.5 1.5 ) S_w^{-1} S_b = \begin{pmatrix} 50.0 & -49.94 \\ -49.94 & 50.0 \end{pmatrix} \begin{pmatrix} 13.5 & 4.5 \\ 4.5 & 1.5 \end{pmatrix} Sw−1Sb=(50.0−49.94−49.9450.0)(13.54.54.51.5)
通过矩阵乘法得到:
S w − 1 S b = ( 50.0 ⋅ 13.5 + ( − 49.94 ) ⋅ 4.5 50.0 ⋅ 4.5 + ( − 49.94 ) ⋅ 1.5 ( − 49.94 ) ⋅ 13.5 + 50.0 ⋅ 4.5 ( − 49.94 ) ⋅ 4.5 + 50.0 ⋅ 1.5 ) S_w^{-1} S_b = \begin{pmatrix} 50.0 \cdot 13.5 + (-49.94) \cdot 4.5 & 50.0 \cdot 4.5 + (-49.94) \cdot 1.5 \\ (-49.94) \cdot 13.5 + 50.0 \cdot 4.5 & (-49.94) \cdot 4.5 + 50.0 \cdot 1.5 \end{pmatrix} Sw−1Sb=(50.0⋅13.5+(−49.94)⋅4.5(−49.94)⋅13.5+50.0⋅4.550.0⋅4.5+(−49.94)⋅1.5(−49.94)⋅4.5+50.0⋅1.5)
= ( 675 − 224.73 225 − 74.91 − 674.19 + 225 − 224.73 + 75 ) = ( 450.27 150.09 − 449.19 − 149.73 ) = \begin{pmatrix} 675 - 224.73 & 225 - 74.91 \\ -674.19 + 225 & -224.73 + 75 \end{pmatrix} = \begin{pmatrix} 450.27 & 150.09 \\ -449.19 & -149.73 \end{pmatrix} =(675−224.73−674.19+225225−74.91−224.73+75)=(450.27−449.19150.09−149.73)
步骤 4: 选择特征向量
我们需要找到广义特征值问题 S w − 1 S b w = λ w S_w^{-1} S_b \mathbf{w} = \lambda \mathbf{w} Sw−1Sbw=λw 的特征值和特征向量。假设我们得到了如下的特征值和特征向量(这一步通常由线性代数库来完成):
假设最大的特征值对应的特征向量为: w = ( 0.707 0.707 ) \mathbf{w} = \begin{pmatrix} 0.707 \\ 0.707 \end{pmatrix} w=(0.7070.707)
步骤 5: 将数据投影到新空间
最后,我们将数据投影到新空间: y = w T x y = \mathbf{w}^T \mathbf{x} y=wTx
即: y = ( 0.707 0.707 ) ( x 1 x 2 ) = 0.707 x 1 + 0.707 x 2 y = \begin{pmatrix} 0.707 & 0.707 \end{pmatrix} \begin{pmatrix} x_1 \\ x_2 \end{pmatrix} = 0.707 x_1 + 0.707 x_2 y=(0.7070.707)(x1x2)=0.707x1+0.707x2
类别不平衡问题
决策树
好的,我将举一个简单的例子来说明如何计算信息熵、信息增益、信息增益比和基尼系数,这些是在决策树算法(如ID3、C4.5和CART)中常用的划分原理。
假设我们有一个数据集,其中包含以下样本:
样本 | 天气 | 温度 | 玩耍 |
---|---|---|---|
1 | 晴朗 | 热 | 否 |
2 | 晴朗 | 热 | 否 |
3 | 阴天 | 热 | 是 |
4 | 雨天 | 温暖 | 是 |
5 | 雨天 | 冷 | 是 |
6 | 雨天 | 冷 | 否 |
7 | 阴天 | 冷 | 是 |
8 | 晴朗 | 温暖 | 否 |
9 | 晴朗 | 冷 | 是 |
10 | 雨天 | 温暖 | 是 |
11 | 晴朗 | 温暖 | 是 |
12 | 阴天 | 温暖 | 是 |
13 | 阴天 | 热 | 是 |
14 | 雨天 | 温暖 | 否 |
信息熵(Entropy)
信息熵衡量数据集的纯度,计算公式为:
H ( S ) = − ∑ i = 1 n p i log 2 ( p i ) H(S) = - \sum_{i=1}^{n} p_i \log_2(p_i) H(S)=−∑i=1npilog2(pi)
其中, p i p_i pi 是第 i i i 类的概率。
首先计算整个数据集的熵:
- 样本数 = 14
- 玩耍 = 否:5 个
- 玩耍 = 是:9 个
p ( 否 ) = 5 14 , p ( 是 ) = 9 14 p(\text{否}) = \frac{5}{14}, \quad p(\text{是}) = \frac{9}{14} p(否)=145,p(是)=149
H ( S ) = − ( 5 14 log 2 5 14 + 9 14 log 2 9 14 ) H(S) = - \left( \frac{5}{14} \log_2 \frac{5}{14} + \frac{9}{14} \log_2 \frac{9}{14} \right) H(S)=−(145log2145+149log2149)
计算得:
H ( S ) ≈ 0.940 H(S) \approx 0.940 H(S)≈0.940
信息增益(Information Gain)
1. 计算特征“天气”的各子集的熵:
天气 | 样本数 | 玩耍=否 | 玩耍=是 |
---|---|---|---|
晴朗 | 5 | 3 | 2 |
阴天 | 4 | 0 | 4 |
雨天 | 5 | 2 | 3 |
计算各子集的熵:
- 晴朗:
H ( 晴朗 ) = − ( 3 5 log 2 3 5 + 2 5 log 2 2 5 ) H(\text{晴朗}) = - \left( \frac{3}{5} \log_2 \frac{3}{5} + \frac{2}{5} \log_2 \frac{2}{5} \right) H(晴朗)=−(53log253+52log252)
计算得:
H ( 晴朗 ) ≈ 0.971 H(\text{晴朗}) \approx 0.971 H(晴朗)≈0.971
- 阴天:
H ( 阴天 ) = − ( 0 4 log 2 0 4 + 4 4 log 2 4 4 ) H(\text{阴天}) = - \left( \frac{0}{4} \log_2 \frac{0}{4} + \frac{4}{4} \log_2 \frac{4}{4} \right) H(阴天)=−(40log240+44log244)
由于 log 2 ( 1 ) = 0 \log_2(1) = 0 log2(1)=0,所以:
H ( 阴天 ) = 0 H(\text{阴天}) = 0 H(阴天)=0
- 雨天:
H ( 雨天 ) = − ( 2 5 log 2 2 5 + 3 5 log 2 3 5 ) H(\text{雨天}) = - \left( \frac{2}{5} \log_2 \frac{2}{5} + \frac{3}{5} \log_2 \frac{3}{5} \right) H(雨天)=−(52log252+53log253)
计算得:
H ( 雨天 ) ≈ 0.971 H(\text{雨天}) \approx 0.971 H(雨天)≈0.971
2. 计算特征“天气”的加权平均熵:
H ( 天气 ) = 5 14 H ( 晴朗 ) + 4 14 H ( 阴天 ) + 5 14 H ( 雨天 ) H(\text{天气}) = \frac{5}{14} H(\text{晴朗}) + \frac{4}{14} H(\text{阴天}) + \frac{5}{14} H(\text{雨天}) H(天气)=145H(晴朗)+144H(阴天)+145H(雨天)
H ( 天气 ) = 5 14 × 0.971 + 4 14 × 0 + 5 14 × 0.971 H(\text{天气}) = \frac{5}{14} \times 0.971 + \frac{4}{14} \times 0 + \frac{5}{14} \times 0.971 H(天气)=145×0.971+144×0+145×0.971
计算得:
H ( 天气 ) = 5 14 × 0.971 + 5 14 × 0.971 H(\text{天气}) = \frac{5}{14} \times 0.971 + \frac{5}{14} \times 0.971 H(天气)=145×0.971+145×0.971
H ( 天气 ) = 10 14 × 0.971 H(\text{天气}) = \frac{10}{14} \times 0.971 H(天气)=1410×0.971
H ( 天气 ) ≈ 0.693 H(\text{天气}) \approx 0.693 H(天气)≈0.693
3. 计算信息增益:
信息增益的公式为:
I G ( S , 天气 ) = H ( S ) − H ( 天气 ) IG(S, \text{天气}) = H(S) - H(\text{天气}) IG(S,天气)=H(S)−H(天气)
我们之前计算得 H ( S ) ≈ 0.940 H(S) \approx 0.940 H(S)≈0.940 。
I G ( S , 天气 ) = 0.940 − 0.693 IG(S, \text{天气}) = 0.940 - 0.693 IG(S,天气)=0.940−0.693
计算得:
I G ( S , 天气 ) ≈ 0.247 IG(S, \text{天气}) \approx 0.247 IG(S,天气)≈0.247
信息增益比(Information Gain Ratio)
信息增益比用于C4.5算法,它在信息增益的基础上进行了标准化,以避免偏向于多值特征。
信息增益比的计算公式为:
I G R ( S , A ) = I G ( S , A ) H A ( S ) IGR(S, A) = \frac{IG(S, A)}{H_A(S)} IGR(S,A)=HA(S)IG(S,A)
其中, H A ( S ) H_A(S) HA(S) 是特征 A 的固有值(Intrinsic Value),计算公式为:
H A ( S ) = − ∑ v ∈ Values ( A ) ∣ S v ∣ ∣ S ∣ log 2 ( ∣ S v ∣ ∣ S ∣ ) H_A(S) = - \sum_{v \in \text{Values}(A)} \frac{|S_v|}{|S|} \log_2 \left( \frac{|S_v|}{|S|} \right) HA(S)=−∑v∈Values(A)∣S∣∣Sv∣log2(∣S∣∣Sv∣)
对于特征“天气”:
H A ( 天气 ) = − ( 5 14 log 2 5 14 + 4 14 log 2 4 14 + 5 14 log 2 5 14 ) H_A(\text{天气}) = - \left( \frac{5}{14} \log_2 \frac{5}{14} + \frac{4}{14} \log_2 \frac{4}{14} + \frac{5}{14} \log_2 \frac{5}{14} \right) HA(天气)=−(145log2145+144log2144+145log2145)
计算得:
H A ( 天气 ) ≈ 1.577 H_A(\text{天气}) \approx 1.577 HA(天气)≈1.577
于是:
I G R ( S , 天气 ) = 0.247 1.577 ≈ 0.157 IGR(S, \text{天气}) = \frac{0.247}{1.577} \approx 0.157 IGR(S,天气)=1.5770.247≈0.157
好的,我们重新计算基尼系数及其后续部分。
基尼系数(Gini Index)
基尼系数用于CART算法来衡量数据集的不纯度。基尼系数的计算公式为:
G i n i ( S ) = 1 − ∑ i = 1 n p i 2 Gini(S) = 1 - \sum_{i=1}^{n} p_i^2 Gini(S)=1−∑i=1npi2
其中, p i p_i pi 是第 i i i 类的概率。
首先计算整个数据集的基尼系数:
- 样本数 = 14
- 玩耍 = 否:5 个
- 玩耍 = 是:9 个
p ( 否 ) = 5 14 , p ( 是 ) = 9 14 p(\text{否}) = \frac{5}{14}, \quad p(\text{是}) = \frac{9}{14} p(否)=145,p(是)=149
G i n i ( S ) = 1 − ( ( 5 14 ) 2 + ( 9 14 ) 2 ) Gini(S) = 1 - \left( \left(\frac{5}{14}\right)^2 + \left(\frac{9}{14}\right)^2 \right) Gini(S)=1−((145)2+(149)2)
计算得:
G i n i ( S ) = 1 − ( 25 196 + 81 196 ) Gini(S) = 1 - \left( \frac{25}{196} + \frac{81}{196} \right) Gini(S)=1−(19625+19681)
G i n i ( S ) = 1 − 106 196 ≈ 0.459 Gini(S) = 1 - \frac{106}{196} \approx 0.459 Gini(S)=1−196106≈0.459
基尼系数的加权平均
假设我们选择特征“天气”来计算基尼系数:
天气 | 样本数 | 玩耍=否 | 玩耍=是 |
---|---|---|---|
晴朗 | 5 | 3 | 2 |
阴天 | 4 | 0 | 4 |
雨天 | 5 | 2 | 3 |
计算各子集的基尼系数:
- 晴朗:
G i n i ( 晴朗 ) = 1 − ( ( 3 5 ) 2 + ( 2 5 ) 2 ) Gini(\text{晴朗}) = 1 - \left( \left(\frac{3}{5}\right)^2 + \left(\frac{2}{5}\right)^2 \right) Gini(晴朗)=1−((53)2+(52)2)
计算得:
G i n i ( 晴朗 ) = 1 − ( 9 25 + 4 25 ) = 1 − 13 25 = 0.48 Gini(\text{晴朗}) = 1 - \left( \frac{9}{25} + \frac{4}{25} \right) = 1 - \frac{13}{25} = 0.48 Gini(晴朗)=1−(259+254)=1−2513=0.48
- 阴天:
G i n i ( 阴天 ) = 1 − ( ( 0 4 ) 2 + ( 4 4 ) 2 ) Gini(\text{阴天}) = 1 - \left( \left(\frac{0}{4}\right)^2 + \left(\frac{4}{4}\right)^2 \right) Gini(阴天)=1−((40)2+(44)2)
由于 ( 4 4 ) 2 = 1 (\frac{4}{4})^2 = 1 (44)2=1,所以:
G i n i ( 阴天 ) = 1 − 1 = 0 Gini(\text{阴天}) = 1 - 1 = 0 Gini(阴天)=1−1=0
- 雨天:
G i n i ( 雨天 ) = 1 − ( ( 2 5 ) 2 + ( 3 5 ) 2 ) Gini(\text{雨天}) = 1 - \left( \left(\frac{2}{5}\right)^2 + \left(\frac{3}{5}\right)^2 \right) Gini(雨天)=1−((52)2+(53)2)
计算得:
G i n i ( 雨天 ) = 1 − ( 4 25 + 9 25 ) = 1 − 13 25 = 0.48 Gini(\text{雨天}) = 1 - \left( \frac{4}{25} + \frac{9}{25} \right) = 1 - \frac{13}{25} = 0.48 Gini(雨天)=1−(254+259)=1−2513=0.48
计算特征“天气”的加权平均基尼系数:
G i n i ( 天气 ) = 5 14 G i n i ( 晴朗 ) + 4 14 G i n i ( 阴天 ) + 5 14 G i n i ( 雨天 ) Gini(\text{天气}) = \frac{5}{14} Gini(\text{晴朗}) + \frac{4}{14} Gini(\text{阴天}) + \frac{5}{14} Gini(\text{雨天}) Gini(天气)=145Gini(晴朗)+144Gini(阴天)+145Gini(雨天)
G i n i ( 天气 ) = 5 14 × 0.48 + 4 14 × 0 + 5 14 × 0.48 Gini(\text{天气}) = \frac{5}{14} \times 0.48 + \frac{4}{14} \times 0 + \frac{5}{14} \times 0.48 Gini(天气)=145×0.48+144×0+145×0.48
计算得:
G i n i ( 天气 ) = 10 14 × 0.48 Gini(\text{天气}) = \frac{10}{14} \times 0.48 Gini(天气)=1410×0.48
G i n i ( 天气 ) ≈ 0.343 Gini(\text{天气}) \approx 0.343 Gini(天气)≈0.343
剪枝
预剪枝:在构造完整决策树过程中先评估,再决定是否分支;大大减少了训练的时间开销,同时降低了过拟合的风险
后剪枝:在构造完决策树后自底向上评估分支的必要性;性能优于预剪枝,但带来了额外的时间开销
梯度逆向传播算法
我们假设一个简单的神经网络,有如下结构:
- 输入层:2个神经元(输入特征 x 1 x_1 x1 和 x 2 x_2 x2)
- 隐藏层:2个神经元
- 输出层:1个神经元
激活函数我们使用Sigmoid函数。Sigmoid函数定义为:
σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+e−z1
网络权重和偏置
初始权重和偏置如下:
- 输入层到隐藏层的权重: w 1 , 1 ( 1 ) , w 1 , 2 ( 1 ) , w 2 , 1 ( 1 ) , w 2 , 2 ( 1 ) w_{1,1}^{(1)}, w_{1,2}^{(1)}, w_{2,1}^{(1)}, w_{2,2}^{(1)} w1,1(1),w1,2(1),w2,1(1),w2,2(1)
- 隐藏层到输出层的权重: w 1 , 1 ( 2 ) , w 2 , 1 ( 2 ) w_{1,1}^{(2)}, w_{2,1}^{(2)} w1,1(2),w2,1(2)
- 隐藏层的偏置: b 1 ( 1 ) , b 2 ( 1 ) b_1^{(1)}, b_2^{(1)} b1(1),b2(1)
- 输出层的偏置: b 1 ( 2 ) b_1^{(2)} b1(2)
我们假设初始权重和偏置如下(为了简单起见):
w 1 , 1 ( 1 ) = 0.15 , w 1 , 2 ( 1 ) = 0.25 , w 2 , 1 ( 1 ) = 0.20 , w 2 , 2 ( 1 ) = 0.30 , b 1 ( 1 ) = 0.35 , b 2 ( 1 ) = 0.35 , w 1 , 1 ( 2 ) = 0.40 , w 2 , 1 ( 2 ) = 0.50 , b 1 ( 2 ) = 0.60 \begin{aligned} & w_{1,1}^{(1)} = 0.15, \quad w_{1,2}^{(1)} = 0.25, \\ & w_{2,1}^{(1)} = 0.20, \quad w_{2,2}^{(1)} = 0.30, \\ & b_1^{(1)} = 0.35, \quad b_2^{(1)} = 0.35, \\ & w_{1,1}^{(2)} = 0.40, \quad w_{2,1}^{(2)} = 0.50, \\ & b_1^{(2)} = 0.60 \end{aligned} w1,1(1)=0.15,w1,2(1)=0.25,w2,1(1)=0.20,w2,2(1)=0.30,b1(1)=0.35,b2(1)=0.35,w1,1(2)=0.40,w2,1(2)=0.50,b1(2)=0.60
前向传播(Forward Propagation)
给定输入 x 1 = 0.05 x_1 = 0.05 x1=0.05 和 x 2 = 0.10 x_2 = 0.10 x2=0.10,我们首先进行前向传播:
计算隐藏层输出:
z 1 ( 1 ) = w 1 , 1 ( 1 ) x 1 + w 2 , 1 ( 1 ) x 2 + b 1 ( 1 ) = 0.15 ⋅ 0.05 + 0.20 ⋅ 0.10 + 0.35 = 0.3775 z 2 ( 1 ) = w 1 , 2 ( 1 ) x 1 + w 2 , 2 ( 1 ) x 2 + b 2 ( 1 ) = 0.25 ⋅ 0.05 + 0.30 ⋅ 0.10 + 0.35 = 0.3925 \begin{aligned} & z_1^{(1)} = w_{1,1}^{(1)} x_1 + w_{2,1}^{(1)} x_2 + b_1^{(1)} = 0.15 \cdot 0.05 + 0.20 \cdot 0.10 + 0.35 = 0.3775 \\ & z_2^{(1)} = w_{1,2}^{(1)} x_1 + w_{2,2}^{(1)} x_2 + b_2^{(1)} = 0.25 \cdot 0.05 + 0.30 \cdot 0.10 + 0.35 = 0.3925 \end{aligned} z1(1)=w1,1(1)x1+w2,1(1)x2+b1(1)=0.15⋅0.05+0.20⋅0.10+0.35=0.3775z2(1)=w1,2(1)x1+w2,2(1)x2+b2(1)=0.25⋅0.05+0.30⋅0.10+0.35=0.3925
应用激活函数:
a 1 ( 1 ) = σ ( z 1 ( 1 ) ) = 1 1 + e − 0.3775 ≈ 0.5933 a 2 ( 1 ) = σ ( z 2 ( 1 ) ) = 1 1 + e − 0.3925 ≈ 0.5968 \begin{aligned} & a_1^{(1)} = \sigma(z_1^{(1)}) = \frac{1}{1 + e^{-0.3775}} \approx 0.5933 \\ & a_2^{(1)} = \sigma(z_2^{(1)}) = \frac{1}{1 + e^{-0.3925}} \approx 0.5968 \end{aligned} a1(1)=σ(z1(1))=1+e−0.37751≈0.5933a2(1)=σ(z2(1))=1+e−0.39251≈0.5968
计算输出层输出:
z 1 ( 2 ) = w 1 , 1 ( 2 ) a 1 ( 1 ) + w 2 , 1 ( 2 ) a 2 ( 1 ) + b 1 ( 2 ) = 0.40 ⋅ 0.5933 + 0.50 ⋅ 0.5968 + 0.60 = 1.1059 \begin{aligned} & z_1^{(2)} = w_{1,1}^{(2)} a_1^{(1)} + w_{2,1}^{(2)} a_2^{(1)} + b_1^{(2)} = 0.40 \cdot 0.5933 + 0.50 \cdot 0.5968 + 0.60 = 1.1059 \end{aligned} z1(2)=w1,1(2)a1(1)+w2,1(2)a2(1)+b1(2)=0.40⋅0.5933+0.50⋅0.5968+0.60=1.1059
应用激活函数:
a 1 ( 2 ) = σ ( z 1 ( 2 ) ) = 1 1 + e − 1.1059 ≈ 0.7516 a_1^{(2)} = \sigma(z_1^{(2)}) = \frac{1}{1 + e^{-1.1059}} \approx 0.7516 a1(2)=σ(z1(2))=1+e−1.10591≈0.7516
计算误差(Error Calculation)
假设目标输出为 y = 0.01 y = 0.01 y=0.01。使用均方误差(Mean Squared Error, MSE)作为损失函数:
Error = 1 2 ( y target − y output ) 2 \text{Error} = \frac{1}{2}(y_{\text{target}} - y_{\text{output}})^2 Error=21(ytarget−youtput)2
对于我们的例子:
Error = 1 2 ( 0.01 − 0.7516 ) 2 ≈ 1 2 ( − 0.7416 ) 2 ≈ 0.2748 \text{Error} = \frac{1}{2}(0.01 - 0.7516)^2 \approx \frac{1}{2}(-0.7416)^2 \approx 0.2748 Error=21(0.01−0.7516)2≈21(−0.7416)2≈0.2748
反向传播(Backpropagation)
反向传播的目的是通过计算损失函数关于各个权重的梯度来更新权重,以最小化误差。我们使用梯度下降法来进行权重更新。
1. 计算输出层的误差项(Delta)
输出层的误差项 δ \delta δ 计算如下:
δ ( 2 ) = ( a ( 2 ) − y ) ⋅ σ ′ ( z ( 2 ) ) \delta^{(2)} = (a^{(2)} - y) \cdot \sigma'(z^{(2)}) δ(2)=(a(2)−y)⋅σ′(z(2))
其中, σ ′ ( z ( 2 ) ) \sigma'(z^{(2)}) σ′(z(2)) 是 Sigmoid 函数的导数:
σ ′ ( z ) = σ ( z ) ⋅ ( 1 − σ ( z ) ) \sigma'(z) = \sigma(z) \cdot (1 - \sigma(z)) σ′(z)=σ(z)⋅(1−σ(z))
对于输出层:
σ ′ ( z ( 2 ) ) = a 1 ( 2 ) ⋅ ( 1 − a 1 ( 2 ) ) ≈ 0.7516 ⋅ ( 1 − 0.7516 ) ≈ 0.1868 \sigma'(z^{(2)}) = a_1^{(2)} \cdot (1 - a_1^{(2)}) \approx 0.7516 \cdot (1 - 0.7516) \approx 0.1868 σ′(z(2))=a1(2)⋅(1−a1(2))≈0.7516⋅(1−0.7516)≈0.1868
所以输出层的误差项为:
δ 1 ( 2 ) = ( 0.7516 − 0.01 ) ⋅ 0.1868 ≈ 0.1381 \delta_1^{(2)} = (0.7516 - 0.01) \cdot 0.1868 \approx 0.1381 δ1(2)=(0.7516−0.01)⋅0.1868≈0.1381
2. 计算隐藏层的误差项
隐藏层的误差项 δ \delta δ 通过输出层的误差项反向传播回来:
δ ( 1 ) = δ ( 2 ) ⋅ w ( 2 ) ⋅ σ ′ ( z ( 1 ) ) \delta^{(1)} = \delta^{(2)} \cdot w^{(2)} \cdot \sigma'(z^{(1)}) δ(1)=δ(2)⋅w(2)⋅σ′(z(1))
对于隐藏层的第一个神经元:
σ ′ ( z 1 ( 1 ) ) = a 1 ( 1 ) ⋅ ( 1 − a 1 ( 1 ) ) ≈ 0.5933 ⋅ ( 1 − 0.5933 ) ≈ 0.2413 \sigma'(z_1^{(1)}) = a_1^{(1)} \cdot (1 - a_1^{(1)}) \approx 0.5933 \cdot (1 - 0.5933) \approx 0.2413 σ′(z1(1))=a1(1)⋅(1−a1(1))≈0.5933⋅(1−0.5933)≈0.2413
所以第一个隐藏层神经元的误差项为:
δ 1 ( 1 ) = δ 1 ( 2 ) ⋅ w 1 , 1 ( 2 ) ⋅ σ ′ ( z 1 ( 1 ) ) ≈ 0.1381 ⋅ 0.40 ⋅ 0.2413 ≈ 0.0133 \delta_1^{(1)} = \delta_1^{(2)} \cdot w_{1,1}^{(2)} \cdot \sigma'(z_1^{(1)}) \approx 0.1381 \cdot 0.40 \cdot 0.2413 \approx 0.0133 δ1(1)=δ1(2)⋅w1,1(2)⋅σ′(z1(1))≈0.1381⋅0.40⋅0.2413≈0.0133
对于隐藏层的第二个神经元:
σ ′ ( z 2 ( 1 ) ) = a 2 ( 1 ) ⋅ ( 1 − a 2 ( 1 ) ) ≈ 0.5968 ⋅ ( 1 − 0.5968 ) ≈ 0.2406 \sigma'(z_2^{(1)}) = a_2^{(1)} \cdot (1 - a_2^{(1)}) \approx 0.5968 \cdot (1 - 0.5968) \approx 0.2406 σ′(z2(1))=a2(1)⋅(1−a2(1))≈0.5968⋅(1−0.5968)≈0.2406
所以第二个隐藏层神经元的误差项为:
δ 2 ( 1 ) = δ 1 ( 2 ) ⋅ w 2 , 1 ( 2 ) ⋅ σ ′ ( z 2 ( 1 ) ) ≈ 0.1381 ⋅ 0.50 ⋅ 0.2406 ≈ 0.0166 \delta_2^{(1)} = \delta_1^{(2)} \cdot w_{2,1}^{(2)} \cdot \sigma'(z_2^{(1)}) \approx 0.1381 \cdot 0.50 \cdot 0.2406 \approx 0.0166 δ2(1)=δ1(2)⋅w2,1(2)⋅σ′(z2(1))≈0.1381⋅0.50⋅0.2406≈0.0166
3. 更新权重和偏置
使用梯度下降法更新权重和偏置。假设学习率 η = 0.5 \eta = 0.5 η=0.5。
更新输出层的权重和偏置
w 1 , 1 ( 2 ) = w 1 , 1 ( 2 ) − η ⋅ δ 1 ( 2 ) ⋅ a 1 ( 1 ) w 2 , 1 ( 2 ) = w 2 , 1 ( 2 ) − η ⋅ δ 1 ( 2 ) ⋅ a 2 ( 1 ) b 1 ( 2 ) = b 1 ( 2 ) − η ⋅ δ 1 ( 2 ) \begin{aligned} & w_{1,1}^{(2)} = w_{1,1}^{(2)} - \eta \cdot \delta_1^{(2)} \cdot a_1^{(1)} \\ & w_{2,1}^{(2)} = w_{2,1}^{(2)} - \eta \cdot \delta_1^{(2)} \cdot a_2^{(1)} \\ & b_1^{(2)} = b_1^{(2)} - \eta \cdot \delta_1^{(2)} \end{aligned} w1,1(2)=w1,1(2)−η⋅δ1(2)⋅a1(1)w2,1(2)=w2,1(2)−η⋅δ1(2)⋅a2(1)b1(2)=b1(2)−η⋅δ1(2)
计算得:
w 1 , 1 ( 2 ) = 0.40 − 0.5 ⋅ 0.1381 ⋅ 0.5933 ≈ 0.40 − 0.041 ≈ 0.359 w 2 , 1 ( 2 ) = 0.50 − 0.5 ⋅ 0.1381 ⋅ 0.5968 ≈ 0.50 − 0.0413 ≈ 0.459 b 1 ( 2 ) = 0.60 − 0.5 ⋅ 0.1381 ≈ 0.60 − 0.069 ≈ 0.531 \begin{aligned} & w_{1,1}^{(2)} = 0.40 - 0.5 \cdot 0.1381 \cdot 0.5933 \approx 0.40 - 0.041 \approx 0.359 \\ & w_{2,1}^{(2)} = 0.50 - 0.5 \cdot 0.1381 \cdot 0.5968 \approx 0.50 - 0.0413 \approx 0.459 \\ & b_1^{(2)} = 0.60 - 0.5 \cdot 0.1381 \approx 0.60 - 0.069 \approx 0.531 \end{aligned} w1,1(2)=0.40−0.5⋅0.1381⋅0.5933≈0.40−0.041≈0.359w2,1(2)=0.50−0.5⋅0.1381⋅0.5968≈0.50−0.0413≈0.459b1(2)=0.60−0.5⋅0.1381≈0.60−0.069≈0.531
更新隐藏层的权重和偏置
w 1 , 1 ( 1 ) = w 1 , 1 ( 1 ) − η ⋅ δ 1 ( 1 ) ⋅ x 1 w 2 , 1 ( 1 ) = w 2 , 1 ( 1 ) − η ⋅ δ 1 ( 1 ) ⋅ x 2 w 1 , 2 ( 1 ) = w 1 , 2 ( 1 ) − η ⋅ δ 2 ( 1 ) ⋅ x 1 w 2 , 2 ( 1 ) = w 2 , 2 ( 1 ) − η ⋅ δ 2 ( 1 ) ⋅ x 2 b 1 ( 1 ) = b 1 ( 1 ) − η ⋅ δ 1 ( 1 ) b 2 ( 1 ) = b 2 ( 1 ) − η ⋅ δ 2 ( 1 ) \begin{aligned} & w_{1,1}^{(1)} = w_{1,1}^{(1)} - \eta \cdot \delta_1^{(1)} \cdot x_1 \\ & w_{2,1}^{(1)} = w_{2,1}^{(1)} - \eta \cdot \delta_1^{(1)} \cdot x_2 \\ & w_{1,2}^{(1)} = w_{1,2}^{(1)} - \eta \cdot \delta_2^{(1)} \cdot x_1 \\ & w_{2,2}^{(1)} = w_{2,2}^{(1)} - \eta \cdot \delta_2^{(1)} \cdot x_2 \\ & b_1^{(1)} = b_1^{(1)} - \eta \cdot \delta_1^{(1)} \\ & b_2^{(1)} = b_2^{(1)} - \eta \cdot \delta_2^{(1)} \end{aligned} w1,1(1)=w1,1(1)−η⋅δ1(1)⋅x1w2,1(1)=w2,1(1)−η⋅δ1(1)⋅x2w1,2(1)=w1,2(1)−η⋅δ2(1)⋅x1w2,2(1)=w2,2(1)−η⋅δ2(1)⋅x2b1(1)=b1(1)−η⋅δ1(1)b2(1)=b2(1)−η⋅δ2(1)
计算得:
w 1 , 1 ( 1 ) = 0.15 − 0.5 ⋅ 0.0133 ⋅ 0.05 ≈ 0.15 − 0.0003 ≈ 0.14985 w 2 , 1 ( 1 ) = 0.20 − 0.5 ⋅ 0.0133 ⋅ 0.10 ≈ 0.20 − 0.00065 ≈ 0.19935 w 1 , 2 ( 1 ) = 0.25 − 0.5 ⋅ 0.0166 ⋅ 0.05 ≈ 0.25 − 0.000415 ≈ 0.249585 w 2 , 2 ( 1 ) = 0.30 − 0.5 ⋅ 0.0166 ⋅ 0.10 ≈ 0.30 − 0.00083 ≈ 0.29917 b 1 ( 1 ) = 0.35 − 0.5 ⋅ 0.0133 ≈ 0.35 − 0.00665 ≈ 0.34335 b 2 ( 1 ) = 0.35 − 0.5 ⋅ 0.0166 ≈ 0.35 − 0.0083 ≈ 0.3417 \begin{aligned} & w_{1,1}^{(1)} = 0.15 - 0.5 \cdot 0.0133 \cdot 0.05 \approx 0.15 - 0.0003 \approx 0.14985 \\ & w_{2,1}^{(1)} = 0.20 - 0.5 \cdot 0.0133 \cdot 0.10 \approx 0.20 - 0.00065 \approx 0.19935 \\ & w_{1,2}^{(1)} = 0.25 - 0.5 \cdot 0.0166 \cdot 0.05 \approx 0.25 - 0.000415 \approx 0.249585 \\ & w_{2,2}^{(1)} = 0.30 - 0.5 \cdot 0.0166 \cdot 0.10 \approx 0.30 - 0.00083 \approx 0.29917 \\ & b_1^{(1)} = 0.35 - 0.5 \cdot 0.0133 \approx 0.35 - 0.00665 \approx 0.34335 \\ & b_2^{(1)} = 0.35 - 0.5 \cdot 0.0166 \approx 0.35 - 0.0083 \approx 0.3417 \end{aligned} w1,1(1)=0.15−0.5⋅0.0133⋅0.05≈0.15−0.0003≈0.14985w2,1(1)=0.20−0.5⋅0.0133⋅0.10≈0.20−0.00065≈0.19935w1,2(1)=0.25−0.5⋅0.0166⋅0.05≈0.25−0.000415≈0.249585w2,2(1)=0.30−0.5⋅0.0166⋅0.10≈0.30−0.00083≈0.29917b1(1)=0.35−0.5⋅0.0133≈0.35−0.00665≈0.34335b2(1)=0.35−0.5⋅0.0166≈0.35−0.0083≈0.3417
SVM
数据集
我们有两个类别的点:
- 正类(+1):((2, 3)), ((3, 3)), ((4, 5))
- 负类(-1):((1, 1)), ((2, 1)), ((3, 2))
目标
我们希望找到一个能够分离这两类点的最优超平面。为了简化,我们假设这是一个线性可分的问题。
1. 表示超平面
在二维空间中,超平面表示为:
w 1 x 1 + w 2 x 2 + b = 0 w_1 x_1 + w_2 x_2 + b = 0 w1x1+w2x2+b=0
我们的目标是找到参数 w 1 w_1 w1, w 2 w_2 w2和 b b b,使得超平面最大化间隔。
2. 间隔的定义
对每个点 ( x i , y i ) (x_i, y_i) (xi,yi),我们希望满足:
y i ( w 1 x i 1 + w 2 x i 2 + b ) ≥ 1 y_i (w_1 x_{i1} + w_2 x_{i2} + b) \geq 1 yi(w1xi1+w2xi2+b)≥1
这保证了所有点都在间隔边界之外或恰好在间隔边界上。
3. 优化问题
我们要最大化间隔,同时满足上述约束。可以转化为以下优化问题:
min w , b 1 2 ∥ w ∥ 2 \min_{w, b} \frac{1}{2} \|w\|^2 minw,b21∥w∥2
subject to y i ( w 1 x i 1 + w 2 x i 2 + b ) ≥ 1 for all i \text{subject to } y_i (w_1 x_{i1} + w_2 x_{i2} + b) \geq 1 \text{ for all } i subject to yi(w1xi1+w2xi2+b)≥1 for all i
4. 拉格朗日乘子法
我们引入拉格朗日乘子 α i ≥ 0 \alpha_i \geq 0 αi≥0 来构建拉格朗日函数:
L ( w , b , α ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 n α i [ y i ( w ⋅ x i + b ) − 1 ] L(w, b, \alpha) = \frac{1}{2} \|w\|^2 - \sum_{i=1}^n \alpha_i [y_i (w \cdot x_i + b) - 1] L(w,b,α)=21∥w∥2−∑i=1nαi[yi(w⋅xi+b)−1]
5. 求解对偶问题
对 w w w 和 b b b 求偏导数并设置为 0:
∂ L ∂ w = w − ∑ i = 1 n α i y i x i = 0 ⟹ w = ∑ i = 1 n α i y i x i \frac{\partial L}{\partial w} = w - \sum_{i=1}^n \alpha_i y_i x_i = 0 \implies w = \sum_{i=1}^n \alpha_i y_i x_i ∂w∂L=w−∑i=1nαiyixi=0⟹w=∑i=1nαiyixi
∂ L ∂ b = ∑ i = 1 n α i y i = 0 \frac{\partial L}{\partial b} = \sum_{i=1}^n \alpha_i y_i = 0 ∂b∂L=∑i=1nαiyi=0
代入拉格朗日函数,得到对偶问题:
max α ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x i ⋅ x j ) \max_{\alpha} \sum_{i=1}^n \alpha_i - \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j (x_i \cdot x_j) maxα∑i=1nαi−21∑i=1n∑j=1nαiαjyiyj(xi⋅xj)
subject to ∑ i = 1 n α i y i = 0 and α i ≥ 0 \text{subject to } \sum_{i=1}^n \alpha_i y_i = 0 \text{ and } \alpha_i \geq 0 subject to ∑i=1nαiyi=0 and αi≥0
6. 使用 KKT 条件求解
利用库如 cvxopt
解决对偶问题,我们可以得到拉格朗日乘子
α
i
\alpha_i
αi。假设求得的
α
\alpha
α 为:
α = [ 0.5 , 0 , 0 , 0.5 , 0 , 0 ] \alpha = [0.5, 0, 0, 0.5, 0, 0] α=[0.5,0,0,0.5,0,0]
7. 确定支持向量和权重
支持向量为那些 α i > 0 \alpha_i > 0 αi>0 的点:
( 2 , 3 ) , ( 1 , 1 ) (2, 3), (1, 1) (2,3),(1,1)
权重向量 ( w ) 为:
w = ∑ i = 1 n α i y i x i = 0.5 ⋅ 1 ⋅ ( 2 , 3 ) + 0.5 ⋅ ( − 1 ) ⋅ ( 1 , 1 ) = ( 1 , 1 ) w = \sum_{i=1}^n \alpha_i y_i x_i = 0.5 \cdot 1 \cdot (2, 3) + 0.5 \cdot (-1) \cdot (1, 1) = (1, 1) w=∑i=1nαiyixi=0.5⋅1⋅(2,3)+0.5⋅(−1)⋅(1,1)=(1,1)
好的,让我们从第 8 步开始重新计算偏置 ( b )。
8. 计算偏置 ( b )
选择一个支持向量 (2, 3) 来计算 b b b :
y i ( w ⋅ x i + b ) = 1 y_i (w \cdot x_i + b) = 1 yi(w⋅xi+b)=1
带入支持向量 ( 2 , 3 ) (2, 3) (2,3) 和计算得到的权重向量 w = ( 1 , 1 ) w = (1, 1) w=(1,1):
1 ( ( 1 ⋅ 2 + 1 ⋅ 3 ) + b ) = 1 1 ((1 \cdot 2 + 1 \cdot 3) + b) = 1 1((1⋅2+1⋅3)+b)=1
即:
1 ( 2 + 3 + b ) = 1 1 (2 + 3 + b) = 1 1(2+3+b)=1
5 + b = 1 5 + b = 1 5+b=1
b = 1 − 5 b = 1 - 5 b=1−5
b = − 4 b = -4 b=−4
9. 得到分离超平面
现在我们有了权重向量 w = ( 1 , 1 ) w = (1, 1) w=(1,1) 和偏置 b = − 4 b = -4 b=−4,所以我们的分离超平面的方程为:
x 1 + x 2 − 4 = 0 x_1 + x_2 - 4 = 0 x1+x2−4=0
10. 验证超平面
为了确保我们的超平面是正确的,我们可以将数据点代入超平面方程并验证结果:
- 对于正类点 ((2, 3)):
1 ⋅ 2 + 1 ⋅ 3 − 4 = 2 + 3 − 4 = 1 > 0 1 \cdot 2 + 1 \cdot 3 - 4 = 2 + 3 - 4 = 1 > 0 1⋅2+1⋅3−4=2+3−4=1>0
- 对于负类点 ((1, 1)):
1 ⋅ 1 + 1 ⋅ 1 − 4 = 1 + 1 − 4 = − 2 < 0 1 \cdot 1 + 1 \cdot 1 - 4 = 1 + 1 - 4 = -2 < 0 1⋅1+1⋅1−4=1+1−4=−2<0
可以看到,正类点在超平面的一侧(结果为正),负类点在另一侧(结果为负),这验证了我们的超平面是正确的。
11. 图示
为了更直观地理解,我们可以画出数据点和分离超平面:
y
^
| * (4, 5)
|
| * (3, 3)
| * (2, 3)
|
|----------------------> x
| * (1, 1)
| * (2, 1)
| * (3, 2)
分离超平面 x 1 + x 2 − 4 = 0 x_1 + x_2 - 4 = 0 x1+x2−4=0 可以画成一条直线:
y
^
| * (4, 5)
|
| * (3, 3)
| * (2, 3)
| /
| / (x_1 + x_2 - 4 = 0)
| /
| * (1, 1)
| * (2, 1)
| * (3, 2)
|----------------------> x
12. 软间隔
现实中, 很难确定合适的核函数使得训练样本在特征空间中线性可分; 同时一个线性可分的结果也很难断定是否是有过拟合造成的。引入”软间隔”的概念, 允许支持向量机在一些样本上不满足约束.
m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m l 0 / 1 ( y i ( w T x i + b ) − 1 ) min_{w,b}\frac{1}{2}||w||^2+C\sum_{i=1}^ml_{0/1}(y_i(w^Tx_i+b)-1) minw,b21∣∣w∣∣2+C∑i=1ml0/1(yi(wTxi+b)−1) C无穷大时所有样本均满足约束;当C为有限值时允许一些样本不满足条件
总结
通过以下步骤,我们找到了线性支持向量机的分离超平面:
- 表示超平面: w 1 x 1 + w 2 x 2 + b = 0 w_1 x_1 + w_2 x_2 + b = 0 w1x1+w2x2+b=0
- 定义间隔: y i ( w 1 x i 1 + w 2 x i 2 + b ) ≥ 1 y_i (w_1 x_{i1} + w_2 x_{i2} + b) \geq 1 yi(w1xi1+w2xi2+b)≥1
- 构造优化问题:最小化 1 2 ∥ w ∥ 2 \frac{1}{2} \|w\|^2 21∥w∥2 同时满足约束
- 使用拉格朗日乘子法:求解对偶问题
- 确定支持向量和权重:找到支持向量并计算权重 ( w )
- 计算偏置b:使用支持向量计算偏置 ( b )
- 验证超平面:检查超平面是否正确分离数据点