统计学习概述
- 分类
- 监督学习/非监督学习/半监督学习/强化学习(非监督学习的一种)
- 统计学习方法的三要素
- 模型:模型的假设空间
- 在监督学习中,就是所要学习的条件概率P(Y∣X)或决策函数Y=f(X)
- 策略:模型选择的准则
- 对应风险函数(衡量平均预测的好坏)和损失函数(衡量一次预测的好坏)
- 经验风险最小化:极大似然估计(容易造成过拟合)
- 结构风险最小化(对应于正则化):加入正则化项,减少模型的复杂性
- 算法:模型学习的算法。通常需要数值计算的方法。
- 问题分类
- 回归问题:输入变量与输出变量均为连续变量
- 分类问题:输出变量为有限个离散变量
- 标注问题:输入与输出变量都是变量序列
- 监督模型类型
- 生成模型
- GDA/Naive Bayes/HMM
- 可以快速还原出联合概率分布P(X,Y),学习收敛速度更快
- 判别模型
- Logistic/SVM/条件随机场
- 可以直接对数据进行各种程度的抽象,定义特征,简化学习问题
- 模型选择
- 假设空间中有不同复杂度的模型,需要涉及到模型选择问题。模型选择主要考虑到过拟合问题。
- 主要的模型选择方法:
- 正则化
- minN1i=1∑NL(yi,f(x))+λJ(f)
- 在回归问题中一般使用L1或者L2范数
- 交叉验证
- 分为训练集(用于模型训练),验证集(用于模型选择)和测试集(用于最终对学习方法的评估)
- 验证集用于模型的选择,选择对于验证集有最小误差的模型
- 简单交叉验证(前70%为训练集),S折交叉验证(前S-1个子集的数据进行训练,重复S次 ),留一交叉验证
- 泛化能力
- 衡量对未知样本的预测能力
- 性质
- 样本容量增加, 泛化误差趋于0
- 假设空间容量越大,泛化误差越大
- 泛化误差上界
- d为假设空间大小,呈正比;N为样本大小,呈反比
- R(f)⩽R^(f)+ε(d,N,δ)
- ε(d,N,δ)=2N1(logd+logδ1)
- 生成模型与判别模型
- 生成模型
- 对联合概率进行建模P(X,Y)=P(X∣Y)P(Y),根据Y不同来学习不同的模型,使用贝叶斯得到后验概率,然后取概率较大的那个
- 朴素贝叶斯、HMM
- 可还原出联合概率分布P(X,Y), 而判别方法不能。
- 生成方法的收敛速度更快,当样本容量增加的时候,学到的模型可以更快地收敛于真实模型
- 当存在隐变量时, 仍可以使用生成方法,而判别方法则不能用
- 判别模型
- 直接学习条件概率分布P(Y∣X)
- KNN、感知机、决策树、logistic回归、最大熵、SVM、AdaBoost、CRF
- 直接学习到条件概率或决策函数,直接进行预测,往往学习的准确率更高
- 由于直接学习Y=f(X)或 P(Y∣X), 可对数据进行各种程度上的抽象、定义特征并使用特征,因此可以简化学习过程
- 评价标准
- 准确率(accuracy):给定的测试数据集,分类正确的样本数与总样本数的比
- 精确率(precision):P=TP+FPTP
- 召回率(recall):R=TP+FNTP
- F1值:F1=P+R2PR=2TP+FP+FN2TP
感知机
模型
- 将输入空间划分为正负两类的分离超平面,属于判别模型
- 输入空间到输出空间的函数
- f(x)=sign(w⋅x+b)
- sign(x)={+1,−1,x⩾0x<0
- 集合解释
策略
- 误分类点到超平面的总距离最小
- 对于正确分类的样本:yi(w⋅xi+b)>0
- 对于错误分类的样本:−yi(w⋅xi+b)>0
- 总距离(当全部正确分类时最小):−∥w∥1∑xi∈Myi(w⋅xi+b)
- 损失函数
- L(w,b)=−∑x∈Myi(w⋅xi+b)
- M是误分类点的数目
算法
求解最优化问题
- wi,bminL(w,b)=−xi∈M∑yi(w⋅xi+b)
- 随机梯度下降(每次只选择一个样本进行更新参数)
- ∇wL(w,b)=−∑xi∈Myixi
- ∇bL(w,b)=−∑x∈Myi
- 优化:w←w+ηyixib←b+ηyi
- 解并不惟一,与初始点选择有关
- 要求:必须是线性可分的,则有限次迭代一定可以完全正确划分的分离超平面
- 看例子
对偶形式
- 我们可以看到,最后求得的参数w,b一定是y,x的线性组合,即w=∑i=1Nαiyixi,b=∑i=1Nαiyi
- 最后学习到的模型为:f(x)=sign(∑j=1Nαjyjxj⋅x+b)
- 算法步骤
- 初始值:α←0,b←0
- 选择某个数据点,若yi(∑j=1Nαjyjxj⋅xi+b)⩽0,则更新:
- αi←αi+η、b←b+ηyi
- 看例子
KNN
模型
- 优点
- 缺点
- 适用数据范围
- 距离度量
- 欧式距离:L2(xi,xj)=(∑l=1n∣∣∣xi(l)−xj(l)∣∣∣2)21
- 曼哈顿距离:L1(xi,xj)=∑l=1n∣∣∣xi(l)−xj(l)∣∣∣
- L∞距离:L∞(xi,xj)=maxl∣∣∣xi(l)−xj(l)∣∣∣
- K值的选择
- 较小的K值
- 学习的近似误差会减小 ,但学习的估计误差会增大
- 噪声敏感:意味着模型变得复杂,容易发生过拟合
- 较大的K值
- 减少学习的估计误差,学习的近似误差增加
- 模型变得简单
策略
算法实现
构造KD树
搜索KD树
朴素贝叶斯
模型
- 认为数据集由X和Y的联合概率分布P(X,Y)独立同分布产生
- 独立性假设
- P(X=x∣Y=ck)=P(X(1)=x(1),⋯,X(n)=x(n)∣Y=ck)=j=1∏nP(X(j)=x(j)∣Y=ck)
- 可以减少大量的参数估计,牺牲分类的准确性
策略
- 构造贝叶斯分类器
- y=f(x)=argckmax∑kP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)P(Y=ck)∏jP(X(j)=x(j)∣Y=ck)
- 分母对于所有的ck都相同,因此只需要比较分子
- y=argckmaxP(Y=ck)j∏P(X(j)=x(j)∣Y=ck)
- 后验概率最大化的含义
- 朴素贝叶斯法将实例分到后验概率最大的类中,等价于期望风险最小化
- 期望风险函数(在整个样本空间中,L(Y,f(X))是0-1损失)
- Rexp(f)=E[L(Y,f(X))]
- 取条件期望
- Rexp(f)=EX∑k=1K[L(ck,f(X))]P(ck∣X)
- 可以推导出,期望风险最小化等价于最大后验概率
算法
- 参数估计
- 估计先验概率:P(Y=ck)=N∑i=1NI(yi=ck)s
- 估计条件概率:P(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)∑i=1NI(xi(j)=ajlyi=ck)
- 对于给定的实例,确定X的类别
- y=argamaxP(Y=ck)j=1∏nP(X(j)=x(j)∣Y=ck)
- 为了防止概率为0的情况,采用贝叶斯估计
- 先验概率的贝叶斯估计:Pλ(Y=ck)=N+Kλ∑i=1NI(yi=ck)+λ
- 条件概率的贝叶斯估计:Pλ(X(j)=ajt∣Y=ck)=∑i=1NI(yi=ck)+Siλ∑i=1NI(xi(j)=ajlyi=ck)+λ
- 当λ=1时为拉普拉斯平滑
Logistic回归
模型
- 由条件概率P(Y∣X)表示的分类模型
- P(Y=1∣x)=1+exp(w⋅x+b)exp(w⋅x+b)
- P(Y=0∣x)=1+exp(w⋅x+b)1
- 对数几率
- log1−P(Y=1∣x)P(Y=1∣x)=w⋅x
- 对数几率是输入的线性组合
策略
基于似然函数得到模型的最优解
- ∏i=1N[π(xi)]yi[1−π(xi)]1−yi
对数似然函数
L(w)=i=1∑N[yilogπ(xi)+(1−yi)log(1−π(xi))]=i=1∑N[yilog1−π(xi)π(xi)+log(1−π(xi))]=i=1∑N[yi(w⋅xi)−log(1+exp(w⋅xi)]
算法
- 对对数似然函数求极大值,得到w的估计值。
- 扩展为多项logistic回归模型:
- P(Y=k∣x)=1+∑k=1K−1exp(wk⋅x)exp(wk⋅x)
- sigmoid是softmax的二维情形
- 很容易可以证明,无论是分类问题(multinomial)还是回归问题(正态分布),都可以转换为指数族的形式
- 通过指数族的形式,我们可以发现,在线性假设下,我们之前的logistic回归的sigmoid方程其实就是P(Y∣X)为Bernoulli分布的指数族形式下的充分统计量的参数表示。
SVM
模型
- 学习目标
- 分类
- 线性可分支持向量机:通过间隔最大化或等价地求解相应的凸二次规划问题学习得到分离超平面
- 非线性支持向量机:利用一个从输入空间到特征空间的非线性映射将输入映射为特征向量
- 决策函数
- f(x)=sign(w∗⋅x+b∗)
策略
线性可分
minw,b s.t. 21∥w∥2yi(w⋅xi+b)−1⩾0,i=1,2,⋯,N
- 当yi(w⋅xi+b)=1时是support vector
min21∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαi s.t. ∑i=1Nαiyi=0αi⩾0,i=1,2,⋯,N
- 由KKT条件,w∗=∑i=1Nαi∗yixi,b∗=yj−∑i=1Nαi∗yi(xi⋅xj)
- 决策函数:f(x)=sign(∑i=1Nαi∗yi(x⋅xi)+b∗)
- 求得了α,当αj>0时对应的j是support vector(真正对w有用的)
线性不可分
w,b,ξmin s.t. 21∥w∥2+Ci=1∑Nξiyi(w⋅xi+b)⩾1−ξi,i=1,2,⋯,Nξi⩾0,i=1,2,⋯,N
- 其中,w由唯一解,而b不是
- 分类超平面为:w∗⋅x+b∗=0
- 决策函数:f(x)=sign(w∗⋅x+b∗)
minα21∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαi s.t. ∑i=1Nαiyi=00⩽αi⩽C,i=1,2,⋯,N
- 其中,w由唯一解,而b不是
- 若αi∗< C,则ξi=0 => 在支持向量上
- 若αi∗=C,0<ξi<1 => 在该分类同侧
- 若αi∗=C,ξi=1 => 在超平面上
- 若αi∗=C,ξi>1 => 在相反的分类上
- Hinge loss
- 另外一种解释,最小化目标函数
- ∑i=1N[1−yi(w⋅xi+b)]++λ∥w∥2
- 其中L(y(w⋅x+b))=[1−y(w⋅x+b)]+为Hinge loss
非线性支持向量机
- 思想
- 进行一个非线性变换,将原空间的数据映射到新空间,在新空间内用线性分类学习方法学习模型
- 核方法
- 核函数:K(x,z)=ϕ(x)⋅ϕ(z)
- 在学习与预测中只定义核函数,而不显式的定义映射函数,直接计算核函数比较容易(也就是完成在高维空间中的点积运算)
- 由于在对偶问题中,如论是目标函数还是决策函数,都只涉及到内积运算,因此可直接用核函数替代
- 多项式核函数:K(x,z)=(x⋅z+1)p
- 高斯核(RBF)(映射到无穷维):K(x,z)=exp(−2σ2∥x−z∥2)
算法
- SMO
- 虽然SVM为凸二次规划问题,有全局最优解,但样本容量很大时难以求解。
- 思想
- 每次只同时优化两个变量:其中一个是违反KKT条件最严重的一个,另一个由约束条件自动确定
- 可以看作是Coordinate Ascent算法
AdaBoost
提升方法
- 思路:要找到一个比随机猜测略好的弱学习算法,就可以直接将其提升为强学习算法
- 实现思路
- 使用不同的弱学习算法得到不同的基学习器
- 使用相同的弱学习算法,但用不同的参数
- 使用不同的训练集
- 如何组合
- 并行结构(voting)
- 串型结构(cascading)
模型
每一轮如何改变训练数据的权值或概率分布
- 提高哪些被前一轮弱分类器错误分类样本的权值,降低哪些被正确分类样本的权值。
如何将弱分类器组合成一个强分类器
- 加权多数表决。加大分类误差率小的弱分类器的权值,减小分类误差率大的弱分类器的权值。
算法步骤
初始化训练数据的起始权值分布
- D1=(w11,⋯,w1i,⋯,w1N)w1i=N1,i=1,2,⋯,N
- 对m个弱分类器,在权值Dm下训练数据集,得到弱分类器
- 计算当前弱分类器的训练误差(记)(即分类错误的加权数),选择误差分类率最低的进行划分
- wmi表示第m轮迭代下,第i个样本的权重,则∑i=1Nwmi=1
- em=P(Gm(xi)≠yi)=∑Gm(xi)≠yiwmi
- 计算当前分类器的系数(记)
- αm=21logem1−em
- 当em⩽21时,αm⩾0(也就是说,需要精度比随机猜测好,才能起正的作用)
- 更新训练集的权值分布(记)
wm+1,i={Zmwmie−αm,Zmwmieαm,Gm(xi)=yiGm(xi)≠yi
构建弱分类器的线性组合
- f(x)=∑m=1MαmGm(x)
得到最终的分类器
- G(x)=sign(f(x))=sign(∑m=1MαmGm(x))
策略
- AdaBoost的训练误差为指数下降
- 目标是每次迭代,选择在当前数据权重下,误差分类率最低的。
- 如何得到权重和系数的计算公式?
算法
- AdaBoost是前向分布加法算法的特例,模型是由基分类器组成的加法模型,损失函数是指数函数
HMM
- 是关于时序的概率模型
- 描述由一个隐藏的马尔可夫链随机生成的不可观测的状态随机(state)序列,再由各个状态生成一个观测而产生观测随机序列(observe)的过程,序列的每个位置可以看作是一个时刻。
模型
- 组成
- 初始概率分布
- πi=P(i1=qi),i=1,2,⋯,N
- 时刻t=1处于状态qi的概率
- 状态转移概率矩阵
- A=[aij]N×N,其中N是状态集合元素个数
- aij=P(it+1=qj∣it=qi),i=1,2,⋯,N;j=1,2,⋯,N
- 时刻t处于状态qi的条件下,在时刻t+1转移到状态qj的概率
- 观测概率分布(发射概率)
- B=[bj(k)]N×M,其中M是观测集合元素个数
- bj(k)=P(ot=vk∣it=qj),k=1,2,⋯,M;j=1,2,⋯,N
- 在时刻t处于状态qj的条件下生成观测vk的概率
- 三要素:λ=(A,B,π)
- 基本假设
- 齐次马尔可夫假设:t状态只与t−1状态有关
- 观测独立性假设:观测只与当前时刻状态有关
- 盒子与球模型
- 状态集合:Q = {盒子1,盒子2,盒子3,盒子4},N=4
- 观测集合:V = {红球,白球},M=2
策略/算法
概率计算问题
给定λ和观测序列,求状态序列O
- 直接计算
- 算每一个state对应的观测序列:O(T)
- 有多少个state序列:O(NT)
- 复杂度O(TNT),太高
- 前向算法
- 定义到时刻t部分观测序列为o1,…,ot,且状态为qi到概率为前向概率
- αt(i)=P(o1,o2,⋯,ot,it=qi∣λ)
- t−1之前的状态不关心,且已经累加到αt(i)中
- 初始值
- α1(i)=πibi(o1),i=1,2,⋯,N
- 递推
- αt+1(i)=[∑j=1Nαt(j)aji]bi(ot+1),i=1,2,⋯,N
- t时刻为j,转移到状态i,再乘以发射概率
- 终止
- P(O∣λ)=∑i=1NαT(i)
- 看例子
- 后向算法
- 定义在时刻t状态为qi到条件下,从t+1到T的部分观测序列的概率为后向概率
- βt(i)=P(ot+1,ot+2,⋯,oT∣it=qi,λ)
- 初始值
- βT(i)=1,i=1,2,⋯,N
- 递推
- βt(i)=∑j=1Naijbj(ot+1)βt+1(j),i=1,2,⋯,N
- 对时刻t+1下的所有观测值求和,得到t时刻观测为i的概率
- 终止
- P(O∣λ)=∑i=1Nπibi(o1)β1(i)
- 向前向后统一写为
- P(O∣λ)=∑i=1N∑j=1Nαt(i)aijbj(ot+1)βt+1(j),t=1,2,⋯,T−1
学习问题
已知状态序列O,估计λ,使得P(O∣λ)最大
- 监督学习
- 如果训练数据包含观测序列O个对应的状态序列I,则可以利用极大似然估计对参数进行估计
- 状态转移概率估计(直接用频率代替)
- a^ij=∑j=1NAijAy,i=1,2,⋯,N;j=1,2,⋯,N
- 观测概率估计(直接用频率代替)
- b^j(k)=∑k=1MBjkBjk
- 初始状态概率估计
- 非监督学习
- 假设训练数据只包括{O1,…,Os},使用Baum-Welch算法
- 实际上是含有隐变量I的概率模型,使用EM算法
预测问题
求似的λ=(A,B,π)最大的状态序列O=(o1,o2,⋯,oT)
近似算法
在每个时刻t选择在该时刻最有可能出现的状态it,从而得到一个状态序列
时刻t为状态i的可能概率为
- γt(i)=P(O∣λ)αt(i)βt(i)=∑j=1Nαt(j)βt(j)αt(i)βt(i)
选择最有可能的状态序列
- it∗=argmax1⩽i⩽N[γt(i)],t=1,2,⋯,T
因此:
I∗=(i1∗,i2∗,⋯,iT∗)
Viterbi算法
用动态规划求解概率最大的路径,一个路径对应一个状态序列
算法
- 从时刻t=1开始,递推的计算在时刻t状态为i的各个部分路径的最大值,直至得到时刻t=T状态为i的各条路径的最大概率,得到最优路径的概率和终点。
- 为了找出最优路径的各个节点,从终点开始,由后向前求得路径
定义在时刻t状态为i的所有单个路径中概率最大值
- δt(i)=i1,i2,⋯,ik−1maxP(it=i,it−1,⋯,i1,ot,⋯,o1∣λ),i=1,2,⋯,N
- 递推公式
- δt+1(i)=i1,i2,⋯,itmaxP(it+1=i,it,⋯,i1,ot+1,…,o1∣λ)=1⩽j⩽Nmax[δt(j)aji]bi(ot+1)
- 也就是从j到i到所有状态转移中的最大值
定义在时刻t状态为i的所有单个路径中概率最大的路径的第t−1个节点为
- ψt(i)=argmax1≤j≤N[δt−1(j)aji],i=1,2,⋯,N
流程
初始化
- δ1(i)=πibi(o1),ψ1(i)=0,i=1,2,⋯,Ni=1,2,⋯,N
递推
δt(i)=1⩽j≤Nmax[δt−1(j)aji]bi(ot)
ψt(i)=arg1⩽j⩽Nmax[δt−1(j)aji]
- 终止
- P∗=1≤i⩽NmaxδT(i)
- iT∗=arg1⩽i≤Nmax[δT(i)]
- 最优路径回朔
- it∗=ψt+1(it+1∗)
- 例子
一些概念和结论
EM算法
神经网络
- 感知机
- 若两类模式线性可分,则感知机的学习过程一定会收敛,否则学习过程会发生振荡。
- 多层感知机
- 多层前馈网络
- 容易发生过拟合
- 解决方法:
- 早停:若训练误差降低,验证误差升高,则停止训练
- 正则化:在误差目标函数中增加一项描述网络复杂度的部分
- 跳出局部最小的策略
- 多组不同的初始参数优化神经网络,选择误差最小的解作为最终参数
- 模拟退火技术:每一步都以一定的概率接受比当前解更差的结果
- 随机梯度下降:在计算梯度时加入了随机因素
- 遗传算法:更好的逼近全局极小值
- RBF网络
- 单隐层前馈神经网络,使用径向基函数作为隐层神经元激活函数
- ART网络
- 用于无监督学习,网络的输出神经元相互竞争,每一时刻仅有一个神经元被激活,其他神经元的状态被抑制
- ART网络可以增量学习或在线学习
- 级联相关网络
- 级联:建立层次连接的层级结构
- 相关:最大化神经元的输出和网络误差时间的相关性来训练参数
- Elman网络
- 递归神经网络:使得神经元的输出反馈回来作为输入信号
- 深度学习
- 模型复杂度
- 模型宽度/模型深度
- 增加隐层的数量比增加隐层神经元的数目更有效
- 难点
- 难以训练
- 预训练+微调
- 每次训练一层隐层节点,训练时将上一层隐层节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入
- 在预训练完成后,再对整个网络进行微调
降维与度量学习
多维缩放
要求原始空间样本之间的距离在低维空间中得以保持。
对原始高维空间进行线性变换,实现降维
主成分分析
对正交属性空间中的样本点,如何用一个超平面对所有的样本进行表达?
- 最近重构性:样本点到这个超平面的距离都足够近
- 最大可分性:样本点在这个超平面上的投影都能尽可能分开(方差尽可能大)
核化主成分分析
特征选择
- 特征的分类
- 相关特征:对当前学习任务有用的属性
- 无关特征:与当前学习任务无关的属性
- 冗余特征:其所包含信息能由其他特征推演出来(有用的冗余特征不需要去除)
- 特征选择
- 从给定的特征集合中选择出任务相关特征子集
- 减轻维度灾难/降低学习难度
- 子集搜索
- 前向搜索:逐渐增加相关特征
- 后向搜索:从完整的特征集合开始,逐渐减少特征
- 双向搜索:每一轮逐渐增加相关特征,同时减少无关特征
- 常用特征选择方法
- 过滤式
- 先用特征选择过程过滤原始数据,再用过滤后的特征来训练模型
- 特征选择过程与后续学习器无关
- 包裹式
- 直接把最终将要使用的学习器的性能作 为特征子集的评价准则
- 多次训练学习器,计算开销大,性能更好
- 嵌入式
- 嵌入式特征选择是将特征选择过程与学习器训练 程融为一体,两者在同一个优化过程中完成,在学习器训练过程中自动地进行特征选择
- 例如使用L1范数,更容易获得稀疏解
计算学习理论
- 概念
- 从样本空间到标记空间到映射,决定x的真实标记y
- 目标概念:如果对任何样例都有c(x)=y成立,则称c为目标概念
- 概念类:希望我们学得对目标概念所构成的集合
- 假设空间
- 所有可能概念的集合
- 学习过程时在假设空间中的搜索过程
- 可分和不可分
- 若目标概念中存在假设能将所有的示例完全正确分开,则是可分的
- 若目标概念不在嫁谁空间中,则是不可分的(例如线性空间不可分非线性空间)
- 概率近似正确(PAC)
- 希望以较大的把握学得比较好的模型,即以较大概率学得误 满足预设上限的模型
- PAC可学习的
- 能存在一个学习算法,在有限的样本下PAC概念类
- 把对复杂算法的时间复杂度的分析转为对样本复杂度的分析
- 有限假设空间
- 无限假设空间
- 实数域中的所有区间 / R空间中的所有线性超平面
- VC维
- 增长函数:表示假设空间对m个示例所能赋予标记的最大kennel结果数
- 表述了假设空间的表示能力,由此反映出假设空间的复杂度
- VC维是能被假设空间打散的最大示例集的大小d,超过d的示例集至少有一个不能被打散
- 二维平面的线性划分的假设空间的VC维是3
- 结论
- 基于VC维的泛化误差界:与数据分布无关 & 只与样例数目有关
稳定性