结构风险最小化
结构风险最小化(structural risk minimization,SPM)是为了防止过拟合而提出来的策略。结构风险最小化等价于正则化(regularization)。结构风险在经验风险上加上表示模型复杂度的正则项(regularizer)或者罚项(penalty term)。在假设空间、损失函数以及训练数据集确定的情况下,结构风险的定义为:
正则化
如果我们没有足够的数据集(训练集)去约束这个变量过多的模型,那么就会发生过拟合。
正则化中我们将保留所有的特征变量,但是会减小特征变量的数量级(参数数值的大小θ(j))。
这个方法非常有效,当我们有很多特征变量时,其中每一个变量都能对预测产生一点影响。正如我们在房价预测的例子中看到的那样,我们可以有很多特征变量,其中每一个变量都是有用的,因此我们不希望把它们删掉,这就导致了正则化概念的发生。
正则化(regularization)是结构风险最小化策略的实现,是在经验风险上加一个正则化项(regularizer)或罚项(penalty term)。正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化值就越大。比如,正则化项可以是模型参数向量的范数。
正则化一般具有如下形式:
其中,第一项是经验风险,第二项是正则化项,λ是调整经验风险和正则化间的系数,称为正则化系数。
正则化项可以取不同的形式。例如,回归问题中,损失函数是平方损失,正则化项可以是参数向量的L2范数:
这里,||w||2表示参数向量w的L2范数,L2范数为向量w中各个元素的平方和。
正则化项也可以是参数向量的L1范数:
这里, ||w||1表示参数向量w的L1范数,L1范数为数向量w中各个元素的绝对值之和。
第1项的经验风险较小的模型可能较复杂(有多个非零参数),这时第2项的模型复杂度会较大。正则化的作用是选择经验风险与模型复杂度同时较小的模型。
正则化符合奥卡姆剃刀(Occam's razor)原理。奥卡姆剃刀原理应用于模型选择时变为以下想法:在所有可能选择的模型中,能够很好地解释已知数据并且十分简单才是最好的模型,也就是应该选择的模型。从贝叶斯估计的角度来看,正则化项对应于模型的先验概率。可以假设复杂的模型有较小的先验概率,简单的模型有较大的先验概率。
线性回归
线性回归是属于机器学习里面的监督学习,与分类问题不同的是,在回归问题中,其目标是通过对训练样本的学习,得到从样本特征到样本标签直接的映射,其中,在回归问题中,样本的标签是连续值。线性回归是一类重要的回归问题。在线性回归中,目标值与特征直接存在线性关系。
逻辑斯蒂回归
逻辑回归是用来做分类算法的,大家都熟悉线性回归,一般形式是Y=aX+b,y的取值范围是[-∞, +∞],有这么多取值,怎么进行分类呢?不用担心,伟大的数学家已经为我们找到了一个方法。
也就是把Y的结果带入一个非线性变换的Sigmoid函数中,即可得到[0,1]之间取值范围的数S,S可以把它看成是一个概率值,如果我们设置概率阈值为0.5,那么S大于0.5可以看成是正样本,小于0.5看成是负样本,就可以进行分类了。
Sigmoid与 SoftMax 函数
Sigmoid函数公式如下:
函数中t无论取什么值,其结果都在[0,1]的区间内,回想一下,一个分类问题就有两种答案,一种是“是”,一种是“否”,那0对应着“否”,1对应着“是”,那又有人问了,你这不是[0,1]的区间吗,怎么会只有0和1呢?这个问题问得好,我们假设分类的阈值是0.5,那么超过0.5的归为1分类,低于0.5的归为0分类,阈值是可以自己设定的。
好了,接下来我们把aX+b带入t中就得到了我们的逻辑回归的一般模型方程:
结果P也可以理解为概率,换句话说概率大于0.5的属于1分类,概率小于0.5的属于0分类,这就达到了分类的目的。
SoftMax函数是用于多类分类问题的激活函数,在多类分类问题中,超过两个类标签则需要类成员关系。对于长度为K KK的任意实向量,Softmax函数可以将其压缩为长度为K KK,值在[ 0 , 1 ] [0,1][0,1]范围内,并且向量中元素的总和为1的实向量。
Softmax函数与正常的max函数不同:max函数仅输出最大值,但Softmax函数确保较小的值具有较小的概率,并且不会直接丢弃。我们可以认为它是arg max \argmaxargmax函数的概率版本或“soft”版本。Softmax函数的分母结合了原始输出值的所有因子,这意味着Softmax函数获得的各种概率彼此相关。
Softmax激活函数的特点:
在零点不可微。
负输入的梯度为零,这意味着对于该区域的激活,权重不会在反向传播期间更新,因此会产生永不激活的死亡神经元。
决策树
决策树(decision tree):是一种基本的分类与回归方法,此处主要讨论分类的决策树。
在分类问题中,表示基于特征对实例进行分类的过程,可以认为是if-then的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。
决策树通常有三个步骤:特征选择、决策树的生成、决策树的修剪。
用决策树分类:从根节点开始,对实例的某一特征进行测试,根据测试结果将实例分配到其子节点,此时每个子节点对应着该特征的一个取值,如此递归的对实例进行测试并分配,直到到达叶子节点,最后将实例分到叶节点的类中。
决策树的构造
决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得各个子数据集有一个最好的分类的过程。这一过程对应着对特征空间的划分,也对应着决策树的构建。
开始:构建根节点,将所有训练数据都放在根节点,选择一个最优特征,按着这一特征将训练数据集分割成子集,使得各个子集有一个在当前条件下最好的分类。
如果这些子集已经能够被基本正确分类,那么构建叶节点,并将这些子集分到所对应的叶节点去。
如果还有子集不能够被正确的分类,那么就对这些子集选择新的最优特征,继续对其进行分割,构建相应的节点,如此递归进行,直至所有训练数据子集被基本正确的分类,或者没有合适的特征为止。
每个子集都被分到叶节点上,即都有了明确的类,这样就生成了一颗决策树。
决策树的特点
优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。
缺点:可能会产生过度匹配的问题(即过拟合)
适用数据类型:数值型和标称型
使用决策树做预测需要以下过程:
收集数据:可以使用任何方法。比如想构建一个相亲系统,我们可以从媒婆那里,或者通过参访相亲对象获取数据。根据他们考虑的因素和最终的选择结果,就可以得到一些供我们利用的数据了。
准备数据:收集完的数据,我们要进行整理,将这些所有收集的信息按照一定规则整理出来,并排版,方便我们进行后续处理。
分析数据:可以使用任何方法,决策树构造完成之后,我们可以检查决策树图形是否符合预期。
训练算法:这个过程也就是构造决策树,同样也可以说是决策树学习,就是构造一个决策树的数据结构。
测试算法:使用经验树计算错误率。当错误率达到了可接收范围,这个决策树就可以投放使用了。
使用算法:此步骤可以使用适用于任何监督学习算法,而使用决策树可以更好地理解数据的内在含义。
信息熵 条件熵 信息增益
信息增益=信息熵—条件熵
信息熵
其中代表随机事件为的概率,下面来逐步介绍信息熵的公式来源!
信息量与事件x发生的概率成负相关,,因为,一个具体事件的信息量应该是随着其发生概率而递减的,且不能为负。
概率越小信息量越大。
信息量度量的是一个具体事件发生了所带来的信息,而熵则是在结果出来之前对可能产生的信息量的期望——
考虑该随机变量的所有可能取值,即所有可能发生事件所带来的信息量的期望。即信息熵
事件越复杂,信息熵越大
信息熵还可以作为一个系统复杂程度的度量,如果系统越复杂,
出现不同情况的种类越多,那么他的信息熵是比较大的。如果一个系统越简单,出现情况种类很少
(极端情况为1种情况,那么对应概率为1,那么对应的信息熵为0),此时的信息熵较小。
条件熵
条件熵是另一个变量Y熵对X(条件)的期望。
其实条件熵意思是按一个新的变量的每个值对原变量进行分类,比如上面这个题把嫁与不嫁按帅,不帅分成了俩类。
然后在每一个小类里面,都计算一个小熵,然后每一个小熵乘以各个类别的概率,然后求和。
我们用另一个变量对原变量分类后,原变量的不确定性就会减小了,因为新增了Y的信息,可以感受一下。不确定程度减少了多少就是信息的增益。
信息增益
信息增益代表了在一个条件下,信息复杂度(不确定性)减少的程度。
那么我们现在也很好理解了,在决策树算法中,我们的关键就是每次选择一个特征,特征有多个,那么到底按照什么标准来选择哪一个特征。
这个问题就可以用信息增益来度量。如果选择一个特征后,信息增益最大(信息不确定性减少的程度最大),那么我们就选取这个特征。
通过计算各个特征的信息增益发现,身高的信息增益最大,也就是:身高这个特征对于我们广大女生同学来说,决定嫁不嫁给自己的男朋友是很重要的。那么我就可以说,孟非哥哥,我想知道男嘉宾的一个特征是身高特征。因为它在这些特征中,身高对于我挑夫君是最重要的,信息增益是最大的,知道了这个特征,嫁与不嫁的不确定度减少的是最多的。
线性判别分析 LDA
LDA属于机器学习中的监督学习算法,常用来做特征提取、数据降维和任务分类。LDA算法与PCA算法都是常用的降维技术。两者最大的区别在于:LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的;而PCA是不考虑样本类别输出的无监督降维技术。LDA的思想可以用一句话概括:“投影后类内方差最小,类间方差最大”(即我们要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。)
概率近似正确 PAC
PAC学习理论不关心假设选择算法,他关心的是能否从假设空间 H 中学习一个好的假设 h 。看到 能否 二字了没?此理论不关心怎样在假设空间中寻找好的假设,只关心能不能找得到。现在我们在来看一下什么叫“好假设”?只要满足两个条件(PAC辨识条件)即可:
近似正确:泛化误差 E(h) 足够小
E(h) 越小越好,最好泛化误差能等于0,但一般是不可能的。那我们就把 E(h) 限定在一个很小的数 η之内,即只要假设 h 满足 E(h) < η ,我们就认为 h 是正确的。
可能正确
不指望选择的假设 h 百分之百是近似正确的(按上段所述,即 E(h) < η ),只要 很可能 是近似正确的就可以,即我们给定一个值 μ ,假设 h 满足 P(h近似正确)>=1-μ。
综上两点,就得到了PAC(可能近似正确,probably approximate correct)可学习的定义。简单的讲就是模型在短时间内利用少量的(多项式级别)样本能够找到一个假设 h ,使其满足 P(E(h) < η) >=1-μ,其中0<η,μ<1。
自适应提升AdaBoost
Adaptive Boosting(AdaBoost)是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个最强的最终分类器(强分类器)。
Boosting方法要解答的两个关键问题:
一是在训练过程中如何改变训练样本的权重或者概率分布;
二是如何将多个弱分类器组合成一个强分类器。
AdaBoost的做法是:一是提高前一轮被弱分类器分类错误的样本的权重,而降低分类正确的样本的权重;而是对多个弱分类器进行线性组合,提高分类效果好的弱分类器的权重,降低分类误差率高的弱分类器的权重。
AdaBoost的两个权重
学习器的权重
样本的权重
AdaBoost思想
刚开始有一份等权的数据,训练一个模型,这个模型会有一个错误率,根据这个错误率去求一个权重,就可以给这个学习器一个权重(学习器的权重),上个学习器分错的样本,需要调整权重,错的升高权重,对的降低权重(样本的权重)
3.AdaBoost思想的优缺点
优点:
• 可以使用各种回归分类模型来构建弱学习器,非常灵活
• Sklearn中对AdaBoost的实现是从带权学习视角出发的,思想朴素,易于理解
• 控制迭代次数可以一定程度防止发生过拟合
缺点:
• 对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终预测准确性。
4.AdaBoost小结
提升树
• AdaBoost思想结合决策树的基学习器,就得到提升树模型。提升树做分类时,基学习器选CART分类树;回归时选CART回归树
两个视角
• 带权学习视角、前向分布学习视角
前向分步学习的说明
• 在前向分步学习视角下,当提升树的损失函数是平方损失和指数损失时,优化是简单的,但对一般损失函数而言优化难度大,即没有通用的求解方案
• 因此2001年,Friedman提出了一个通用方案——梯度提升,起名为GBDT