1. 基础与背景
1.1 基本概念
- 三要素:模型,策略,算法
- 模型:使用来进行预测的公式,即 f(x)或P(Y|X) 。
- 策略:学习过程所要达到的目标,例如SVM寻找最大margin,GMM寻找最大分布概率,具体体现为Loss。
- 0-1 Loss: L(f(X),Y)={0,f(X)≠Y1,f(X)=Y
- Quadratic Loss: L(f(X),Y)=(f(X)−Y)2
- Absolute Loss: L(f(X),Y)=|f(X)−Y|
- Log Loss: L(P(Y|X),Y)−logP(Y|X)
- 策略: minf∈F1N∑L(f(x),y)+λJ(f)
- 算法指使模型达到策略目的所使用的具体方法,如EM,梯度下降等。
- 根据输入输出特点划分为三种问题:分类,回归,标注
- 分类:输出变量为有限个离散变量
- 回归:输入输出均连续
- 标注:输入输出均为连续的变量序列
1.2 模型的评估与过拟合
- 过拟合的本质是模型模型过于复杂,具体表现为测试准确率远优于训练准确率
- 过拟合的原因还包括数据质量不佳导致噪点对模型影响过大
- 正则化用于解决过拟合,原理是在策略中加入对于模型复杂度的惩罚,i.e. 正则项,使优化过程向更简单的模型倾斜
- 交叉验证用于避免训练数据的干扰,易于检查出过拟合问题
- ROC 指数: accuracy(precision)=TPTP+FP,recall=TPTP+FN,2F1=1P+1R
1.3 泛化
- 与测试不同,泛化误差从理论上(主要是泛化误差上界)评估模型的generalization效果
- 泛化误差上届定理:
以1−δ的概率,R(f)≤R̂ (f)+ξ(N,d,δ)成立
ξ(N,d,δ)=12N(logd+log1δ)‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√
R̂ (f)=测试误差,d=模型假设空间容量(备选模型数),N=样本数量,f∈F={f1,f2,f3,...fd}
显然, N∝R(f),−d∝R(f)
2. 感知机与逻辑回归
2.1 感知机
2.1.1 模型:
- 输入: 特征向量和标签;输出:-1;+1
- f(x)=sign(w⋅x+t)
2.1.2 策略:
- 寻求可对数据进行完整分类的超平面,使用 1||w|||w⋅x+t| 表示样本到超平面 (w,t) 的距离。
- 要求数据线性可分
- 使用d来定义loss function: L(w,b)=−∑x∈Myi(w⋅xi+t)
- 问题转化为求 minL(w,b) 的问题
- 距离
d=1||w|||w⋅x+t|
的推导:
-
d
为
x0 到超平面距离, x1为x0在超平面上投影 - |w⋅x0x1−→−−|=|w||x0x1−→−−|=|w|d
- |w|⋅|x0x1−→−−|=w1(x10−x11)+w2(x20−x21)+...wn(xn0−xn1)=w⋅x0−w⋅x1
- 由于 x1 位于超平面上,因此 w⋅x1+t=0 ,则 w⋅x1=−t
- 所以 |w||d|=w⋅x0−(w⋅x1)=w⋅x0−(−b)=w⋅x0+t
- 所以 d=1||w|||w⋅x+t|
-
d
为
2.1.3 算法
- 使用梯度下降法,可看成以 L(w,b) 作为纵轴,任意特征 wi 为横轴,取其最低点,即 ▽L(w,b)==0 处,即为局部最优解。
- 对每一个特征,取斜率逆方向,给定既有的下降步长即可逼近凹点:
- 在超平面
S=(w′,b′)
处的斜率为
L(w,b)
关于w和b的偏微分:
▽wL(w,b)=−∑yixi;▽wL(w,b)=−∑yi
求得更新函数为: w←w+ηyixi,t←t+ηyi - 在最优值附近,会由于步长过大产生overshooting。
- 对于线性可分数据集,该算法是收敛的。
- 实现中通常将
t
并入
w 并在 X 末尾添加对应常量1。 - 核心算法函数:
define w=rand();t=rand();a=learning rate, maxepoch=featureNumber\cdot 5
for 1 to maxepoch
for each sample 1 to N, if y\cdot f(x)<=0
w = w+a* x* y
t = t+a* y
end for
end for
- 对偶形式中,在每次更新中,使用当前实例
xi和yi的组合来表示w和t
- 在第i次更新中,更新函数变为 ai←ai+η,b=b+ηyi
2.1.4 拓展
- pocket algorithm 用类似于冲量的原理解决非线性可分数据集
- perceptron with margin 考虑边界大小
- voted perceptron
2.2 逻辑回归
2.2.1 二项分类模型
- 模型定义:
P(y=0|x)=11+e−(w⋅x+t)=π(x),P(y=1|x)=e−(w⋅x+t)1+e−(w⋅x+t)=1−π(x)
f(x)={0,π(x)≥0.51,π(x)<0.5
2.2.2 策略:
- 最大化对数似然函数: L(w,t)=∑yilogπ(xi)+(1−yi)log(1−π(xi))
- 通过log将连乘转化为求和
2.2.3 算法:
- 算法与感知机相同
3. k-NN
- 模型:取最近k邻域并且取极大似然
- 邻域定义:最相思的k个邻点,在范围k以内的所有邻点
- 距离度量:欧式距离, Lp 和Minkowski距离
- 决策规则:多数表决,平均值,中位数等
- k的影响
- k过小,模型过拟合,鲁棒性低
- k过大,误差较大
- kd树:
- 生成算法:依次取各个特征为空间维度,取中位数分割左右子空间,循环直到子空间仅包含一个样本
- 搜索算法:
- 搜索:按二叉树搜索寻找最近叶结点,记下为当前最近节点,然后开始回溯
- 回溯:依次向上查找,在路径每个节点上计算目标点到当前最近节点的距离 是否大于 当前节点的父结点的切割特征与目标点切割特征的差i.e.:
(x1−x′1)2+(x2−x′2)2+...+(xd−x′d)2‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√>xk−x″kx 为目标点,x′ 为当前最近节点, x″k 为当前父结点的切割特征 - 若目标节点到当前最近点的距离 大于 目标节点与当前父节点的切割特征的差,则说明以目标点为圆心球,以其到当前最近点的距离为半径的超球体空间与当前节点的兄弟节点所在的超矩形空间相交,则在该超矩形空间内可能存在更近节点,因此需要对该超矩形空间进行下溯搜索,若存在更近节点,则更新将该结点更新为当前最近点,继续上溯。这是一个递归的过程。
4. Naive Bayes
5. Decision Tree
决策树模型的基本形式是通过训练数据建立树模型,然后引入正则化对树进行剪枝,以达到降低过拟合风险的目的。
5.1 树的建立
5.1.1 特征选择
- 信息熵/互信息:
- H(D)=−∑pklogpk,pk表示label为k的样本的出现概率
- H(D|A)=−∑|Di||D|H(Di),Di表示特征A的值为Ai的样本
- M(D,A)=H(A)−H(D|A)
- Mr(D,A)=M(D,A)HA(D) , HA(D)=−∑|Di||D|log2|Di||D|
5.1.3 ID3建树:
递归建树,三个终止条件:
- 特征集合
A
为空集
- 样本集合完全属于一个标记,分类完成
- 特征集合
5.1.4 C4.5建树:
- 使用信息增益比 MA(D,A) 取代信息增益,目的是校正信息增益对于取值类型多的特征的偏好性。
5.2 树的剪枝
- 剪枝的目的是解决过拟合问题,通过引入正则化完成。
- 正则化后的损失函数:
Cα(T)=C(T)+α|T|
其中C(T)表示预测误差,一般是信息增益或基尼指数,T是判定树,|T|是结点数量,α是正则惩罚系数 - 剪枝从底向上,操作上是将某一叶节点回缩到其父节点。
- 对每次剪枝,若剪枝前的损失 Cα(T1) 大于剪枝后的损失 Cα(T2) ,则进行剪枝,否则取消剪枝。
- 一般只在局部进行,不需要考虑剪枝子树的父节点以上的其他部分模型的损失。
- 调优算法在实际应用中使用动态规划实现。
5.3 CART树
- CART树是将ID3和C4.5的d树发展为二叉树,二叉树的优点在于可以减少碎片空间,同时加快搜索速度。
- 根据应用问题,分为分类树和最小二乘回归树两种,主要区别是特征选择中 Rm 空间的划分方法不同。
- 最小二乘树树的三个主要变化:
- 预测函数改为: f(x)=∑cmI(x∈Rm) ,其中 Rm 是输入变量的子空间
- 特征选择中加入对特征切分值的选择,用最小二分预测误差替换信息增益
- 剪枝时需要引入交叉验证对树序列进行
5.3.1 CART树的生成:
- 对于每个结点,定义二分点
(j,s)
使得:
- 对于回归树: R1(j,s)={x|x(j)≤s} , R2(j,s)={x|x(j)>s}
- 对于分类树: R1(j,s)={x|x(j)=s} , R2(j,s)={x|x(j)≠s}
- 在每个结点用基尼指数和平方残差进行特征选择:
- 求出 argminA Gini(D,A) 或 argmin(j,s) E(D,A,s)
- 分类树的基尼指数
Gini(D,A)
:
-
集合D的基尼指数:Gini(D)=1−∑p2k,k为标签类型
-
特征A的基尼指数:Gini(D,A)=|R1||D|Gini(R1)+|R2||D|Gini(R2)
-
- 回归树的平方残差
E(D,A,s)
:
-
平方残差:E(D,A,s)=∑x∈R1(j,s)(yi−c1)2+∑x∈R2(j,s)(yi−c2)2
- 划分出的子空间的代表值:
c1=ave(yi|x∈R1),c2=ave(yi|x∈R2)
-
- 结束条件:
- 结点样本数小于阈值 ε1
- 样本基尼指数小于预定阈值 ε2
- 没有特征
5.3.2 使用交叉验证的CART剪枝
- 依次生成序列{ T0,T1...Tn },其中 T0为完全树,Tn为以根节点作为单节点的树
- 从
T0
开始,自下而上地计算每个内部结点
T
和以其为根节点的子树
Tt 的 C(Tt), C(t), |Tt| - 当
C(Tt)−α|Tt|=C(t)−α
时,损失函数相同,但
t
结点数显然更少,因此选
t ,此时 αt=g(t)=C(Tt)−C(t)|Tt|−1 , g(t) 也解释为剪枝后损失函数的减少量。 - 对于所有内部点
t
,取
α=min(α,g(t)) 以及对 t 点的剪枝后树T - 记录 Tk=T, αk=α, k++
- 当只剩下根节点时结束,此时生成 {(T0,α0),(T1,α1)...(Tn,αn)}
- 使用交叉验证该序列每一元素的 Cαk(Tk) ,取损失函数最小的为最后的模型
5.4 总结
- 机器学习的常见树算法包括ID3,C4.5和CART树三种。
- ID3使用互信息 M(D,A) 进行点分裂点的确定
- C4.5使用 Mr(D,A) 进行分裂点的确定,过程相同
- 在建树过程中,CART使用最小Gini系数和最小差方来确定分裂点,
Gini(D,A)=|D1||D|Gini(D1)+|D2||D||Gini(D2)
Gini(D)=∑1−p2k
E(D,A,s)=∑yi∈D1(yi−c1)+∑yi∈D2(yi−c2) - 树算法可以在生成阶段之后通过 C(Tt)=C(T)+α|T| 来进行剪枝,避免过拟合
- 通过自底向上计算每个非叶节点的 α=g(t)=C(T)−C(t)1−|T| ,取 α 最小值所对应的树作为剪枝结果。
6. SVMs
6.1 模型
- 二分类模型
- 决策函数: yi=sign(wTxi+b)
- 对于超平面
(w,b)
,点
xi
,点
xi
到超平面的间隔通过函数距离和几何距离进行定义:
- 函数间隔: γ̂ i=yi(wTxi+b)
- 几何间隔: γi=γ̂ i||w||=yi(wT||w||xi+b||w||)
- 对于数据集合 Ti ,它与超平面的间隔定义为所属点集的间隔最小值
- 间隔的正负号表示分类的正确与否,大小表示分类的确信度
- SVM寻求最大间隔超平面,对于数据集 T ,该超平面是唯一的。
6.2 算法
6.2.1 最大化间隔的搜索算法
- 问题的数学描述:
maxw,b γ̂ ||w||=γ,s.t. yi(wTxi+b)≥γ - 设 γ为点集到超平面的最小距离,求γ的最大值
- γ̂ 取值不影响优化问题求解w和t ,设 γ=1 ,转化为: maxw,b 1||w||,s.t. yi(wTxi+b)≥1
- 为了转化为QP二次规划问题,将形式转化为:
minw,b 12||w||2s.t. yi(wTxi+b)−1≥0
- 为了构成完整的QP问题,引入支持向量的定义:距离超平面间隔最短的点称为系统的支持向量,支持向量是使约束条件等号成立的点。
- 至此,超平面的寻找问题已转化为凸二次规划问题。
6.2.2 间隔最大化的对偶算法
- SVM决策函数的分类函数:
f(x)=sign(∑α∗(x⋅xi)+b∗),b∗=yi−∑α∗xi⋅xj
- 推导过程:
- 引入拉格朗日乘子向量 α∗=(α1,α2...αN|αi≥0)
- 根据QP问题条件,建立拉格朗日函数:
L(w,b,a)=12||w||2−∑αiyi(w⋅xi+b)+∑αi
- 根据拉格朗日对偶性,求原问题的极小值等同于求拉格朗日函数的极大极小值 i.e. maxα minw,bL(w,b,a)
- 先对(w,b)求最小值,求偏导得:
▽wL=|w|−∑aiyixi
-
▽bL=−∑aiyi
- 在QP的凸点,
▽wL=▽bL=0
:
w=∑aiyixi0=∑aiyi
- 代入L,再求
L(w,b,α)
:
L(w,b,α)=12∑∑αixiyiαjxjyj−∑aiyi(∑αjyjxj)⋅xi+∑αi=−12∑∑αiαjyiyjxixj+∑αi
- 所以线性可分SVM的对偶形式表示为:
minα 12∑∑αiαjyiyjxixj−∑αis.t.0=∑αiyiαi≥0,i=0,1,2,3...N
- 从上式求出最优解
α∗
,然后复原出超平面解:
w∗=∑α∗ixiyib∗=yj−∑α∗iyi(xi⋅xj)
- 引入对偶算法的原因
- 求解更容易
- 更自然的引入核函数kernels
6.3 边界松弛
- 边界松弛的目的是提高算法对噪声的鲁棒性
- 边界松弛通过在求解超平面的过程中引入松弛因子 ξ 和松弛惩罚因子 C 完成。
- 引入
ξ和C 后,判别函数不变 - SVM表示为:
minw,b,ξ12||w||2s.t.yi(w⋅xi+b)≥1−ξi, ξi≥0
- 求解过程类似于简单线性可分SVM,根据约束化解为QP问题的拉格朗日形式,然后复原为 w,b和ξ 。
6.4 核函数
- 引入核函数的目的是在更高维度中(Hibert)空间中解决线性不可分问题
- 定义核函数为
K(x,z)=ϕ(x)ϕ(z)其中 K 必须是正定核。
- 正定核需要满足:对于
xi∈X,i=0,1,2,3...m ,对于任意整数m,对称函数K(x,z)对应的Grem矩阵都为半正定的。 - 引入K后,判别函数变为:
f(x)=sign(∑αiyiϕ(xi)ϕ(x)+b∗)=sign(∑αiyiK(xi,x)+b∗)
- 常见核函数
- 多项式核函数: K(x,z)=(x⋅z+1)p :P与H空间维度正相关
- 高斯核函数: K(x,z)=exp(−||x−z||22σ2) :无限维度, σ 过大则高频特征衰减快,相当于低维度的空间, σ 过小将导致过拟合。
- 字符串函数:
- 核函数调参:http://blog.csdn.net/leonis_v/article/details/50688766
6.5 总结
- SVM的判别函数为: f(x)=sign(w⋅x+b)
- 学习目标函数为
min12||w||2+C∑ξis.t.yi(w⋅xi+b)≥1−ξi, ξi≥0
- 学习过程通过拉格朗日函数的对偶形式进行计算,获得 α 后复原 w和b .
- 引入 ξ 可以加强对噪声的鲁棒性,也可以部分解决线性不可分的问题
- 引入核函数 K(x,z) 将特征空间投射成高维的希伯特空间,常见的三种核函数包括:线性,多项式和高斯。
7. AdaBoost
8. EM
- EM的引入
- EM是Expecting&Maximum
- 判别函数是: P(Y|θ)
- 模型的训练过程:
- 目标函数: arg maxθ logP(Y|θ)=log∑P(Y,Z|θ)
- E步:
Q(θ,θi)=∑ZlogP(Y,Z|θ)P(Z|Y,θi)
- M步:
θi+1=arg maxθ Q(θ,θi)
- EM在GMM中的应用
- 明确隐变量,写出完全概率似然函数
P(Y,γ|θ)=∏iNP(yi,γ1i,γi2,γi3...γjK|θ)=∏k∏iαkϕ(yi|θk)γjk=∏k[αnkk∏i12π‾‾√σkexp(yi−μk)22σ2k]γjk=∑k[ankklog+∑ilog12π‾‾√−logσ−(yi−μk)22σk]γjk
- E步,计算Q函数
Q(θ,θi)=
- M步,更新 θ =P()
- 明确隐变量,写出完全概率似然函数
- 总结
9. HMM
9.1 模型:
- 可用于标注问题
- 三个要素:初始的状态分布
π
,状态转移矩阵
A
,观察矩阵
B , 模型λ=(A,B,π)
- 状态池 Q={q1,q2,...qN}
- 观测池 V={v1,v2,...vM}
- 状态序列 I={i1,i2,...it}
- 观测序列 O={o1,o2,...ot}
- 初始状态分布 π=[πi]N,πi=P(i1=qi)
- 状态转移矩阵A=[aij]N⋅N,aij=P(it+1=qj|it=qi)
- 观测矩阵 B=[bj(k)]N⋅M,bj(k)=P(ot=vk|it=qj)
- 基本思想是根据初始状态
π
和状态转移矩阵
A
生成一条状态链,根据状态链和观察矩阵
B 决定观察结果,应用中,观察结果一般对应标签 - 马尔科夫模型的三要素: λ=A,B,π
- 隐马尔可夫使用两个假设:
- 齐次马尔科夫性假设:当前时刻
t
的状态只与其之前的时刻
t−1 有关 - 独立性假设:某一时刻
t
的观察结果
ot 只与该时刻的状态 it 有关
- 齐次马尔科夫性假设:当前时刻
t
的状态只与其之前的时刻
- MHH相关的三种问题:
- 概率计算:已知观测序列
O
和模型
λ ,求 P(O|λ) - 模型学习:已知观测序列
O
,求
argmaxλ P(O|λ) - 解码问题:已知观测序列
O
和模型
λ ,求最可能的状态 I
- 概率计算:已知观测序列
O
和模型
9.2 概率计算
定义:
αt(i)=P(o1,o2,...ot,it=qi|λ)
bj(k)=P(it=qj|ot=vk)9.2.1 前向算法
- αi+1=(∑Jα(j)αij∗bi(ot+1)
9.2.2 后向算法
9.2.3 综合与参数评估
9.3 模型学习
9.3 解码
10. RDF