1 C4.5
熵
设随机变量取有限个值,其概率分布为 P(X=xi)=pi,i=1,2,...,n 则随机变量 X 的熵的定义为
H(X)=−∑i=1npilogpi
对数以
2 或
e 为底时,熵的单位分别为比特(bit)或纳特(nat).由定义可知熵与X的取值无关,而与X的分布有关,所以熵记作
H(p) ,即
H(p)=−∑i=1npilogpi
条件熵
随机变量
(X,Y) 联合分布为
P(X=xi,Y=yi)=pij,i=1,2,...,n;j=1,2,...,m ,在已知
X 的前提下
Y 的不确定性成为条件熵
H(Y|X) ,定义为
给定
X 的条件下,
Y 的条件概率分布熵对
X 的数学期望
H(Y|X)=∑i=1npiH(Y|X=xi)
这里
pi=P(X=xi),i=1,2,...,n
当熵和条件熵中的概率由数据估计(如极大似然估计)得到时,对应的熵和条件熵分别是经验熵和经验条件熵。
信息增益
表示得知 X 的信息而使 Y 的信息的不确定性减少的程度。特征 A 对训练数据集 D 的信息增益 g(D,A) ,定义集合 D 的经验熵与给定
特征 A 的条件下 D 的经验条件熵 H(D|A) 之差,即
g(D,A)=H(D)−H(D|A)
ID3算法
输入:训练数据集
D ,特征集
A ,阈值
ϵ ;
输出:决策树
T .
- 若 D 中所有实例属于同一类 Ck ,则 T 为单节点树,并将类 Ck 作为该节点的类标记,返回 T ;
- 若 A=∅ ,则 T 为单节点树,并将 D 中实例数最大的类 Ck 作为该节点的类标记,返回 T ;
- 否则,计算 A 中个特征对 D 的信息增益,选择信息增益最大的特征 Ag ;
- 如果 T 的信息增益小于阈值 ϵ ,则置 T 为单节点树,并将 D 中实例数最大的类 Ck 作为该节点的类标记,返回 T ;
- 否则,对 A 的每一可能值 ai ,依 Ag=ai 将 D 分割为若干非空子集 Di ,将 Di 中实例个数最大的类作为类标记,构建子节点,由结点其子节点构成树 T ,并返回 T ;
- 对第 i 个子节点,以 Di 为训练集,以 A−{Ag} 为特征集,递归地调用1~5步,得到子树 Ti ,返回 Ti ;
C4.5算法
ID3算法偏向选择取值较多的特征,如存在唯一标识属性ID,则ID3会选择将其作为分裂属性,但是这种划分没有意义,C4.5中使用增益比来惩罚这种属性,
首先定义分裂信息,表示为
split_infoA(D)=−∑j=1v|Dj||D|log(|Dj||D|)
信息增益比定义为
gain_ratio(A)=gain(A,D)split_infoA(D)
C4.5用信息增益比作为分裂属性,算法的其他步骤与ID3类似,不再赘述。
2 K-Means
原始数据集合为 (x1,x2,...,xN) ,并且每个 xi 为 d 维的向量,K-means聚类的目的是将原始数据分成K类 S={S1,S2,...,SK} ,使下式取得最小值:
J=∑j=1K∑xj∈Si∥∥Xj−μi∥∥2=∑n=1N∑k=1Krnk∥∥Xj−μi∥∥2
这里
μi 表示分类
Si 的平均值,其中
rnk 在数据
xn 被分到
k 类时为1,否则为0.
具体算法步骤如下:
- 从 D 中随机选取 K 个元素,分别作为 K 个簇的中心,即先固定 μk ;
- 计算其他元素到这 K 个簇的中心差异,并将其划分为差异度最低的簇,即已知 μk 求 rnk ;
- 根据聚类结果,分别重新计算 K 个簇的中心,即利用 μk 更新 rnk ;
- 重复步骤2,直到聚类结果不再改变。
3 SVM
当训练数据线性可分时,通过硬间隔最大化,学习线性的分类器,即线性可分支持向量机,又称为硬间隔支持向量机;
当训练数据近似线性可分时,通过软间隔最大化,学习线性分类器,即线性支持向量机,又称为软间隔支持向量机;
当训练数据线性不可分时,通过核技巧及软间隔最大化,学习非线性支持向量机。
函数间隔
对于给定的训练数据集 T 和超平面 (w,b) ,定义超平面 (w,b) 关于样本点 (xi,yi) 的函数间隔为
r^i=yi(w⋅xi+b)
定义超平面
(w,b) 关于训练数据
T 的函数间隔为超平面
(w,b) 关于
T 中所有样本点的函数间隔的最小值
r^=min r^i
函数间隔可以表示分类预测的正确性和可信程度,但是当
w 、
b 成比例增加时,超平面没有改变但是函数间隔却成比例增加了,为了避免这种情况,对超平面的法向量加以限制,引入几何间隔。
几何间隔
对于给定的训练数据集
T 和超平面
(w,b) ,定义超平面
(w,b) 关于样本点
(xi,yi) 的几何间隔为
ri=yi(w⋅xi∥w∥+b∥w∥)
定义超平面
(w,b) 关于训练数据
T 的函数间隔为超平面
(w,b) 关于
T 中所有样本点的函数间隔的最小值
r=min ri
3.1 线性可分支持向量机
线性可分支持向量机学习算法-最大间隔法
输入:线性可分训练数据集 T={(x1,y1),(x2,y2),...,(xN,yN)} ,其中, xi∈X=RN,yi∈Y={−1,+1},i=1,2,...,N;
输出:最大间隔分离超平面和分类决策函数
- 构建约束最优化问题
minw,b 12∥w∥2s.t. yi(w⋅xi+b)−1≥0,i=1,2,...,N(1)
- 求得最优解 w∗,b∗ .
- 由此得到分离超平面
w∗⋅x+b∗=0
- 分类决策函数为
f(x)=sign(w∗⋅x+b∗)
线性可分支持向量机的对偶算法
对于上式 (1) 中的不等式约束,引入拉格朗日乘子 αi≥0 ,定义拉格朗日函数:
L(w,b,α)=12∥w∥2−∑i=1Nαiyi(w⋅xi+b)+∑i=1Nαi
这里,
α=(α1,α2,...,αN)T 为拉格朗日乘子向量。根据拉格朗日对偶性,原始问题的对偶问题为极大极小问题
maxα minw,b L(w,b,α)
求
minw,b L(w,b,α) 将
L(w,b,α) 分别对
w,b 求偏导数并令其等于0.
∇wL(w,b.α)=w−∑i=1Nαiyixi=0
∇bL(w,b.α)=∑i=1Nαiyi=0
得
w=∑i=1Nαiyixi
∑Ni=1αiyi=0 $将上式代入式中得到
minw,bL(w,b,α)=−12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)+∑i=1Nαi
求 minw,bL(w,b,α) 对 α 的极大,可转化为如下的极小问题
minα 12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαis.t. ∑i=1Nαiyi=0αi=0,i=1,2,...,N(2)
解上述极小值问题可以得到
α 的解为
α∗=(α∗1,α∗2,...,α∗N)T ,从而求得
w∗=∑i=1Nα∗iyixib∗=yj−∑i=1Nα∗iyi(xi⋅xj)
即可以求得分离超平面和决策函数。
3.2 线性支持向量机
线性支持向量机学习算法-最大软间隔法
假设训练数据线性不可分,对于除去训练数据集中存在特异点后剩余的样本集合线性可分的情况,即某些样本点不能满足函数间隔大于等于1的约束条件,可以对每个样本点 (xi,yi) 引进一个松弛变量 ξ≥0 ,使得函数间隔加上松弛变量大于等于1,同时,对每个松弛变量 ξi 支付一个代价 ξi ,此时的优化问题变为
minw,b,ξ 12∥w∥2+C∑i=1Nξis.t yi(w⋅xi+b)≥1−ξi , ξi≥0,i=1,2,...,N(3)
这里
C>0 为惩罚参数,其值表示对误分类的惩罚程度。
线性支持向量机的对偶算法
式 (3) 中的最优化问题的拉格朗日函数是
L(w,b,ξ,α,μ)=12∥w∥2+C∑i=1Nξi−∑i=1Nαi(yi(w⋅xi+b)−1+ξi)−∑i=1Nμiξi
这里,
αi≥0, μi≥0
对偶问题是拉格朗日函数的极大极小问题,先求
L(w,b,ξ,α,μ) 对
w,b,ξ 的极小,由
∇wL(w,b,ξ,α,μ)=w−∑i=1Nαiyixi=0∇bL(w,b,ξ,α,μ)=−∑i=1Nαiyi=0∇ξiL(w,b,ξ,α,μ)=C−αi−μi=0
得
w=∑i=1Nαiyixi∑i=1Nαiyi=0C−αi−μi=0
将上述结果代入
minw,b,ξ L(w,b,ξ,α,μ)=−12∑Ni=1∑Nj=1αiαjyiyj(xi⋅xj)+∑Ni=1αi 再对
minw,b,ξ L(w,b,ξ,α,μ) 求
α 的极大,转换为对
α 求
minw,b,ξ −L(w,b,ξ,α,μ) 的极小值,整理可得对偶问题
minα 12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαis.t. ∑i=1Nαiyi=00≤αi≤C,i=1,2,...,N
至此可依次解得
α∗=(α∗1,α∗2,...,α∗N)Tw∗=∑i=1Nα∗iyixib∗=yj−∑i=1Nyiα∗i(xi⋅xj)
从而可以求得分类超平面和决策函数。
3.3 非线性支持向量机
非线性支持向量机学习算法
输入:训练数据集 T={(x1,y1),(x2,y2),...,(xN,yN)} ,其中 xi∈X=RN,yi∈Y=−1,+1,i=1,2,...,N;
输出:分类决策函数。
- 选择适当的核函数 K(x,z) 和适当的参数 C ,构造并求解最优化问题
minα 12∑i=1N∑j=1NαiαjyiyjK(xi,xj)−∑i=1Nαis.t. ∑i=1Nαiyi=00≤αi≤C,i=1,2,...,N
求得最优解 α∗=(α∗1,α∗2,...,α∗N)T .
- 选择 α∗ 的一个正分量 0<α∗j<C ,计算
b∗=yj−∑i=1Nyiα∗i(xi⋅xj)
- 构造决策函数:
f(x)=sign(∑i=1Nα∗iyiK(x⋅xi)+b∗)
4 Apriori
5 EM算法
7AdaBoost
大多数提升方法是通过改变训练数据的概率分布(训练数据的权值分布)针对不同的训练数据分布调用弱分类学习算法学习一系列弱分类
器。这样有两个问题:一是,在每一轮训练中如何改变数据的权值或概率分布;二是如何将弱分类器组合成一个强分类器。对第一个问题
AdaBoost的做法是,提高前一轮被弱分类器错误分类的样本权值,降低被正确分类样本的权值,以提升那些被错误分类的数据被后一轮弱分类
器关注的程度。对于第二个问题,AdaBoot采取加权多数表决的方式,对于误差率小的弱分类器加大权重,对于误分类率大的弱分类器减小
其权重。
AdaBoost算法
输入:训练数据集 T={(x1,y1),(x1,y1),…,(xN,yN)} 其中 xi∈X⊆RN,yi∈{−1,+1} ,
输出:最终分类器 G(x)
- 初始化训练数据的权值分布 D1=(w11,...,w1i,...,w1N) , w1i=1N,i=1,2,…,N
- 对 m=1,2,...,M
1)使用具有权值分布 Dm 的训练数据集学习,得到基本分类器
Gm(x):X→{−1,+1}
2)计算 Gm(x) 在训练数据集上的分类误差率
em=P(Gm(xi)≠yi)=∑i=1NwmiI(Gm(xi)≠yi)
3)计算 Gm(x) 的系数
αm=12ln1−emem
4)更新训练数据集的权重
Dm+1=(wm+1,1,...,wm+1,i,...,wm+1,N)wm+1,i=wmiZmexp(−αmyiGm(xi))
其中, Zm 是规范化因子。
Zm=∑i=1Nwmiexp(−αmyiGm(xi))
构建基本分类器的线性组合
f(x)=∑m=1MαmGm(x)
最终分类器
G(x)=sign(f(x))=sign(∑m=1MαmGm(x))
注解: f(x) 的符号说明了分类的结果,绝对值的大小说明置信度。
8 KNN
KNN的三个问题
距离度量通常使用欧式距离;
K值选择 K较小时,学习的近似误差减小,对邻近实例点较敏感,如果邻近实例点是噪声那么预测就会出错,K值减小那么模型就会变复杂,容易产生过拟合;如果K值较大,减少学习的估计误差,但是较远的不相关的实例点也可能对预测产生影响,K增大模型变简单忽略了实例中的大量有用信息。
分类决策规则多数表决
kd树
实现k近邻的最简单的方法是线性扫描,这时计算输入实例与每一个训练实例的距离,当训练数据集大时,这种方法不可行,所以通过使用kd树来减少计算距离的次数,提高k近邻搜索的效率。
构造平衡kd树算法
输入:k维空间数据集 T={x1,x2,...,xN} ,其中, xi=(x(1)i,x(2)i,...,x(k)i)T,i=1,2,...,N;
输出:kd树。
- 构造根节点,根节点对应包含 T 的 k 维空间的超矩形区域。选择 x(1) 为坐标轴,以 T 中所有实例的 x(1) 坐标的中位数为切分点,将根节点对应的超矩形分为两个子区域,切分面与坐标 x(1) 轴垂直。落在切分面上的实例点位根节点。
- 重复:对深度为 j 的结点,选择 x(l) 为切分的坐标轴, l=j(modk)+1 ,并以该节点的区域中所有实例的 x(l) 的中位数为切分点,将该节点对应的超矩形区域切分为两个子区域,落在切分面上的实例点保存为该节点。
- 直到两个区域没有实例存在时停止,从而形成kd树的区域划分。
用kd树的最近邻搜索
输入:已构造的kd树,目标点 x ;
输出: x 的最近邻。
- 在kd树中找到包含目标点 x 的叶结点。以此叶节点为“当前最近点”。
- 递归地向上回退,在每个结点进行一下操作:
1)如果该结点保存的实例点比当前最近点距离里最近目标点更近,则以该实例点为“当前最近点”
2)当前最近点一定存在于该结点一个子节点对应的区域,检查该子节点的父节点的另一个子节点对应的区域是否有更近的点。具体地,检查另一个节点对应的区域是否与目标点为球心、以目标点与“当前最近点”间的距离为半径的超球体相交。如果相交,移动到另一个子节点,接着递归搜索;如果不相交,向上回退。
- 当回退到根节点时,搜索结束。
对于随机分布的实例点,kd树搜索的平均计算复杂度为 O(logN) .
9 贝叶斯分类器
分类算法
10 分类与回归树