机器学习与数据挖掘
总结1.1机器学习和数据挖掘的关系机器学习是数据挖掘的重要工具。数据挖掘不仅仅要研究、拓展、应用一些机器学习方法,还要通过许多非机器学习技术解决数据仓储、大规模数据、数据噪音等等更为实际的问题。机器学习的涉及面更宽,常用在数据挖掘上的方法通常只是“从数据学习”,然则机器学习不仅仅可以用在数据挖掘上,一些机器学习的子领域甚至与数据挖掘关系不大,例如增强学习与自动控制等等。数据挖掘试图从海量数据中找出
写在前面,本文主要以李航老师的《统计学习方法》内容为主,穿插数据挖掘知识,持续更新ing!
总结比较
1.1机器学习和数据挖掘的关系
- 机器学习是数据挖掘的重要工具。
- 数据挖掘不仅仅要研究、拓展、应用一些机器学习方法,还要通过许多非机器学习技术解决数据仓储、大规模数据、数据噪音等等更为实际的问题。
- 机器学习的涉及面更宽,常用在数据挖掘上的方法通常只是“从数据学习”,然则机器学习不仅仅可以用在数据挖掘上,一些机器学习的子领域甚至与数据挖掘关系不大,例如增强学习与自动控制等等。
- 数据挖掘试图从海量数据中找出有用的知识。
- 大体上看,数据挖掘可以视为机器学习和数据库的交叉,它主要利用机器学习界提供的技术来分析海量数据,利用数据库界提供的技术来管理海量数据。
1.2 机器学习=统计学习
机器学习是近20多年兴起的一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。因为学习算法中涉及了大量的统计学理论,机器学习与统计推断学联系尤为密切,也被称为统计学习理论。
2. 机器学习方法概论
知识图谱
2.1 机器学习方法的分类
一般意义上分为:监督学习,半监督学习,非监督学习和强化学习
2.1.1 监督学习
监督学习(supervised learning)的任务是学习一个模型,使模型能够对任意给定的输入,对其相应的输出做出一个好的预测(注意,这里的输入、输出是指某个系统的输入与输出,与学习的输入与输出不同)
联合概率分布
- 假设输入与输出的随机变量X和Y遵循联合概率分布P(X,Y),P(X,Y)为分布函数或分布密度函数.
对于学习系统来说,联合概率分布是未知的,训练数据和测试数据被看作是依联合概率分布P(X,Y)独立同分布产生的。-
假设空间
- 监督学习目的是学习一个由输入到输出的映射,称为模型
- 模式的集合就是假设空间(hypothesis space)
- 概率模型:条件概率分布P(Y|X), 决策函数:Y=f(X)
问题的形式化
监督学习问题主要有:分类问题、标注问题、回归问题等。
2.1.2 无监督学习
2.1.3 半监督学习
- 少量标注数据,大量未标注数据
- 利用未标注数据的信息,辅助标注数据,进行监督学习
- 较低成本
2.1.4 强化学习
(待补充ing)
2.1.5 其他分类
- 按照算法可以分为:在线学习(online learning)和批量学习(batch learning)
- 按照技巧可以分为:贝叶斯学习(Bayesian learning)和核方法(Kernel method )
2.2 机器学习三要素
方法 = 模型+策略+算法
-
模型
统计学习首要考虑的问题是学习什么样的模型。在监督学习过程中,模型就是所要学习的条件概率分布或决策函数。选啥模型,简单理解就是选择什么样的函数,比方说感知机用的就是 f(x) = sign(ω*x + b),knn用的是求取欧式度量,进而建立树来回溯。 -
策略:
简单来说,就是建立模型的时候,怎么表示我预测的和真实的之间的误差大小。包括损失函数(度量模型一次预测的好坏)和风险函数/期望损失(平均意义下模型预测的好坏)
-
经验风险最小化(ERM)
适用于大样本量,比如,极大似然估计(maximum likelihood estimation)就是经验风险最小化的一个例子。当模型是条件概率分布,损失函数是对数损失函数时,经验风险最小化就等价于极大似然估计。当样本容量很小时,经验风险最小化学习的效果未必很好,会产生“过拟合over-fitting” -
结构风险最小化(structural risk minimization,SRM)
是为了防止过拟合而提出来的策略。结构风险最小化等价于正则化(regularization)。结构风险在经验风险上加上表示模型复杂度的正则化项(regularizer)或罚项(penalty term)。
这样,监督学习问题就变成了经验风险或结构风险函数的最优化问题
3 算法:
存在的作用就是用来求出,什么时候(模型参数为多少时)给的策略给的损失最小。对应上面说的0-1损失函数,那就是求出啥时候0最少,1最多。
- 如果最优化问题有显式的解析式,算法比较简单
- 但通常解析式不存在,就需要数值计算的方法
2.3 模型评估与模型选择
训练误差: 训练数据集的平均误差
测试误差: 测试数据集的平均误差。测试误差小的具有更好的预测能力,将方法对于未知数据的预测能力称作是泛化能力。
2.3.1 模型评估指标 (分类、回归、聚类和排序指标)
1、分类问题
在监督学习中,当输出变量Y取有限个离散值时,预测问题便成为分类问题。
许多统计学习方法可以用于分类,包括k近邻法、感知机、朴素贝叶斯法、决策树、决策列表、逻辑斯谛回归模型、支持向量机、提升方法、贝叶斯网络、神经网络、Winnow等。
标注问题:
可以认为标注问题是分类问题的一个推广,标注问题又是更复杂的结构预测(structure prediction)问题的简单形式。标注问题的输入是一个观测序列,输出是一个标记序列或状态序列。标注问题的目标在于学习一个模型,使它能够对观测序列给出标记序列作为预测。
标注常用的统计学习方法有:隐马尔可夫模型、条件随机场。标注问题在信息抽取、自然语言处理等领域被广泛应用,是这些领域的基本问题.
- 1 精确率和召回率
精准率(precision)的定义:“预测为正例的那些数据里预测正确的数据个数”。
召回率(recall):所有正样本中,预测正确比例。
理论上二者越高越好,但实际中在某些情况下是矛盾的,因此需要在不同场合具体判断。
P-R曲线:以召回率R为横轴,P为纵轴,P-R曲线越靠近右上角越好。计算曲线面积AP分数可以比较不同模型的精度,但是不方便计算,后面设计了一些指标。
F1:是精确率和召回率的调和平均值。
F值可以泛化为加权调和
-
2 准确率
-
3 ROC和AUC
许多模型输出的是预测概率,需要设置一个判定阈值,当预测概率大于阈值时,判定为正预测,否则为负预测。因此需要引入一个超参数,并且超参数会影响的模型的泛化能力。
接收者操作特征(receiverOperating Characteristic,ROC)
ROC曲线与P-R曲线有些类似。ROC曲线越靠近左上角性能越好。左上角坐标为(0.1),即 FPR=0,TPR=1。根据FPR和TPR公式可以得知,此时FN=0,FP=0模型对所有样本分类正确。
绘制ROC曲线:
首先对所有样本按预测概率排序,以每条样本的预测概率为阈值,计算对应的FPR和TPR,然后用线段连接。当数据量少时,绘制的ROC曲线不平滑;当数据量大时,绘制的ROC曲线会趋于平滑。-
AUC
就是ROC曲线的面积,取值越大说明模型越有可能将正样本排在负样本前面。AUC=随机挑选一个正样本和负样本,分类器将正样本排在负样本前面的概率。AUC常常被用来作为模型排序好坏的指标,原因在于AUC可以看做随机从正负样本中选取一对正负样本,其中正样本的得分大于负样本的概率。所以,AUC常用在排序场景的模型评估,比如搜索和推荐等场景。基尼指数的联系:Gini +1= 2*AUC
计算方法:
-
-
4 对数损失
2、回归问题(regression)
回归用于预测输入变量(自变量)和输出变量(因变量)之间的关系,回归模型正是表示从输入变量到输出变量之间映射的函数。
-
1 平均绝对误差
-
2 平均绝对百分误差
-
3 均方误差
均方误差(MSE)是最常用的回归损失函数。MSE是目标变量与预测值之间距离平方之和。
-
4 均方根误差
3、排序指标
- 1 平均准确率均值
- 2 NDCG,归一化贴现累计收益
2.3.2 过拟合
过拟合Def:
一味的追求提高模型对训练数据的预测结果,所选模型的复杂度可能会更高,由此出现了对训练数据拟合效果很好,但对于未知的数据效果不一定好的现象,就称为过拟合。
过拟合的解决方法:
- 正则化
- 减少特征数量
- 交叉验证
- 增加数据
2.3.3 正则化(模型选择方法)
可以看这里:L1,L2正则化详解
1、结构风险 = 经验风险+正则化项,下面是结构风险最小化模型
正则化项r(d)可以采用数学里面的范数表示,以下是范数的概念。
- L0范数
- L1范数
- L2范数
2、 一般采用L1和L2范数进行正则,称为L1正则化和L2正则化
question:怎样才可以避免过拟合?
answer:
我们一般认为参数数值小的可以适用于更一般的模型,因为参数数值大的话,稍微一点数值干扰就会对结果造成很大的偏差,因此。参数越小的模型,就越简单。所以尽可能使得模型的参数降低。
question:为什么L1范数和L2范数可以避免过拟合?
answer:
加入正则化项就是在原来目标函数的基础上加入了约束。当目标函数的等高线和L1,L2范数函数第一次相交时,得到最优解。
L1范数:
L1范数符合拉普拉斯分布,是不完全可微的。表现在图像上会有很多角出现。这些角和目标函数的接触机会远大于其他部分。就会造成最优值出现在坐标轴上,因此就会导致某一维的权重为0,产生稀疏权重矩阵,进而防止过拟合。
L2范数:
L2范数符合高斯分布,是完全可微的。和L1相比,图像上的棱角被圆滑了很多。一般最优值不会在坐标轴上出现。在最小化正则项时,可以是参数不断趋向于0.最后活的很小的参数。
2.3.4 交叉验证(模型选择方法)
如果给定的样本数据充足,进行模型选择的一种简单方法是随机地将数据集切分成三部分,分别为训练集(training set)、验证集(validation set)和测试集(test set)。
- 训练集用来训练模型
- 验证集用于模型的选择
- 测试集用于最终对学习方法的评估
但是,在许多实际应用中数据是不充足的。为了选择好的模型,可以采用交叉验证方法。交叉验证的基本想法是重复地使用数据;把给定的数据进行切分,将切分的数据集组合为训练集与测试集,在此基础上反复地进行训练、测试以及模型选择。
-
1 简单交叉验证
-
2 S折交叉验证(应用最多)
-
3 留一交叉验证(当S=N)
2.4 泛化能力
1 定义
学习方法的泛化能力(generalizationability)是指由该方法学习到的模型对未知数据的预测能力,是学习方法本质上重要的性质。
现实中采用最多的办法是通过测试误差来评价学习方法的泛化能力.事实上,泛化误差就是所学习到的模型的期望风险。
但这种评价是依赖于测试数据集的。因为测试数据集是有限的,很有可能由此得到的评价结果是不可靠的。统计学习理论试图从理论上对学习方法的泛化能力进行分析。
2 泛化误差上界
学习方法的泛化能力分析往往是通过研究泛化误差的概率上界进行的,简称为泛化误差上界(generalization error bound)。具体来说,就是通过比较两种学习方法的泛化误差上界的大小来比较它们的优劣。
特性:
- 它是样本容量的函数,当样本容量增加时,泛化上界趋于0,效果越好。
- 它是假设空间容量(capacity)的函数,假设空间容量越大,模型就越难学,泛化误差上界就越大。
下面给出一个简单的泛化误差上界的例子:二类分类问题的泛化误差上界。
考虑二类分类问题。已知训练数据集T={(x1,y 1),(x2,y 2),…,(xN,yN)},它是从联合概率分布P(X,Y)独立同分布产生的,X∊Rn,Y∊{-1,+1}。假设空间是函数的有限集合={f1,f2,…,fd},d是函数个数。设f是从 中选取的函数。损失函数是0-1损失。关于f的期望风险和经验风险分别是:
经验风险最小化(ERM)
则FN的泛化能力:
泛化误差上界定理
对于二分类问题,假设空间是有限个函数的集合,对于任何一个函数,至少以1-delta的概率成立以下不等式:
其中:
2.5 生成模型和判别模型
- 监督学习的任务就是学习一个模型,应用这一模型,对给定的输入预测相应的输出。这个模型的一般形式为决策函数:Y=f(X)或者条件概率分布:P(Y|X)。
- 监督学习方法又可以分为生成方法(generative approach)和判别方法(discriminative approach)。所学到的模型分别称为生成模型(generative model)和判别模型(discriminative model)
2.5.1 生成模型
生成方法根据数据学习联合概率分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测模型。典型的生成模型有朴素贝叶斯和隐马尔科夫模型。
2.5.2 判别模型
判别方法是直接学习决策函数F(x)或者条件概率分布P(Y|X) 作为预测的模型,即判别模型。主要关心对于给定的输出,应该预测怎样的输出问题。典型的判别模型有KNN,感知机,决策树,逻辑回归,最大熵模型,SVM,提升方法和条件随机场等等。
2.5.3 生成模型和判别模型比较
- 生成方法的特点:
- 生成方法可以还原出联合概率分布P(X,Y),而判别方法则不能;
- 生成方法的学习收敛速度更快,即当样本容量增加的时候,学到的模型可以更快地收敛于真实模型;
- 当存在隐变量时,仍可以用生成方法学习,此时判别方法就不能用。
- 判别方法的特点:
- 判别方法直接学习条件概率P(Y|X)或决策函数f(X),直接面对预测,往往学习的准确率更高;
- 由于直接学习P(Y|X)或f(X),可以对数据进行各种程度上的抽象、定义特征并使用特征,因此可以简化学习问题。
3 感知机(Perception)
- 感知机1957年由Rosenblatt提出,是神经网络与支持向量机的基础。
- 感知机(perceptron)是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和–1二值。
- 感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型。
- 导入基于误分类的损失函数;
- 利用梯度下降法对损失函数进行极小化。
- 具有简单而易于实现的优点,分为原始形式和对偶形式。
3.1 感知机模型
3.2 感知机模型的几何解释
3.3 感知机模型的损失函数
3.4 感知机模型的对偶形式
4 K近邻法(k-nearest neighbor,k-NN)
4.1 K近邻定义
1、一句话定义:
给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的k个实例,这k个实例的多数属于某个类,就把该输入实例分为这个类。
2、三要素:距离度量,k值的选取,分类决策规则的选取。
- 距离度量一般采用欧氏距离,也可以是其他距离(Lp距离)
- k值选取将会对结果产生巨大的影响。如果k值较小,整体模型变的复杂,容易发生过拟合;如果k值过大,不相关的点也对预测产生影响,导致预测精度较低。一般可以采用交叉验证进行k值得选取。
- 分类决策规则:往往是多数表决。
4.2 k近邻的实现-kd树
实现k近邻法时,主要考虑的问题是如何对训练数据进行快速k近邻搜索。这点在特征空间的维数大及训练数据容量大时尤其必要。最简单是的就是线性扫描,但对于高维数据不可取,因此采用特殊的存储结构kd树进行搜索。
4.2.1 kd树的构建
更多详情请见:kd树构建详解
kd树是二叉树,和分治法思想一样,利用已有数据进行空间切分。构造kd树相当于不断地用垂直于坐标轴的超平面将k维空间切分,构成一系列的k维超矩形区域。kd树的每个结点对应于一个k维超矩形区域。
需要注意的是,每一刀都要切在数据点上面。主要考虑切分域和切分点的选择(分别使用方差最大优先和中位优先)
算法流程:
对于例子:构造一个平衡kd树。
结果如下:
4.2.2 ball tree 和其他树类型介绍
在kd tree 中,我们看到一个导致性能下降的最核心因素是因为kd树的平面是一个个的方形,求最近邻时使用的是圆形。方形平面跟圆形相交的可能性是极高的,如果方形的交汇点多的话,圆形和几个平面相交的可能性就变得更大。这样,凡是相交的平面,都需要进行检查,大大的降低运行效率。
为了解决这一个问题,ball tree抛弃了kd树画的方形,而建立球形,去掉棱角。简而言之,就是使用超球面而不是超矩形划分区域。
4.3 搜索kd树
用目标数据在kd树中寻找最近邻时,最核心的两个部分是:
-
寻找近似点-寻找最近邻的叶子节点作为目标数据的近似最近点。
-
回溯-以目标数据和最近邻的近似点的距离沿树根部进行回溯和迭代。
5 朴素贝叶斯法(Naive Bayesian Model,NBM)
贝叶斯分类算法是统计学的一种分类方法,其分类原理就是利用贝叶斯公式根据某对象的先验概率计算出其后验概率,然后选择具有最大后验概率的类作为该对象所属的类。
之所以称之为”朴素”,是因为贝叶斯分类只做最原始、最简单的假设:
- 所有的特征之间是统计独立的(假设某样本x有a1,…,aM个属性,那么有P(x)=P(a1,…,aM) = P(a1)*…*P(aM);)
5.1 概率公式复习
- 先验概率: 由经验和数据可以直接得到的概率。比如根据统计历史数据,得到北京今天下雨概率。
- 似然函数: 根据已知结果推算固定情况下的可能性。比如下雨时有乌云的概率。类条件概率
- 后验概率:根据今天有乌云,结合先验概率和似然函数,得到今天下雨的概率。通过贝叶斯公式计算
- 全概率公式:
- 联合概率和条件概率满足:
- 贝叶斯公式:
5.2 朴素贝叶斯
5.2.1 条件独立性假设
由于这是一个较强的假设,朴素贝叶斯法也由此得名.
5.2.2 朴素贝叶斯分类器(公式推导)
根据贝叶斯公式:
将条件独立性公式带入贝叶斯公式中:
于是,贝叶斯分类器可以表示为:
由于分母对所有Ck都是相同的,故可以简化为:
这就是朴素贝叶斯分类器。
5.2.3 后验概率最大化准则:
5.3 朴素贝叶斯法的参数估计
5.3.1 极大似然估计(Maximum Likelihood Estimate,MLE)
朴素贝叶斯的参数主要有两个,
其对应的极大似然估计分别为:
5.3.2 贝叶斯估计
用极大似然估计可能会出现所要估计的概率值为0的情况。这时会影响到后验概率的计算结果,使分类产生偏差。解决这一问题的方法是采用贝叶斯估计。
先验概率和类条件概率的贝叶斯估计为:
其中,等价于在随机变量各个取值的频数上赋予一个正数 namuda>0。当namuda =0时就是极
大似然估计。常取 1,这时称为拉普拉斯平滑(Laplace smoothing)。
5.4 朴素贝叶斯分类器优缺点
优点:
- 不受孤立的噪声点影响。因为从数据中计算条件概率时,这些孤立点被平均掉了。
- 面对无关属性Xi,分类器不受影响。因为P(xi|Y)几乎成为了均匀分布,Xi的类条件概率不会对后面的总的后验概率计算造成影响。
- 结果容易解释
缺点:
- 相关属性可能降低qtd能,因为有可能导致条件独立性不成立。
- 分类决策有一定的错误
- 对数据的
6 决策树(Decision Tree)
- 决策树(decision tree)是一种基本的分类与回归方法。
- 决策树学习通常包括3个步骤:特征选择、决策树的生成和决策树的修剪。
- 这些决策树学习的思想主要来源于由Quinlan在1986年提出的ID3算法和1993年提出的C4.5算法,以及由Breiman等人在1984年提出的CART算法。
6.1 决策树模型与学习
决策树解决分类问题的一般方法
6.1.1 决策树模型
定义:分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点(internal node)和叶结点(leaf node)。内部结点表示一个特征或属性,叶结点表示一个类。
6.1.2 决策树与if-then规则
可以将决策树看成一个if-then规则的集合。将决策树转换成if-then规则的过程是这样的:由决策树的根结点到叶结点的每一条路径构建一条规则;路径上内部结点的特征对应着规则的条件,而叶结点的类对应着规则的结论。
决策树的路径或其对应的if-then规则集合具有一个重要的性质:互斥并且完备。这就是说,每一个实例都被一条路径或一条规则所覆盖,而且只被一条路径或一条规则所覆盖。这里所谓覆盖是指实例的特征与路径上的特征一致或实例满足规则的条件。
6.1.3 决策树与条件概率分布
6.1.4 决策树学习
决策树学习本质上是从训练数据集中归纳出一组分类规则,与训练数据集不相矛盾的决策树(即能对训练数据进行正确分类的决策树)可能有多个,也可能一个也没有。从另一个角度看,决策树学习是由训练数据集估计条件概率模型。基于特征空间划分的类的条件概率模型有无穷多个。我们选择的条件概率模型应该不仅对训练数据有很好的拟合,而且对未知数据有很好的预测。
决策树的损失函数是正则化的极大似然函数。当损失函数确定以后,学习问题就变为在损失函数意义下选择最优决策树的问题。因为从所有可能的决策树中选取最优决策树是NP完全问题,所以现实中决策树学习算法通常采用启发式方法,近似求解这一最优化问题。这样得到的决策树是次最优(sub-optimal)的。
决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类的过程。这一过程对应着对特征空间的划分,也对应着决策树的构建。开始,构建根结点,将所有训练数据都放在根结点。选择一个最优特征,按照这一特征将训练数据集分割成子集,使得各个子集有一个在当前条件下最好的分类。如果这些子集已经能够被基本正确分类,那么构建叶结点,并将这些子集分到所对应的叶结点中去;如果还有子集不能被基本正确分类,那么就对这些子集选择新的最优特征,继续对其进行分割,构建相应的结点。如此递归地进行下去,直至所有训练数据子集被基本正确分类,或者没有合适的特征为止。最后每个子集都被分到叶结点上,即都有了明确的类。这就生成了一棵决策树。
以上方法生成的决策树可能对训练数据有很好的分类能力,但对未知的测试数据却未必有很好的分类能力,即可能发生过拟合现象。我们需要对已生成的树自下而上进行剪枝,将树变得更简单,从而使它具有更好的泛化能力。具体地,就是去掉过于细分的叶结点,使其回退到父结点,甚至更高的结点,然后将父结点或更高的结点改为新的叶结点。
决策树学习算法包含特征选择、决策树的生成与决策树的剪枝过程。决策树学习算法包含特征选择、决策树的生成与决策树的剪枝过程。
决策树学习常用的算法有ID3、C4.5与CART,下面结合这些算法分别叙述决策树学习的特征选择、决策树的生成和剪枝过程。
6.2 特征选择
如果利用一个特征进行分类的结果与随机分类的结果没有很大差别,则称这个特征是没有分类能力的。通常特征选择的准则是信息增益或信息增益比。
6.2.1 信息增益(ID3)
-
熵:表示随机变量不确定性的度量。
-
熵的理论解释:
-
条件熵
设有联合分布:
则条件熵为:在已知随机变量x的条件下随机变量Y的不确定性,定义为条件x下Y的条件概率分布的熵对X的数学期望。
当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别称为经验熵(empirical entropy)和经验条件熵(empirical conditional entropy ) -
信息增益
特征A对训练集数据D的信息增益:G(D,A)定义为集和D下的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)的差值。
信息增益表示的是,在给定特征X的信息下,使得类Y的信息不确定性的减少程度。因此,对训练数据集(或集)D,计算其每个特征的信息增益,并比较它们的大小,选择信息增益最大的特征。信息增益越大,说明特征X对Y分类的不确定性影响程度也就越大,即可以有效的分类。
一般地,熵H(Y)与条件熵H(Y|X)之差称为互信息(mutual information)。决策树学习中的信息增益等价于训练数据集中类与特征的互信息。 -
信息增益计算
6.2.2 信息增益比(C4.5)
信息增益值的大小是相对于训练数据集而言的,并没有绝对意义。在分类问题困难时,也就是说在训练数据集的经验熵大的时候,信息增益值会偏大。反之,信息增益值会偏小。使用信息增益比(information gain ratio)可以对这一问题进行校正。这是特征选择的另一准则。
定义:为其信息增益g(D,A)与训练数据集D关于特征A的经验熵H(D)之比
6.2.3 Gini指数(CART法)
详见6.3.3.1
6.3 ID3算法(决策树的生成)
6.3.1 思想
以信息熵为度量,用于决策树节点的属性选择,每次优先选取信息量最多的属性,亦即能使信息增益最大的属性(熵值变为最小),以构造一颗熵值下降最快的决策树,到叶子节点处的熵值为0。此时,每个叶子节点对应的实例集中的实例属于同一类。
6.3.2 ID3算法流程:
6.3.3 ID3不足之处:
- 没有考虑连续特征,比如长度、密度值(C4.5采用了特征离散)
- 对于缺失值的情况没有考虑
- 信息增益作为标准容易偏向于去取值较多的特征(C4.5 采用信息增益比改进)
- 由于只有树的生成,容易出现过拟合
由此出现了改进算法C4.5
6.4 C4.5算法(决策树的生成)
整体思路和ID3区别不大,只是在处理连续数据特征和采用信息增益比作为特征选取的参数。
6.4.1 二元分割(连续值特征离散化)
比如m个样本的连续特征A有m个,从小到大排列为a1,a2,…,am,则C4.5取相邻两样本值的中位数,一共取得m-1个划分点,其中第i个划分点Ti表示为:Ti=[a(i)+a(i+1)]/2。对于这m-1个点,分别计算以该点作为二元分类点时的信息增益。选择信息增益最大的点作为该连续特征的二元离散分类点。比如取到的增益最大的点为at,则小于at的值为类别1,大于at的值为类别2,这样我们就做到了连续特征的离散化。
6.4.2 C4.5不足之处
- 由于决策树算法非常容易过拟合,因此对于生成的决策树必须要进行剪枝。
- C4.5生成的是多叉树,即一个父节点可以有多个节点。很多时候,在计算机中二叉树模型会比多叉树运算效率高。如果采用二叉树,可以提高效率。
6.5 决策树过拟合?——剪枝
剪枝:将已生成的树进行简化的过程。剪枝从已生成的树上裁掉一些子树或叶结点,并将其根结点或父结点作为新的叶结点,从而简化分类树模型。
6.6 CART算法(分类与回归树 classification and regression Tree)
CART模型由Breiman等人在1984年提出,是应用广泛的决策树学习方法。CART同样由特征选择、树的生成及剪枝组成,既可以用于分类也可以用于回归。以下将用于分类与回归的树统称为决策树。如果目标变量是类别,就是分类树;如果是是连续值,就是回归树。
6.6.1 与ID3的不同
- 二元划分,二叉树精度更高,且不容易产生数据碎片
- 特征选择变量使用不纯性度量
- 分类目标:Gini指数、Towing、order Towing
- 回归目标:最小平方残差、最小绝对残差
- 剪枝:使用预剪枝或者后剪枝
6.6.2 回归树的生成
如何对空间进行划分?
最小二乘回归树生成算法
6.6.3 分类树的生成
1.基尼指数(Gini指数)
基尼指数Gini(D)表示集合D的不确定性,基尼指数Gini(D,A)表示经A=a分割后集合D的不确定性。基尼指数值越大,样本集合的不确定性也就越大,这一点与熵相似。用基尼指数选择最优特征,同时决定该特征的最优二值切分点。
对于二分类问题,基尼指数为:
对于给定的集合D,基尼指数为:
下图显示二类分类问题中基尼指数Gini§、熵(单位比特)之半 H§和分类误差率的关系。横坐标表示概率p,纵坐标表示损失。可以看出基尼指数和熵之半的曲线很接近,都可以近似地代表分类误差率。
CART生成算法:
6.6.4 CART剪枝
6. 7决策树的优缺点
1.优点
- 推理过程简单,表示成if-then的形式
- 推理过程完全依赖于属性变量的取值特点
- 可以自动忽略对目标属性没有贡献的属性变量,为判断属性的重要性,降维提供了参考。
- 可以很好的处理缺失特征的情况下
- 对异常点有良好的鲁棒性
2.缺点
- 信息增益偏向取值多的的特征
- 容易过拟合
- 忽略了属性之间的联系
7 逻辑回归与最大熵模型
逻辑斯谛回归(logistic regression,LR)是统计学习中的经典分类方法。最大熵是概率模型学习的一个准则,将其推广到分类问题得到最大熵模型(maximum entropy model)。本章首先介绍逻辑斯谛回归模型,然后介绍最大熵模型,最后讲述逻辑斯谛回归与最大熵模型的学习算法,包括改进的迭代尺度算法和拟牛顿法。
二者共处:
- 逻辑斯谛回归模型与最大熵模型都属于对数线性模型
- 逻辑斯谛回归模型及最大熵模型学习一般采用极大似然估计,或正则化的极大似然估计。
- 逻辑斯谛回归模型及最大熵模型学习可以形式化为无约束最优化问题。求解该最优化问题的算法有改进的迭代尺度法、梯度下降法、拟牛顿法。
7.1 逻辑斯蒂回归(logistic regression )
逻辑回归是一种广义的线性模型,虽然由回归二字,但确实经典的分类模型。通过对数概率函数将线性函数的结果进行映射,目标空间从(-无穷,+无穷)映射到了(0,1),从而可以处理分类问题。
7.1.0 和线性回归比较
线性回归在训练时在整个整数域对异常点的敏感性是一致的(见下图),因此一般不适用于处理分类问题。因此采用对数概率函数将线性函数的结果进行(0,1)映射,转换成概率输出。
7.1.1 logistic 分布
1、 定义
X服从logistic分布是指有以下的分布函数和密度函数
其中,分布函数以(u,1/2)中心对称,且有:
曲线特性:曲线在中心附近增长速度较快,在两端增长速度较慢。形状参数r的值越小,曲线在中心附近增长得越快。
特殊的:
7.1.2 二项逻辑斯谛回归模型
为了方便,w和x记作:
这时,逻辑斯谛回归模型如下:
事件的几率:事件发生的概率与不发生的概率比值p/1-p。则该事件的对数几率(logit 函数):
由上面三个公式得到:
说明在逻辑斯蒂回归中,输出Y=1的对数几率是输入X的线性模型,此即logistic regression 模型。
7.1.3 模型参数估计
设:
构造的似然函数为:
对数似然函数:
通过对L(w)取极大值,得到w的估计值。如果对数似然函数乘以-1/N,则转换为了一个极小值模型。
通过最速下降法和拟牛顿法可以得到w的极大似然估计值,那么学习到的逻辑斯蒂回归模型为:
以上是解决二分类的逻辑斯蒂模型,可以推广到多项逻辑斯蒂回归模型。
7.1.4 逻辑回归模型优缺点
- 优点
- 处理速度快,容易并行计算,是用于学习大规模训练的样本和特征
- 在工业界得到了广泛的应用
- 缺点
- 需要大量的特征组合和离散来增强特征的表达性
- 模型表达能力弱
- 容易欠拟合
7.2 最大熵模型(MEM)
最大熵模型(maximum entropy model)由最大熵原理推导实现。首先叙述最大熵原理,然后最大熵模型的推导,最后给出最大熵模型学习的形式。
7.2.1 最大熵原理
学习概率模型中,所有可能的概率模型里面,熵最大的概率模型是最好的模型。最大熵原理也可以表述为在满足约束条件的模型集合中选取熵最大的模型。
7.2.2 最大熵模型定义
也就有n个约束条件。
最大熵模型定义:
7.2.3 最大熵模型的学习
可以转换成最优化问题。学习过程等价于优化问题的求解
进一步,可以将带约束的优化问题转换为无约束的对偶问题,通过对偶问题求解原问题。
7.2.4 对偶函数的极大化等价于最大熵模型的极大似然估计
。。。。看着有点难推导了
总之,最大熵模型的学习问题就转换为具体求解对数似然函数极大化或对偶函数极大化的问题。
可以得到更一般形式的最大熵模型
其中:
总之,最大熵模型与逻辑斯谛回归模型有类似的形式,它们又称为对数线性模型(log linearmodel)。模型学习就是在给定的训练数据条件下对模型进行极大似然估计或正则化的极大似然估计。
7.3 模型学习的最优化方法
逻辑斯谛回归模型、最大熵模型学习归结为以似然函数为目标函数的最优化问题,通常通过迭代算法求解。从最优化的观点看,这时的目标函数具有很好的性质。它是光滑的凸函数,因此多种最优化的方法都适用,保证能找到全局最优解。常用的方法有改进的迭代尺度法、梯度下降法、牛顿法或拟牛顿法。牛顿法或拟牛顿法一般收敛速度更快。
7.3.1 改进的迭代尺度法(improved iterative scaling,IIS)
算法流程:
7.3.2 牛顿法
1、牛顿法定义
主要用在以下问题中:
a)求方程的根(函数比较复杂,没有求根公式)。
b)应用于最优化方法求解无约束问题的最优解(通常是求函数的极大极小值)
在求解无约束问题的最优解中,我们从二维和高维的情况下来学习牛顿迭代法
- 二维情况
- 高维情况,牛顿迭代公式为:
其中,海森矩阵的定义:
在本问题中,
2、牛顿迭代法流程:
缺点是:Hessian矩阵引入的复杂性,使得牛顿迭代求解的难度大大增加。于是有了拟牛顿法。
7.3.3拟牛顿法(DFP,BFGS,Broyden类算法)
参考自 拟牛顿法详细介绍,更多详情链接内查看。
1、基本思想
2、拟牛顿条件:
3、Broyden算法
在每次更新中可以选择更新矩阵,这种选择具有一定的灵活性,由多种具体实现算法,下面介绍Broyden类拟牛顿算法。
4、 最大熵模型的学习方法——拟牛顿法
算法流程:
8 支持向量机(support vector machines,SVM)
总结:
- 支持向量机(support vector machines,SVM)是一种二类分类模型;
- 它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;当训练数据集线性可分时,存在无穷个分离超平面可将两类数据正确分开。感知机利用误分类最小的策略,求得分离超平面,不过这时的解有无穷多个。线性可分支持向量机利用间隔最大化求最优分离超平面,这时,解是唯一的。
- 支持向量机还包括核技巧,这使它成为实质上的非线性分类器。
- 支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划(convex quadratic programming)的问题,也等价于正则化的合页损失函数的最小化问题。支持向量机的学习算法是求解凸二次规划的最优化算法
8.1 支持向量机分类
- 线性可分支持向量机(采用硬间隔最大化)
- 线性支持向量机(训练数据近似线性可分时,采用软间隔最大化)
- 非线性支持向量机(但训练数据线性不可分时,采用核技巧以及软间隔最大化)
8.1 线性可分支持向量机
8.1.1 定义
考虑如下图所示的二维特征空间中的分类问题。图中“○”表示正例,“×”表示负例。训练数据集线性可分,这时有许多直线能将两类数据正确划分。线性可分支持向量机对应着将两类数据正确划分并且间隔最大的直线。
8.1.2 函数间隔和几何间隔
- 一般来说,一个点距离分离超平面的远近(|wx+b|)可以表示分类预测的确信程度
- wx+b的符号和类别y的符号是否一致,表示分类的正确性
由此引出了函数间隔的定义,表示分类的正确性和确信度。
1、函数间隔
对于给定的训练数据集T和超平面(w,b),定义超平面(w,b)关于样本点(xi,yi)的函数间隔为:
训练集的函数间隔为:
从上面可以看到,当w,倍数增加时,超平面不变,但是距离却倍数改变了,因此需要对w进行归一化,由此导出正例和负例的距离:
2、 几何距离
训练数据集的几何距离就是:
由此推出函数距离和几何距离的关系:
8.1.3 (几何距离)间隔最大化
间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例点分开,而且对最难分的实例点(离超平面最近的点)也有足够大的确信度将它们分开。这样的超平面应该对未知的新实例有很好的分类预测能力。
1、 最大间隔风格超平面
最大间隔超平面可以表示为:
根据函数距离和几何距离之间的关系,可以改写为:
进一步,取r尖=1,1/||w|| <===> 1/2*||w||^2。
这个问题可以表示为如下的凸二次规划问题
由此可以建立线性可分支持向量机的学习算法:
支持向量:在线性可分情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例。也意味着支持向量使得约束条件的等号成立。(因为r就是由支持向量决定的,所以必然相等)
8.1.4 学习的对偶算法
为了求解上面的最优化问题(7.13-7.14公式),将其作为原始最优化问题,通过拉格朗日对偶性,通过求解对偶问题得到原始问题的解。这就是线性可分支持向量机的对偶算法。优点在于:
- 对偶问题往往更容易求解
- 自然的引入了核函数,进而推广到非线性问题
首先构建拉格朗日函数:
原问题是极小极大问题,则对偶问题是极大极小问题。
求解步骤:
第一步:求解极小问题
第二步:求解极大问题
在求得对偶问题的解后,根据KKT条件既可以求得原始问题的解。
则分超平面wx+b=0可以表示为:
分类决策函数f(x)=sgn(wx+b)表示为:
这个函数说明了分类决策函数只依赖于输入x和训练样本输入的内积。式(7.30)称为线性可分支持向量机的对偶形式。
8.2 线性支持向量机和软间隔最大化
对于线性可分问题,利用线性可分支持向量机(硬间隔最大化)可以完美的解决这个问题,当时现实中,训练数据往往是线性不可分的,即在样本中出现一定的噪声和异常点,因此需要更一般的算法。
8.2.1 线性支持向量机
线性不可分意味着训练数据出现了特异点,这些点不能满足函数距离>=1的约束条件。因此需要引入一个松弛变量,则约束条件为:
目标函数变为:(C是惩罚函数)
则线性不可分的线性支持向量机学习问题为:
由此定义线性支持向量机的分离超平面和分类决策函数:
8.2.2 学习的对偶算法
学习问题的拉格朗日函数:
根据求解对偶问题,也就是拉格朗日的极大极小问题,即可以得出对偶问题的解,再由KKT条件的出原始问题的解。
8.2.3 合页损失函数
线性支持向量机的学习方法还有另外一种解释,就是最小化以下的目标函数:
第一项被称作是经验损失(风险),第二项是L2正则项。
定义合页函数:
下标“+”表示以下取正值的函数,有:
也就是说当被分类正确时,合页损失为0,当时分类错误时,损失不为0.
合页损失函数图像:
图中还画出0-1损失函数,可以认为它是二类分类问题的真正的损失函数,而合页损失函数是0-1损失函数的上界。由于0-1损失函数不是连续可导的,直接优化由其构成的目标函数比较困难,可以认为线性支持向量机是优化由0-1损失函数的上界(合页损失函数)构成的目标函数。这时的上界损失函数又称为代理损失函数(surrogate loss function)。
图7.6中虚线显示的是感知机的损失函数[y i(w·xi+b)]+。这时,当样本点(xi,y i)被正确分类时,损失是0,否则损失是-yi(w·xi+b)。相比之下,合页损失函数不仅要分类正确,而且确信度足够高时损失才是0。也就是说,合页损失函数对学习有更高的要求。
8.3 非线性支持向量机和核函数
对于线性可分数据,采用线性可分支持向量机;对于线性不可分数据的线性分类问题,从用线性支持向量机;当分类问题非线性时,就加入核技巧,用非线性支持向量机。
8.3.1 核技巧
1、非线性可分问题
是指通过非线性模型才能有较好的分类效果。先看一个实例:
对于左图中的数据,需要用到一个椭圆方程才可以进行分类,这就是非线性模型,当时非线性问题往往不容易求解,可以将非线性问题变换为线性问题,通过解线性问题来求解原来的非线性问题。所以经过一个映射函数(如下),变换后就得到了新的空间。原来的椭圆变换成新空间中的直线。
在上面这个例子中,求解非线性问题分为两步。首先,通过一个非线性映射,将输入空间(欧氏空间)对应到一个特征空间(希尔波特空间:完备的内积空间,可以导出范数),使得输入空间中的超曲面模型可以对应到希尔伯特空间中的超平面模型。这样非线性问题就通过在特征空间内,通过支持向量机解决。
2、核函数定义
核函数的思路是:在学习与预测中只定义核函数K(x,z),而不显式地定义映射函数Ø。通常,直接计算K(x,z)比较容易,而通过Ø(x)和Ø(z)计算K(x,z)并不容易。一般特征空间是高维空间,甚至是无穷维的。
核函数在支持向量机的应用:
需要注意到,在线性支持向量机的对偶问题中,无论是目标函数还是决策函数都只涉及到输出实例与实例之间的内积。
用
替换掉(xi,xj)内积得到:
决策函数为:
8.3.2 正定核
已知映射函数Ø,可以通过Ø(x)和Ø(z)的内积求得核函数K(x,z),那么K(x,z)满足什么条件才可以成为核函数?分为以下过程:
1)定义映射,构造出向量空间S。
考虑由线性组合为元素的集合S, 由于集合S对加法和数乘运算是封闭的,S构成一个向量空间。
2)在S上定义内积,构成内积空间
3) 将内积空间完备成希尔伯特空间
正定核的充要条件:K(x,z)的Gram矩阵半正定。
常用核函数
-
1、多项式核函数
对应的分类决策函数为:
-
2、高斯核函数:
决策函数:
-
3、字符串核函数
8.3.3 非线性支持向量机的学习算法
8.4 序列最小优化算法(Sequential minimal optimization,SMO)
SVM的血虚问题可以形式化为一个凸二次规划问题,对于这类新问题,有多种算法可以解决,当时当训练样本过大时,如何高效地SVM学习就变得尤为重要了。
SMO算法是一种启发式算法,其基本思路为:
1)如果所有变量都满足KKT条件,则得到解。
2)否则,选择两个变量,固定其他的变量,针对这两个变量构建出一个二次规划问题,称为子问题,通过解析方法井下看求解,提高速度。
其中,两个变量的选取:一个是违反KKT条件最严重的那个,另外一个是由约束条件自动确定。
SMO算法包括两个部分(1.求解两个变量的二次规划问题;2)选择变量的启发式算法)
8.4.1 两个变量的二次规划问题求解
未完待续
8.4.2 两个变量的选择(启发式方法)
未完待续
9 集成学习(Ensemble Learning)
在机器学习的有监督学习算法中,我们的目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往不这么理想,有时我们只能得到多个有偏好的模型(弱监督模型,在某些方面表现的比较好)。集成学习就是组合这里的多个弱监督模型以期得到一个更好更全面的强监督模型,集成学习潜在的思想是即便某一个弱分类器得到了错误的预测,其他的弱分类器也可以将错误纠正回来。
集成学习在各个规模的数据集上都有很好的策略。
- 数据集大:划分成多个小数据集,学习多个模型进行组合
- 数据集小:利用Bootstrap方法进行抽样,得到多个数据集,分别训练多个模型再进行组合
集成学习主要分两种::Boosting和Bagging.都是减少泛化误差的学习框架,不是具体的算法。
(1)模型之间彼此存在依赖关系,按一定的次序搭建多个分类模型,一般后一个模型的加入都需要对现有的集成模型有一定贡献,进而不断提高更新过后的集成模型性能,并借助多个弱分类器搭建出强分类器。代表有Boosting(AdaBoost)算法。该算法与第一种的随机森林主要区别在于每一颗决策树在生成的过程中都会尽可能降低模型在训练集上的拟合或训练误差
(2)模型之间彼此不存在依赖关系,彼此独立。利用相同的训练数据同时搭建多个独立的分类模型,然后通过投票的方式,以少数服从多数的原则做出最终的分类决策。例如:Bagging和随机森林(Random Forest).
9.0 集成学习的分类
集成学习可以分为三类:
- 串行集成方法(boosting)
- 参与训练的基础学习器按照串联方式生成,有Adaboost,GB,GBDT等
- 基本原理:将基分类器层层叠加,每一层在训练的时候,都对前一层分类错误的样本加大赋权。在测试时,根据各分类器的预测结果加权给出最终结果。分类器之间有依赖关系。
- 并行集成方法(bagging)
- 训练过程中,对多个分类器并行训练。有随机森林(random forest)
- 基本思路:通过自助采样(bootstrap)将训练集分为若干个子集,然后每个子集同时训练出一个基分类器,每个基分类器之间无联系,再通过投票的方式给出最终的预测结果。利用基分类器的独立性,通过平均来降低错误。
- 模型融合(stacking)
- 通过组合模型,来提高预测精度
- 基本原理:选取多个模型的预测输出(LR,GBDT,Xgboost,RF等等),作为最终模型的输入,实现最终预测。
9.1 Boosting
强可学习:在概率近似正确(probably approximately correct, PAC)学习的框架中,一个概念(类),如果存在一个多项式的学习算法能够学习它,并且正确率很高,称这个概念是强可学习的。
弱可学习:如果存在一个多项式的学习算法能够学习它,学习的正确率仅比随机猜测略好,则称这个概念是弱可学习的。
对于分类问题而言,给定一个训练样本集,求比较粗糙的分类规则(弱分类器)要比求精确的分类规则(强分类器)容易得多。提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器(又称为基本分类器),然后组合这些弱分类器,构成一个强分类器。大多数的提升方法都是改变训练数据的概率分布(训练数据的权值分布),针对不同的训练数据分布调用弱学习算法学习一系列弱分类器。
在分类问题中,通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的效果(三个臭皮匠顶个诸葛亮)。
9.1.1 Adaboost(Adaptive boost)
1、Adaboost的提出
2、Adaboost基本思路
Adaboost如何解决两个问题?
-
每一轮如何改变训练数据的权值和概率分布
Adaboost:提高前一轮被弱分类器分类错误样本的权值,降低那些被分类正确样本的权值
-
如何将弱分类器组合成强分类器
加权多数表决,加大分类误差率小的弱分类器的取值,使其在表决中其较大的作用。
3、Adaboost算法流程
-
1)初始化训练数据的初始权重
-
2)对于m个弱分类器
-
在权重Dm下训练数据,得到弱分类器
-
计算Gm的训练误差
-
计算Gm的系数
-
更新训练数据的权重分布
其中Zm是规范因子
-
-
3)构建弱分类器的线性组合
得到最终的分类器
4、 Adaboost的训练误差分析
定理:(Adaboost的训练误差界)最终的分类误差为:
如果存在r>0,对所有的rm>r。都有:
结论:这表明在此条件下AdaBoost的训练误差是以指数速率下降的
5、 Adaboost算法的解释
前向分步算法
算法流程如下:
9.1.2 提升树(Adaboost+决策树)
提升树是以分类树或回归树为基本分类器的提升方法;提升树被认为是统计学习中性能最好的方法之一。
1、提升树模型
提升方法实际上就是采用加法模型(各种基函数的线性组合)和前向分步算法。以决策树模型为基函数的提升方法称为提升树(boosting tree)。对于分类问题,决策树就采用二叉分类树;对于回归问题,决策树就采用回归二叉树。提升树模型可以表示为:
其中,T(x;Θm)表示决策树;Θm为决策树的参数;M为树的个数。
2、 提升树算法
提升树采用的是前线分步算法,流程如下:
针对不同问题的提升树算法,使用的损失函数也有所不同。
对于二分类问题:提升树算法只需将AdaBoost算法8.1中的基本分类器限制为二类分类树即可,可以说这时的提升树算法是AdaBoost算法的特殊情况。
对于回归问题提升树:
9.1.3 梯度提升(Gradient Boosting)
提升树通过加法模型和前线分步算法实现学习得优化过程,当损失函数是平方损失和指数损失函数时,每一步的优化都是很简单的,但对于一般损失函数而言,往往每一步的优化并不那么容易,针对这一问题,freidman提出了梯度提升算法。
这是利用最速下降法的近似算法。关键是利用损失函的负梯度在当前模型的值作为回归问题的提升树算法中的残差的近似值,拟合出一个回归树。
9.1.4 GBDT(Gradient Boosting+CART)
GBDT与上述算法有所不同,可见:GB和GBDT
GBDT全称为梯度下降树,既可以做分类也可以做回归,使用CART决策树。通加法模型,不断减少训练过程中的残差来优化模型。
基本训练原理:
剩下的就是GB原理里面的。
一些问题:
1、 GBDT怎样设置单棵树的停止生长条件?
- 节点分裂时的最小样本数
- 树的最大深度
- 最多叶子结点数
- Loss满足约束条件
2、GBDT的优缺点
优点:
- 可以灵活处理各种数据(连续/离散)
- 对异常值的鲁棒性很强(因为采用决策树的原因)
- 无需要做归一化
缺点:
- 由于弱分类器存在依赖关系,不能在tree粒度上并行计算
- 训练过程需要串行,所以只能在Decision Tree内部进行一些局部并行加速(计算每个样本负梯度时;分裂挑选最佳特征和分割点时,对特征计算相应的误差和均值,等等)。
9.1.5 XGBoost
GBDT和XGBoost的比较:
-
传统GBDT以CART作为基分类器,xgboost还支持线性分类器,这个时候xgboost相当于带L1和L2正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题)。
-
节点分裂的方式不同,gbdt是用的gini系数,xgboost是经过优化推导后的.
-
传统GBDT在优化时只用到一阶导数信息,xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。为什么xgboost要用泰勒展开,优势在哪里?xgboost使用了一阶和二阶偏导, 二阶导数有利于梯度下降的更快更准. 使用泰勒展开取得函数做自变量的二阶导数形式, 可以在不选定损失函数具体形式的情况下, 仅仅依靠输入数据的值就可以进行叶子分裂优化计算, 本质上也就把损失函数的选取和模型算法优化/参数选择分开了. 这种去耦合增加了xgboost的适用性, 使得它按需选取损失函数, 可以用于分类, 也可以用于回归。
-
Xgboost在代价函数里加入了正则项,用于控制模型的复杂度,降低了过拟合的可能性。正则项里包含了树的叶子节点个数、每个叶子节点上输出的score的L2模的平方和。
-
Xgboost工具支持并行。boosting不是一种串行的结构吗?怎么并行的?注意xgboost的并行不是tree粒度的并行,xgboost也是一次迭代完才能进行下一次迭代的(第t次迭代的代价函数里包含了前面t-1次迭代的预测值)。xgboost的是在特征粒度并行上的。我们知道,决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),xgboost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代中重复地使用这个结构,大大减小计算量。这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。
9.2 Bagging(Boostrap aggregation,自举汇聚法)
Bagging也称为自举汇聚法(Boostrap aggregation)
Bagging基本流程:通过自助采样(有放回),采出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,在将这些基学习器进行组合
9.2.1 Bootstrap sampling自助采样
模型的评估方法中有简单交叉验证(将数据集划分为两个互不相交的集合,一个做测试集,一个做训练集)和K折-交叉验证方法(将数据分成k个大小相似互不相交的子集,每次使用k-1个子集做训练集,剩下的一个子集做测试集,以此循环进行k次的训练和测试,最后返回k次测试结果的均值)
但是上述两种方法中都保留了一部分样本用于测试,所以实际模型所使用的训练集比源数据都要小,因此就会引入一些因训练样本规模不同而导致的估计偏差。另外一方面留一法受训练样本影响较小,但是计算复杂度又太高。因此为了解决减少训练样本规模不同造成的影响,同时还能比较高效地进行测试集的评估。自助法就是很好的解决方案。
boostrap抽样
9.2.2 随机森林(Random Forest,RF)(Bagging+决策树)
随机森林就是建立很多决策树,组成一个决策树的“森林”,通过多棵树投票来进行决策。这种方法能够有效地提高对新样本的分类准确度。
随机森林在以决策树为基学习器构建Bagging集成(样本的随机选取)的基础上,进一步在决策树的训练过程中引入随机属性选择。具体来说,传统决策树在选择划分属性时是在当前节点的属性集合(假设有d个属性)中选择一个最优属性;而在RF随机森林中,对基决策树的每个节点,先从该节点的属性集合中随机选择一个包含K个属性的子集,然后在从这个子集中选择一个最优属性用于划分。K=d就是传统决策树,K=1则是随机选取一个属性用于划分,一般情况。
随机森林算法流程
1、对样本数据进行有放回的抽样,得到多个样本集。具体来讲就是每次从原来的N个训练样本中有放回地随机抽取N个样本(包括可能重复样本)。
2、从候选的特征中随机抽取m个特征,作为当前节点下决策的备选特征,从这些特征中选择最好地划分训练样本的特征。用每个样本集作为训练样本构造决策树。单个决策树在产生样本集和确定特征后,使用CART算法计算,不剪枝。
3、得到所需数目的决策树后,随机森林方法对这些树的输出进行投票,以得票最多的类作为随机森林的决策。
说明:
(1) 随机森林的方法即对训练样本进行了采样,又对特征进行了采样,充分保证了所构建的每个树之间的独立性,使得投票结果更准确。
(2)随机森林的随机性体现在每棵树的训练样本是随机的,树中每个节点的分裂属性也是随机选择的。有了这2个随机因素,即使每棵决策树没有进行剪枝,随机森林也不会产生过拟合的现象。
随机森林中有两个可控制参数:
-
森林中树的数量(一般选取值较大)
-
抽取的属性值m的大小。
随机森林的优点
随机森林简单、容易实现、计算开销小,被誉为“代表集成学习计数水平的方法”。可以看出随机森林只是对Bagging做了很小的改动。Bagging的多样性只是体现在样本的随机性,随机森林的基学习器的多样性不仅来自于样本的随机性,还来自于属性的随机性。随机森林随着学习器数目的增加,随机森林通常会收敛到更低的泛化误差。
(1)分类结果更加准确
(2)可以处理高维度的属性,并且不用做特征选择
(3)即使有很大部分数据遗失,仍可以维持高准确度**
(4)训练效率优于Bagging
(5)随机性只需要考虑一个属性子集,Bagging需要考察所有属性。
(6)容易实现并行化计算
(7)在训练过程中,能够检测到属性之间的相互影响
随机森林的缺点
(1)随机森林在解决回归问题时,并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续的输出。当进行回归时,随机森林不能够做出超越训练集数据范围的预测,这可能导致在某些特定噪声的数据进行建模时出现过度拟合。(PS:随机森林已经被证明在某些噪音较大的分类或者回归问题上回过拟合)。
(2)对于小数据或者低维数据(特征较少的数据),可能不能产生很好的分类。(处理高维数据,处理特征遗失数据,处理不平衡数据是随机森林的长处)。
(3)由于随机抽样,模型的可解释性较差。
9.3 Stacking
9.3.1 Stacking原理讲解
先训练多个模型(在每一个模型的训练中用到k-交叉验证),再用多个模型预测的结果作为组合模型(新模型)的输入,在训练模型,得到最终预测输入。实际上,常常使用LR作为最终的组合模型。
以上图讲解stacking的过程:
对于一个数据集,其Traindata有10000个,Testdata有2500个.在10000个Traindata数据中,使用5-折交叉验证,train_data:test_data=4:1.。得到五个model1,提取5个输出结果(2000*5)合并为10000个数据,记作A1。
同时,对原始2500个Testdata,使用这5个model1进行预测,得到5组输出结果(2500*5),平均得到2500个数据,记作B1。
同样的,使用其他模型,得到多组A2,A3,A4,A5.和B2,B3,B4,B5。
在最终的融合模型中,采用将A…作为Train,B作为Test,得到最终的预测输出结果。
在维度上,对应到初始2500个testdata的预测输出值。
完整的过程:
9.3.2 Stacking特点
优点:
- 模型的可扩展性高
- 数学理论较少,便于理解
- 充分利用训练数据
不足:
- 模型计算复杂
- 在交叉验证阶段,模型的预测结果已经见到了其他数据的标签,容易出现数据泄露,过拟合。
9.3.4 Stacking的代码实现
参考:代码
10 最大期望算法(Expectation-Maximization,EM)
EM算法就是在概率模型中寻找参数极大似然估计或者最大后验概率估计的算法,其概率模型依赖于无法观测的隐性变量。主要有两个步骤:
1、计算期望,利用对隐性变量的最大估计值,计算其最大似然估计值。
2、最大化期望,通过在第一步计算的最大似然估计值来计算参数值,找到的参数估计值用来计算下一轮的第一步,构成循环。
10.1 EM算法
10.1.1 EM算法与“鸡生蛋蛋生鸡问题”
EM算法就是为了解决最大似然估计中更复杂的情况下的算法(比如出现了隐变量)。当我们知道了概率结果,就可以通过极大似然估计来估计概率分布的参数。但如果我们只知道了概率结果,但不知道该结果时由哪一个概率分布(隐变量Z)对应的,自然没法直接估计出参数。总结就是:
- 最大似然估计和EM算法都是根据实现结果求解概率分布的最佳参数θ;
- 但最大似然估计中知道每个结果对应哪个概率分布(我知道哪个概率分布实现了这个结果)
- 而EM算法面临的问题是:我不知道哪个概率分布实现了该结果。
因此出现了EM算法。
10.1.2 EM求解思想及算法流程
Y:观测变量数据(已知数据)
Z:非观测变量数据(隐变量)
完全数据:
P
(
Y
,
Z
∣
θ
)
P(Y,Z|\theta)
P(Y,Z∣θ)
不完全数据:
P
(
Y
∣
θ
)
P(Y|\theta)
P(Y∣θ)
如果隐变量Z已知,就可以通过极大似然估计求解参数。
算法思想如下:
1. 随机初始化参数
θ
\theta
θ
2.(E步)根据观测数据和当前的参数,计算未观测数据(隐变量Z)的条件概率分布期望。
3.(M步)经过上一步得到Z之后,根据极大似然估计,计算最优的
θ
i
\theta^i
θi
4.反复重复2,3,直到收敛。
算法流程:
迭代停止的条件:
∣
∣
θ
(
i
+
1
)
−
θ
(
i
)
∣
∣
<
ε
1
o
r
∣
∣
Q
(
θ
(
i
+
1
)
−
Q
(
θ
(
i
)
)
)
∣
∣
<
ε
1
||\theta^{(i+1)}-\theta^{(i)}||<\varepsilon_1\ \ \ \ or \ \\ ||Q(\theta^{(i+1)}-Q(\theta^{(i)}))||<\varepsilon_1
∣∣θ(i+1)−θ(i)∣∣<ε1 or ∣∣Q(θ(i+1)−Q(θ(i)))∣∣<ε1
10.1.3 EM算法的导出 (为什么可以实现极大似然估计)
EM算法是如何近似实现对观测数据的极大似然估计?
通过极大化不完全数据Y关于参数
θ
\theta
θ的似然函数:
在隐变量给出之后,就可以通过逐步迭代了来优化极大似然估计参数
θ
\theta
θ,在每一步迭代中,我们希望:
L
(
θ
)
>
L
(
θ
i
)
L(\theta)>L(\theta^{i})
L(θ)>L(θi)
两者差为:
根据Jason不等式有:
令:
则有:
则选择:
逐步得到:
由此说明,通过期望最大可以近似求解最优参数。
10.1.5 EM在非监督学习的应用
生成模型:根据数据学习联合分布 P ( X , Y ) P(X,Y) P(X,Y),在结合先验概率。计算出后验概率。
在非监督数据中,可以认为X就是观测数据,Y就是非观测数据(无标签),非监督的训练数据认为是由联合分布产生的数据。EM的特点就是,即使有未观测数据(无标签),依然可以参数估计。
10.2 EM算法的收敛
疑问:
- EM得到参数估计序列是否收敛?
- 收敛的话,是否会陷入区域最优?
收敛定理1:
收敛定理2:
10.3 高斯混合模型(Gaussian mixture model, GMM)(EM的重要应用)
EM算法的一个重要应用是高斯混合模型的参数估计。高斯混合模型应用广泛,在许多情况下,EM算法是学习高斯混合模型(Gaussian misture model)的有效方法
10.3.1 高斯混合模型介绍
(高斯分布就正态分布,也叫常态分布)
高斯分布混合模型概括起来就是有多个高斯模型加权后的线性组合模型
10.3.2 高斯混合模型参数估计的EM算法
(看的头大,不想总结了,晚上找一篇总结好的吧)
这篇就很不错,来自:高斯混合模型详解
10.4 EM算法的推广
EM算法还可以解释为F函数(F function)的极大-极大算法(maximizationmaximization algorithm),基于这个解释有若干变形与推广,如广义期望极大(generalized expectation maximization,GEM)算法。下面予以介绍
10.4.1 F函数的极大-极小算法
头大,有时间再看
10.4.2 GEM算法
头大,有时间再看
(终于会加分割线了,yes!!!)
11 隐马尔科夫模型(HMM)
11.1 隐马尔科夫模型的基本概念
11.1.1 隐马尔科夫模型的定义
1、隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。隐藏的马尔可夫链随机生成的状态的序列,称为状态序列(state sequence);每个状态生成一个观测,而由此产生的观测的随机序列,称为观测序列
(observation sequence)。序列的每一个位置又可以看作是一个时刻。
更多推荐
所有评论(0)