这是李航老师的《统计学习方法》的笔记,是我个人在阅读本书的时候的一些总结,权当参考,如有错误请指正。
第一章 统计学习方法概论
- 方法 = 模型 + 策略(loss/risk) + 算法
- loss:
- 0-1 误差率
- quadratic 最小二乘
- absolute SVM
- logarithmic 逻辑回归
- exp Boosting
- 样本量很小的时候,经验风险(ERM)最小化容易导致过拟合,这时候需要结构风险最小化(SRM)
SRM = ERM + 模型复杂度的正则化项 - 监督学习问题实质是ERM和SRM的最优化问题,即为目标函数
- 最小二乘法是求拟合多项式系数的唯一解
- Li范数||w||i:
- L1范数是L0范数的最优凸近似,可以使参数稀疏
- L2主要用于处理过拟合问题,让每个权重参数值小
- L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。
- 训练集训练模型,验证集模型选择,测试集对学习方法进行评估
- 交叉验证为了重复使用数据:
- 简单
- s-fold(训练s次测试s次求平均)
- 留一(数据量较小)
- 监督学习分为生成方法和判别方法:
- discrimitive学习联合概率分布P(x,y),然后朴素贝叶斯和隐马尔科夫(可还原联合概率分布)
- generative学习条件概率分布P(y|x)(数据到数据,不考虑过程)
- classifier、tagging、regression
第二章 感知机
- f(x) = sign(w·x+b)
w超平面法向量,b截距 - 学习目标:求一个将正实例点和负实例点完全正确分开的分离超平面
- 损失函数:
- 随机梯度下降法:任选一个超平面wb,然后选择某误分类点来对wb进行更新(减去步长乘以损失函数的梯度),为学习率
样本量更多所以选择随机梯度下降,精度低但是时间低 - 感知机算法的对偶形式:提前算好Gram矩阵
- 在线性不可分的时候会不收敛(凸包相交判定)
第三章 k近邻
- 惰性学习,不显示分类器
- , p>=1
- p=2,Euclidean
- p=1,Manhattan
- p=∞,各坐标距离最大
- k值选择:
- 减小k则模型复杂,容易过拟合,估计误差大
- 增大k则模型简单,近似误差大
- 用交叉验证选取最优的k
- 多数表决规则等价于经验风险最小化
- kd树:提高k近邻搜索的效率
- 构造:每个维按照中位数递归二分
- 插入、删除:类似二叉树
- 搜索:从找到的叶子节点回退到根节点,如果另一个子节点的对应区域和目前最小圆有交集,则递归检查该子节点
第四章 朴素贝叶斯
- 条件独立假设:特征都是条件独立的
- 朴素贝叶斯:
- 其中先验(左)和条件(右)都能用极大似然估计求出
- 即0-1损失时期望风险最小化
- 贝叶斯估计:避免要估计的概率为0
- ,为0则极大似然估计,为1则为拉普拉斯平滑
- 先验:
- 条件:
第五章 决策树
- if-then规则,本质是从训练数据集中归纳出一组分类规则
- 信息增益
- 熵:
- 条件熵(已知X的条件下Y的不确定性):
- 当然选择最小的开始分类
- 信.息增益(由于特征A使得对D分类的不确定性减少的程度):
- 信息增益比:
- 矫正了特征值较多的偏向
- ID3:选择信息增益最大的,如果特征已经遍历完或者信息增益小于阈值则为单节点
- 相当于用极大似然法进行概率模型的选择(对决策树进行参数估计)
- 只有树生成,容易发生拟合
- C4.5:和ID3一样,但是选择信息增益比最大的
- 剪枝:
- 某结点经验熵(alpha越小则模型越复杂):
- 计算每个节点经验熵,递归从叶节点回退,如果剪枝后的经验熵更小则选择剪枝
- 某结点经验熵(alpha越小则模型越复杂):
- CART:回归树用平方误差最小化原则(遍历特征和切分点算中心偏差),分类树用基尼指数最小化原则
- 基尼指数(平法误差最小化,越大则样本集合的不确定性越大) :
- 生成:对每个结点,递归地遍历每个特征及其每个取值,选择基尼指数最小的作为切分点,切分为二叉树的两个结点。直到样本小于阈值或者基尼系数小于阈值或者没有更多特征。
- 剪枝(精髓没搞懂):用【有限个子树Tα】计算【无限个α】,然后再交叉验证
- 基尼指数(平法误差最小化,越大则样本集合的不确定性越大) :
第六章 逻辑斯谛回归与最大熵模型精髓没搞懂
- logistic回归(分类问题):
- why阻塞增长模型?
- 概率需要
- 在X=0处变化较快
- 这个关系的公式要在之后形成的cost function是凸函数
- 极大化似然函数进行w参数估计
最优化用梯度下降或者拟牛顿法 - 推广到K项逻辑斯谛回归
- why阻塞增长模型?
- 最大熵模型:
- 目标是得到使H(P)最大的时候对应的P(y|x)
- 最优化问题,最大熵模型的极大似然估计就等价于对偶函数的极大化:
- 一般形式:
- 对数线性模型:逻辑斯蒂回归、最大熵模型,都是对模型进行极大似然估计
- 区别?最大熵可以选择其他特征函数,logistics模型则加上了不同特征的独立性假设。
- 梯度下降法:略
- 迭代尺度法IIS:参数向量迭代更新,每次只优化其中一个变量
- 拟牛顿法BFGS:改善牛顿法每次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hessian矩阵的逆,从而简化了运算的复杂度。
第七章 支持向量机
- 线性可分支持向量机利用间隔最大化求最优分离超平面,感知机用误分类最小的策略
- 求解约束最优化
- 对偶问题
- 软间隔最大化:处理线性不可分情况,引入松弛变量和惩罚参数
- 原始问题:
- 对偶问题:
- 原始问题:
- 合页损失函数
- SVM原始最优化问题等价于
- 合页损失函数是0-1函数的上界,连续可导更容易优化
- SVM原始最优化问题等价于
- 非线性支持向量机
- 核技巧:用一个变换将原空间数据映射到新空间,然后在新空间中用线性分类学习方法
- 是输入空间到特征空间的映射
- 对偶问题的内积和分类决策函数的内积都可以用核函数替代
- 使用核技巧之后,学习是隐式地在特征空间进行的,不需要显式地定义特征空间和映射函数
- 正定核的充要条件:对于空降任意点,K对应的Gram矩阵是半正定的
- 常用核函数:
- 多项式核函数:
- 高斯核函数:
- 字符串核函数:kn(s,t)定义的是字符串s和t中长度等于n的所有子串组成的特征向量的余弦相似度
- 算法:
- 选择适当的核函数K(x,z)和适当的参数C,求最优化:
求得最优解,当K为正定核时这个最优化问题是存在解的
- 选择一个alpha的一个正分量,计算:
- 构造决策函数:
- 选择适当的核函数K(x,z)和适当的参数C,求最优化:
- SMO:
- 以上算法的第二步是一个凸二次规划问题,具有全局最优解
- 将原二次规划问题分解为只有两个变量的二次规划自问题,并对子问题进行解析求解,知道所有变量满足KKT条件为止
第八章 提升方法
- 强可学习和弱可学习等价
- AdaBoost算法:
输入:
输出:最终分类器G(x)- 对m=1,2…M
- 用带权值的Dm进行学习得到分类器Gm(x)
- 计算Gm(x)在训练集上的分类误差率
- 计算Gm(x)的系数
,越能分清楚的分类器加权越大 - 更新训练集权值分布
,Zm规范化因子,yiGm(xi)决定了符号,误分类样本被指数扩大
- 对m=1,2…M
- Adaboost的训练误差是以指数速率下降的
加法模型、损失函数为指数函数、学习算法为向前分步算法时的二分类学习方法
向前分步算法是解决加法模型损失函数极小化的问题,adaboost是其中的特列 - 提升树:以分类树或回归树作为基本分类器的提升方法
- 二分类问题:限定Adaboost的分类器为二分类器
- 回归问题:加法模型,平方误差损失函数,学习方法为向前分步算法
- 每次根据数据生成一个回归决策树(利用遍历特征和取值的平方误差最小化)
- 然后数据更新为残差,残差=真实值-预测值
- 提升树即为所有回归树的和
- 循环直到平方损失误差达到要求
- 梯度提升
- 例如平方损失学习残差回归树,例如指数损失学习?,但是一般损失函数的优化不容易
- GBDT
- 初始化,估计使损失函数极小化的常数值,它是只有一个根节点的树,即ganma是一个常数值。
- (a)计算损失函数的负梯度在当前模型的值,将它作为残差的估计
(b)估计回归树叶节点区域,以拟合残差的近似值
(c)利用线性搜索估计叶节点区域的值,使损失函数极小化
(d)更新回归树 - 得到输出的最终模型 f(x)
第九章 EM算法及其推广(一般的极大似然概率的求解方法需要推敲)
- 含有隐变量的概率模型参数的极大似然估计法,没有解析解只能迭代求解
- 初始化分布参数
- E步:根据上一轮迭代的模型参数来计算出隐性变量的后验概率,其实就是隐性变量的期望。作为隐藏变量的现估计值
- M步:将似然函数最大化以获得新的参数值
- EM算法是收敛的,但是不能保证收敛到全局最优
- 高斯混合模型的参数估计
- 变形-GEM算法:每次迭代增加F函数值,从而增加似然值
第十章 隐马尔可夫模型
- HMM:,A状态转移矩阵,B观测概率矩阵,π初始状态
- 假设:齐次马尔可夫假设、观测独立性假设
- 概率计算问题:在λ给定的情况下,求O的概率P(O|λ)
- 学习问题:已知O,求使得P(O|λ)最大的λ
- 预测问题:已知λ和O,求I的概率P(I|O)
- 概率计算算法:类似动态规划
- 前向算法(状态序列的路径结构递推):
- t时刻状态为qi观测为o1~ot的概率:
- 初始:
- 递推:
- 终止:
- 后向算法:
- t时刻状态为qi条件下,从t+1到T的观测为ot+1~oT的概率:
- 初始:
- 递推:
- 终止:
- 统一形式:
- 其他:
- γt(i):给定λ和O,求t时处于状态qi的概率:
- ξt(i,j)给定λ和O,求t时处于状态qi且求t+1时处于状态qj概率:
- 前两者求和有用的:
- O下状态i出现的期望:
- O下由状态i转移的期望:
- O下由状态i转移到状态j的期望:
- O下状态i出现的期望:
- γt(i):给定λ和O,求t时处于状态qi的概率:
- 前向算法(状态序列的路径结构递推):
- 学习算法:
- 监督学习方法:极大似然估计,直接按照训练集中统计的频数来进行计算
- 非监督学习方法:Baum-Welch算法,就是EM算法
- 预测方法:
- 近似算法:利用γ,选择每个时刻最大概率的状态
- 维特比算法:动态规划求概率最大的路径
- 在时刻t时状态为i的所有单个路径(ii,…,it)中概率最大值:
- 递推:
- 记录回溯路径:在时刻t状态为i的所有单个路径(ii,…,it-1,i)中概率最大的路径的第t-1个结点为:
- 在时刻t时状态为i的所有单个路径(ii,…,it)中概率最大值:
第十一章 条件随机场
- 马尔可夫随机场(概率无向图模型):联合概率分布满足成对、局部或全局马尔可夫性
- 参数化形式:加权状态、转移特征
- 矩阵形式:类似HMM中的状态转移矩阵
- 概率计算
- 学习方法
- 预测
第十二章 总结
- k近邻也可以回归,最近k个点的算术平均算法或者考虑距离差异的加权平均
- 损失函数选择:
- 线性回归->假设误差服从正态分布->对数似然函数->均值u和方差σ趋近于0->平方损失函数
- 逻辑回归->假设概率分布服从伯努利分布->对数似然函数->
附录
- 无约束最优化
- 梯度下降
- 牛顿法:二阶收敛,但是求Hesse矩阵的逆,复杂度高
- 共轭梯度法(Conjugate Gradient Method):
- 变尺度法:
- 拟牛顿法:近似Hesse矩阵的逆
- 凸优化
- 拉格朗日对偶性
其他算法
- 随机森林
- n-gtram算法
- 链式规则
- 利用马尔科夫链的假设,当前词仅和之前的n个词有关
- 算法:先从语料库求出n元模型的概率,然后语句的概率就是连乘
- smoothing
- Laplacian (add-one) smoothing
- Add-k smoothing
- Jelinek-Mercer interpolation
- Katz backoff
- Absolute discounting
- Kneser-Ney
- 链式规则
- SVD
- 矩阵的伪逆,矩阵求导规则,
- c++ 矩阵库
待实现的工程
- s-fold
- 感知机
- 梯度下降、随机梯度下降、批量梯度下降比较
- knn,kd树
- 朴素贝叶斯、贝叶斯估计
- ID3、C4.5、CART 以及他们的剪枝
- 逻辑斯蒂回归,k项推广
- 极大似然
- 拟牛顿法、迭代尺度法
- SVM、各种核、SMO
- 回归和分类提升树、GDBT
- 怎么求极大似然估计
- HMM的概率、学习、预测算法
- CRF
- PCA
- learning curve
- 训练集验证集测试集