bingmous

欢迎交流,不吝赐教~

导航

统计学习方法笔记

目录

1 统计学习方法概论

2 感知机

3 k近邻法

4 朴素贝叶斯法

5 决策树——ID3,C4.5,CART

6 逻辑回归与最大熵模型

7 支持向量机——序列最小化SMO算法

8 提升方法——AdaBoost,提升树(分类,回归),梯度提升树(GBDT)


1 统计学习方法概论

监督学习:分类、回归、标注;非监督:聚类

常用损失函数:0-1损失函数,平方损失函数,绝对损失函数,对数损失函数。

正则化:经验风险是训练集的误差,结构风险是模型使用不当的风险(过拟合,使用正则化)。正则化项有参数向量的L1或L2范数。

交叉验证:简单交叉验证(70%训练,30测试);S折交叉验证(数据分成S组,S-1组训练,剩下一组测试,选S组测试中误差最小的模型);留一交叉验证(S折交叉验证中S=N,即N-1个数据训练,留一个数据测试),在数据缺乏的情况下使用。

评价分类:一般是分类准确率,对于二分类,一般使用精确率P和召回率R。P = TP/(TP+FP),R=TP/(TP+FN)。P是正类预测为正类的量在(正类预测为正类+负类预测为正类)也就是在所有预测的正类中的比例。R是正类预测为正类的量在(正类预测为正类+正类预测为负类)也就是实际为正类中被召回的比例。

调和均值F1值,2/F1 = 1/P + 1/R,也即是F1 = 2PR/(P+R),P和R都高时,F1也会高。

2 感知机

线性分类模型,sign(w*x + b),大于0为正类,小于0为负类。wx+b=0为一个分离超平面,w是法向量,b是截距。

代价函数:误分类点到超平面的距离

算法:采用随机梯度下降的方法,每次选取一个点进行梯度下降

当数据集线性可分时,一定收敛。

3 k近邻法

算法: 计算输入向量距离每一个样本的距离,选取最近的k个样本,其中数目最多的类为此类的分类决策

k近邻法没有显示的学习过程。当训练集、距离度量方法、k值、分类决策规则(如多数表决)确定后,对于任意一个新的输入实例,它所属的类唯一确定。

距离度量为Lp,通常p取2。为提高k近邻搜索的效率,可以使用kd树方法。1-先将训练集构造成平衡树;2-进行搜索

4 朴素贝叶斯法

先验概率,指已知所有数据,计算其中的概率,是训练集中已知的概率。

后验概率,指已知输入,猜测每个输出的概率,是被测试得出的概率

极大似然估计:计算每个概率,有可能出现为0的概率。

朴素贝叶斯估计:在原来的基础上,计算先验概率时,分子加lambda,分母加K*lambda;计算条件概率时,分子加上lambda,分母加上Sj*lambda,Sj是每一个特征j的可能取值有Sj个

算法:

1> 计算先验概率,每个类在训练集中的概率;计算条件概率,每个类k中的每一个特征j中的每个可能取值aji的概率。

2> 对于给定特征,计算这些特征在每个类k中可能发生的概率。因为假设特征之间独立同分布,因此概率相乘即可

3> 选择最大后验概率的类。

5 决策树——ID3,C4.5,CART

决策树学习算法:特征选择、决策树的生成、决策树的剪枝

特征选择:输入为数据集和特征A,输出最优特征

  1. 计算数据集经验熵:数据集的经验熵,数据集分类的不确定程度
  2. 计算特征A对数据集的经验条件熵:给定特征,根据该特征分类,计算该情况下的经验条件熵。条件熵计算公式:定义为给定条件X下,Y的条件分布概率的熵对X的期望。在数据集中的解释是:给定特征A,计算根据A分类的子集和子集的概率,此概率用来计算对A条件的期望;再对每一个子集,计算该子集中进行分类的熵(分子是各类的数量,分母是子集数量,也即是给定A,分类的条件概率分布的熵)。总的来说,先用特征分类,分类后的子集中计算条件熵,再用分类的结果(概率)求条件熵的期望。
  3. 计算信息增益

决策树的生成:ID3使用信息增益,C4.5使用信息增益比

决策树的剪枝

|T|为叶子节点的个数,Nt为叶子节点上的样本点数,Ht为叶子节点的经验熵。如果叶节点回缩到父节点之后对应的损失函数降低,则剪枝。直至不能剪枝,得到损失函数最小的子树

CART算法:决策树是二叉树,回归树用平方误差最小化准则,分类树用基尼指数最小化准则。

6 逻辑回归与最大熵模型

逻辑回归:二项式逻辑回归p(y=1|x) = exp(wx)/(1+exp(wx)), p(y=0|x) = 1/(1+exp(wx)). 可以推广到多分类

对数几率log(p/(1-p)) = wx 为线性。对数似然函数L(w) = sigma(ylog(hx) + (1-y)log(1-hx)), hx = exp(1+exp(wx))

7 支持向量机——序列最小化SMO算法

线性可分支持向量机

线性可分对偶算法:

线性不可分:加上一个松弛变量

非线性支持向量机算法:使用核函数,将原来的特征计算相似度

序列最小化算法SMO算法

8 提升方法——AdaBoost,提升树(分类,回归),梯度提升树(GBDT)

AdaBoost(Adaptive Boosting):

1>初始化数据集分布D

2>训练数据,得到分类器G(x)

    - 计算在训练集上的分类误差e_m

    - 根据误差计算此分类器的权重alpha_m

    - 更新数据集分布D

3>进行M次之后,最终分类器为子分类器的线性组合

提升树:二分类、回归

二分类提升树算法,上述AdaBoost中基本分类器使用二类分类树即可。

对于回归问题的提升树,算法如下:

1>初始化f0=0

2>学习一个回归树

3>对每一个训练数据计算残差,通过残差继续学习一个回归树

梯度提升树GBDT(Gradient Boosting Decision Tree)

对于一般损失函数,其中的残差换成负梯度。

 

 

 

 

 

posted on 2019-11-22 15:08  Bingmous  阅读(29)  评论(0编辑  收藏  举报