
正文
惩罚函数python 惩罚函数法的基本思想
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
2019-03-02
集成学习: 构建并结合多个学习器来完成学习任务。
同质: 集成中只包含同种类型的个体学习器(基学习器);
异质: 集成中的个体学习器(组件学习器)由不同学习算法生成。
个体学习器的“准确性”和“多样性”很重要,且相互冲突。
分类: 个体学习器间存在强依赖关系,必须串行生成的序列化方法,eg,Boosting;个体学习器间不存在强依赖关系,可同时生成的并行化方法,eg,Bagging和随机森林。
工作机制: 先从初始训练集训练出一个基学习器1,根据基学习器误差率表现更新训练样本权重,使弱学习器1学习误差率高的训练样本权重变高,让这些点在弱学习器2中得到更多的重视,然后基于调整权重后的训练集训练学习器2,...重复进行,直至弱学习器数目达到指定的值T,最终将这T个基学习器进行加权结合。
Boosting族算法最著名的代表是AdaBoost,是“Adaptive Boosting(自适应增强)”的缩写。它的自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。
算法过程
优点:作为分类器时精度很高;在AdaBoost框架下,可使用各种回归分类模型来构建学习器;不易发生过拟合(会加入正则化项)。
缺点:对异常样本点敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性。
两者均是0/1误差的平滑近似:
梯度提升算法首先给定一个目标损失函数,它的定义域是所有可行的基函数集合,提升算法通过迭代的选择一个负梯度方向上的基函数来逐渐逼近局部最小值。
GB每一次建立模型 是在之前建立模型 损失函数的梯度下降方向。一般认为损失函数越小,性能越好,因此最好是使损失函数沿着梯度方向下降,模型得以不断改进提升性能。
GBDT是GB和DT的结合,是以决策树为基学习器的gb算法,此处的决策树是回归树。GBDT中的决策树深度一般不超过5,叶子结点数不超过10。GBDT核心在于: 每一棵树学得是之前所有树结论和的残差 ,这个残差就是一个加预测值后能得真实值的累加量。比如A的真实年龄是18岁,但第一棵树的预测年龄是12岁,差了6岁,即残差为6岁。那么在第二棵树里我们把A的年龄设为6岁去学习,如果第二棵树真的能把A分到6岁的叶子节点,那累加两棵树的结论就是A的真实年龄;如果第二棵树的结论是5岁,则A仍然存在1岁的残差,第三棵树里A的年龄就变成1岁,继续学习。
xgboost是在GBDT基本思路上改善而来,主要改变有
1) 在损失函数中加入防止过拟合的惩罚函数
T是叶子的个数,w是预测函数的参数,也就是决策树算法下叶子节点的权重值。可以控制γ和λ这两个超参数来调整正则化的惩罚力度。其实这里的惩罚函数也就定义了模型复杂度,比如γ越大,λ越大,复杂度越小越不易过拟合。
2) 用二阶泰勒展式将损失函数展开,同时用到了一阶和二阶导数
第t次的loss:
对上式做二阶泰勒展开:g为一阶导数,h为二阶导数
3)CART回归树中寻找最佳分割点的衡量标准是最小化均方差,xgboost 寻找分割点的标准是最大化 ,lamda,gama与正则化项相关
xgboost算法的步骤和GB基本相同,都是首先初始化为一个常数,gb是根据一阶导数ri,xgboost是根据一阶导数gi和二阶导数hi,迭代生成基学习器,相加更新学习器。
为得到泛化性能强的集成,集成中的个体学习器应尽可能相互独立,考虑使用相互有交叠的采样子集。
并行式集成学习的最著名代表,基于自助采样法,算法流程如下:
优点:训练一个Bagging集成与直接使用基学习算法训练一个学习器的复杂度同阶;与标准AdaBoost只适用于二分类任务不同,Bagging能不经修改的用于多分类、回归任务;初始训练集63.2%用于训练,36.8%用作验证集对泛化性能做“包外估计”。
但从偏差-方差分解角度看,Bagging主要关注降低方差。
随机森林是Bagging的一个扩展变体,在以决策树为基学习器构建Bagging集成的基础上,在决策树训练过程中引入了 随机属性选择 。即对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k(kd,d为所有属性个数)个属性的子集,然后从中选一个最优属性用于划分。若k=d,则为传统决策树;k=1,则随机选择一个属性划分。一般推荐 。
RF起始性能相对较差,但随着学习器数目的增加,会收敛到更低的泛化误差。另外RF的训练效率常优于Bagging,因为Bagging使用“确定型”决策树,选择划分属性时要对结点所有属性进行考察,而RF使用“随机型”决策树,只需考虑一个属性子集。
学习器结合可能会从三个方面带来好处:
1)统计方面:当多个假设达到同等性能时,可减小因误选单学习器导致泛化性能不佳的风险;
2)计算方面:降低陷入糟糕局部极小点的风险;
3)表示方面:扩大相应假设空间,学习更好的近似。
对数值型输出 ,最常见的结合策略是平均法。
简单平均:
(特殊的加权平均法,宜在个体学习器性能相近时使用)
加权平均法:
其中 是个体学习器 的权重,一般从训练数据中学习而得,通常要求 ,宜在个体学习器相差较大时使用。
对分类任务,学习器从类别标记集合中预测出一个标记,最常见的结合策略是投票法。
绝大多数投票法:
相对多数投票法:
预测为得票最多的标记,若同时有多个标记获得最高票,则从中随机选取一个。
加权投票法:
与加权平均法类似, 是 的权重,通常 。
个体学习器的输出类型:
类标记: 硬投票。 ,若 将样本x预测为类别 则取值为1,否则为0。
类概率: 软投票。 ,相当于对后验概率 的一个估计。
不同类型的 值不能混用;对一些能在预测出类别标记的同时产生分类置信度的学习器,其分类置信度可转化为类概率使用;分类置信度应规范化后使用;基于类概率进行结合优于直接基于类标记进行结合;若基学习器类型不同,不能直接比较类概率值,应先将其转化为类标记输出(eg类概率输出最大的设为1,其他为0)再投票。
当训练数据很多时,常使用通过另一个学习器来进行结合的“学习法”,代表算法Stacking
第一阶段获得各个模型对样本x1的预测标签值;第二阶段将各个模型的预测标签值作为一个新的特征(x1的真实标签值还是标签值),再用某个算法进行训练,获得一个融合模型,用这个融合模型进行测试集的预测。
周志华《机器学习》
相关问答
Q1: 每个数据科学人都应该知道的7种回归技术
介绍 线性回归和逻辑回归通常是人们在数据科学中学习的第一种算法。由于它们的受欢迎程度,许多分析师甚至认为它们是唯一的回归形式。哪儿些稍微有工作经验的人也会认为它们是所有回归分析形式的中最重要的。
事实是,有无数种形式的回归可以使用。每种形式的回归都有其自身的重要性和最适合应用的特定场景。在本文中,我会以简单的方式解释了数据科学中最常用的7种回归形式。通过这篇文章,我也希望人们能够对回归的广度有一个概念,而不是仅仅对他们遇到的每个问题应都用线性/逻辑回归,并希望他们能够使用这么多的回归技术!
如果您是数据科学的新手,并且正在寻找一个开始学习的地方,那么“ 数据科学 ”课程是一个很好的起点!它涵盖了Python,统计和预测建模的核心主题,它是你进入数据科学的第一步的完美方法。
什么是回归分析?
回归分析是预测建模技术的一种技术,它研究依赖(目标)和自变量(预测变量)之间的关系。该技术用于预测,时间序列建模和查找变量之间的因果关系。例如,通过回归可以最好地研究鲁莽驾驶与驾驶员发生道路交通事故数量之间的关系。
回归分析是建模和分析数据的重要工具。在这里,我们将曲线/直线线拟合到数据点,使得数据点距曲线或直线的距离之间的差异最小化。我将在接下来的章节中详细解释这一点。
为什么我们使用回归分析?
如上所述,回归分析是估计两个或更多变量之间的关系。让我们通过一个简单的例子来理解这一点:
比方说,你想根据当前的经济状况估算公司的销售增长率。您有最近的公司数据表明销售增长约为经济增长的2.5倍。利用这种洞察力,我们可以根据当前和过去的信息预测公司的未来销售情况。
使用回归分析有许多好处。如下:
它表明因变量和自变量之间的显着关系。 它表示多个自变量对一个因变量的影响强度。
回归分析还允许我们比较不同尺度上测量的变量的影响,例如价格变化的影响和促销活动的数量。这些优势有助于市场研究人员/数据分析师/数据科学家消除和评估用于构建预测模型的最佳变量集。
我们有多少种回归技术?
我们有各种各样的回归技术可用用于预测。这些技术主要由三个指标(自变量的数量,因变量的类型和回归线的形状)驱动。我们将在以下部分详细讨论它们。
对于创造性的,如果您觉得需要使用上述参数的组合,您甚至可以制作新的回归,以前人们没有使用过。但在开始之前,让我们了解最常用的回归:
1.线性回归
它是最广为人知的建模技术之一。线性回归通常是人们在学习预测建模时最先选择的几个方法之一。在该方法中,因变量是连续的,自变量可以是连续的或离散的,并且回归线的性质是线性的。
线性回归使用最佳拟合直线(也称为回归线)在因变量(Y)和一个或多个自变量(X)之间建立关系。
它由方程Y = a + b * X + e表示,其中a是截距,b是直线的斜率,e是误差项。该等式可以根据给定的预测变量预测目标变量的值。
简单线性回归和多元线性回归之间的区别在于,多元线性回归具有( 1)个独立变量,而简单线性回归只有1个独立变量。现在的问题是“我们如何获得最佳拟合线?”。
如何获得最佳拟合线(a和b的值)?
这项任务可以通过最小二乘法轻松完成。它是用于拟合回归线的最常用方法。它通过最小化每个数据点到直线的垂直偏差的平方和来计算观测数据的最佳拟合线。因为偏差首先要平方,所以当相加时,正值和负值之间不会抵消。
我们可以使用度量的R平方来评估模型性能 。
重点: 自变量和因变量之间必须存在线性关系 多元回归存在多重共线性,自相关,异方差等问题。 线性回归对异常值非常敏感。它可以极大地影响回归线并最终影响预测值。 多重共线性可以增加系数估计的方差,并使估计对模型中的微小变化非常敏感。结果是系数估计不稳定 在多个独立变量的情况下,我们可以选择正向选择,逆向淘汰和逐步方法来选择最重要的自变量。 2. 逻辑回归
逻辑回归方法用于查找事件成功的概率和失败的概率。当因变量本质上是二进制(0/1,真/假,是/否)时,我们应该使用逻辑回归。这里Y值的范围从0到1,它可以用下面的等式表示。
odds = p /(1-p)=事件发生概率/非事件发生概率 ln(赔率)= ln(p /(1-p)) logit(p)= ln(p /(1-p))= b0 + b1X1 + b2X2 + b3X3 .... + bkXk
以上,p是存在感兴趣特征的概率。这时候你应该要问一个问题就是“为什么我们要在等式中使用对数log?”。
由于我们在这里使用的是二项分布(因变量),我们需要选择最适合此分布的链接函数。而且,它是logit函数。在上面的等式中,选择此参数是为了以最大化观察样本值的可能性,而不是最小化平方误差的总和(如在普通回归中一样)。
重点: 它被广泛用于分类问题 逻辑回归不需要依赖因变量和自变量之间的线性关系。它可以处理各种类型的关系,因为它将非线性对数变换应用于预测的优势比 为避免过度拟合和欠拟合,我们应该包括所有重要的变量。确保这种做法的一个好方法是使用逐步方法来估计逻辑回归 它需要较大样本量,因为在样本量较小时,最大似然估计的效率低于普通的最小二乘法 自变量不应相互关联,即不具有多重共线性。但是,我们可以选择在分析和模型中包含分类变量的交互作用。 如果因变量的值是序数,那么它被称为序数逻辑回归 如果因变量是多类的,那么它被称为多元逻辑回归。 3.多项式回归
如果自变量的幂大于1,则回归方程是多项式回归方程。下面的等式表示多项式方程:
Y = A + B * X ^ 2
在这种回归技术中,最佳拟合线不是直线。它是一条与数据点吻合的曲线。
重点: 虽然可能存在拟合更高次多项式以获得更低误差的诱惑,但这可能会导致过度拟合。始终绘制关系图以查看是否匹配,并专注于确保曲线符合问题的本质。以下是绘图如何帮助的示例: 特别注意的是末端的曲线,看看这些形状和趋势是否有意义。较高的多项式最终会产生奇怪的结果。 4.逐步回归
当我们处理多个自变量时,会使用这种形式的回归。在这种技术中,自变量的选择是在自动过程的帮助下完成的,这个过程是不需要人为的去进行干预的。
通过观察R方、t检验和AIC指标等统计值来识别重要变量,可以实现这一壮举。逐步回归基本上适合回归模型,通过基于指定的标准一次一个地添加/删除协变量。下面列出了一些最常用的逐步回归方法:
标准逐步回归做两件事。它根据每个步骤的需要添加和删除预测变量。 正向选择从模型中最重要的预测变量开始,并为每个步骤添加变量。 向后消除从模型中的所有预测变量开始,并删除每个步骤的最不重要的变量。
该建模技术的目的是以最少的预测变量来最大化预测能力。它是处理数据集更高维度的方法之一。
5.岭回归
岭回归是一种在数据存在多重共线性(自变量高度相关)时使用的技术。在多重共线性中,即使最小二乘估计(OLS)是无偏的,但它们的方差也很大,这使得观测值偏离真实值。通过在回归估计中增加一定程度的偏差,岭回归可以减少标准误差。
上面,我们看到了线性回归的方程。还记得嘛?它可以表示为:
y = a + b * x
这个方程也有一个误差项。完整的等式变为:
y = a + b * x + e(误差项),[误差项是校正观测值和预测值之间预测误差所需的值] 表示多个自变量,= y = a + y = a + b1x1 + b2x2 + .... + e。
在线性方程中,预测误差可以分解为两个子分量。首先是由于偏差,第二是由于方差。由于这两个或两个组件中的任何一个,都可能发生预测错误。在这里,我们将讨论由于方差引起的错误。
岭回归通过收缩参数 λ(lambda)解决了多重共线性问题 。看下面的方程。
在这个方程中,我们有两个组成部分。第一个是最小二乘项,另一个是β2 (β平方)总和的λ,其中β是系数。这被添加到最小二乘项,以便缩小参数以具有非常低的方差。
重点: 该回归的假设与最小二乘回归相同,但不假设正态性 它会缩小系数的值,但不会达到零,这表明没有特征选择功能 这是一种正则化方法,并使用l2正则化。 6.Lasso回归
类似于岭回归,Lasso(最小绝对收缩和选择算子)也会对回归系数的绝对大小进行限制。此外,它还能够降低线性回归模型的可变性并提高其准确性。请看下面的方程:
Lasso回归与岭回归的不同之处在于,它在惩罚函数中使用绝对值而不是平方。这导致惩罚(或等效地约束估计值的绝对值的总和)值,从而导致一些参数估计值恰好为零。应用的惩罚越大,估计值就会缩小到绝对零值。这导致从给定的n个变量中进行变量选择。
重点: 该回归的假设与最小二乘回归相同,但不假设正态性 它将系数缩小到零(恰好为零),这肯定有助于特征选择 这是一种正则化方法并使用l1正则化 如果预测变量高度相关,则Lasso仅选取其中一个并将其他预测缩减为零 7.弹性网络回归
弹性网络回归是Lasso回归和岭回归技术的混合体。它使用L1和L2先验作为正则化器进行训练。当存在多个相关的特征时,弹性网络是很有用的。Lasso可能随机选择其中一种,而弹性网很可能同时选择两个。
在Lasso回归和岭回归之间进行权衡的一个实际优势是,它允许弹性网络在旋转下继承岭回归的一些稳定性。
重点: 在变量高度相关的情况下,它鼓励群体效应 所选变量的数量没有限制 它会受到双重收缩的影响 如何选择正确的回归模型?
当你只知道一两种技术时,生活通常是很简单的。我所知道的其中一个培训机构告诉他们的学生 - 如果结果是连续的 - 那就用线性回归。如果是二进制的 - 那就用逻辑回归!但是,我们可以使用的选项数量越多,选择正确的选项就越困难。回归模型也会发生类似的情况。
在多种类型的回归模型中,基于自变量和因变量的类型,数据中的维度以及数据的其他基本特征来选择最适合的回归方法是很重要的。以下是应该选择正确的回归模型的关键因素:
数据挖掘是构建预测模型的必然部分。在选择正确的模型之前,应该首先确定变量之间的相关系数和影响 为了比较不同模型的拟合优度,我们可以分析不同的指标,如参数的统计显著性,R方,调整后的R方,AIC指标,BIC指标和误差项。另一个是Mallow的Cp标准。这基本上通过将模型与所有可能的子模型(仔细选择它们)进行比较,来检查模型中可能存在的偏差。 交叉验证是评估用于预测的模型的最佳方式。在这里,可以将数据集分为两组(训练和验证)。观测值和预测值之间的简单均方差可以衡量预测的准确性。 如果你的数据集有多个混淆变量,则不应选择自动模型选择方法,因为你不会希望同时将它们放在模型中。 这也取决于你的目标。与具有高度统计意义的模型相比,功能较弱的模型更容易实现。 回归正则化方法(Lasso回归,岭回归和弹性网络回归)在数据集中各变量之间具有高维度和多重共线性的情况下运行良好。 结束语
到现在为止,我希望你已经对回归有所了解。考虑数据条件来应用这些回归技术。找出使用哪种技术的最佳技巧之一就是检查变量族,即离散变量还是连续变量。
在本文中,我讨论了7种类型的回归以及与每种技术相关的一些关键事实。作为这个行业的新人,我建议你学习这些技术,然后在你的模型中实现它们。
-以上就是作者推荐的七种数据科学人必知必会的七种回归模型,如果大家对这七种模型感兴趣,那就自己动手去实验一下吧,只知道理论是不够的,要多动手实验,才能真正的掌握这些模型。
7 Types of Regression Techniques you should know!
Q2: 谁能通俗简单的说下“人工智能”、“机器学习”、“数据挖掘”、“模式识别”这几个领域的联系和区别?
我的理解是这样的:
1.人工智能:给机器赋予人类的智能,让机器能够像人类那样独立思考。当然,目前的人工智能没有发展到很高级的程度,这种智能与人类的大脑相比还是处于非常幼稚的阶段,但目前我们可以让计算机掌握一定的知识,更加智能化的帮助我们实现简单或复杂的活动。
2.机器学习。通俗的说就是让机器自己去学习,然后通过学习到的知识来指导进一步的判断。举个最简单的例子,我们训练小狗狗接飞碟时,当小狗狗接到并送到主人手中时,主人会给一定的奖励,否则会有惩罚。于是狗狗就渐渐学会了接飞碟。同样的道理,我们用一堆的样本数据来让计算机进行运算,样本数据可以是有类标签的,并设计惩罚函数,通过不断的迭代,机器就学会了怎样进行分类,使得惩罚最小。然后用学习到的分类规则进行预测等活动。
3.数据挖掘。数据挖掘是一门交叉性很强的学科,可以用到机器学习算法以及传统统计的方法,最终的目的是要从数据中挖掘到为我所用的知识,从而指导人们的活动。所以我认为数据挖掘的重点在于应用,用何种算法并不是很重要,关键是能够满足实际应用背景。而机器学习则偏重于算法本身的设计。
4.模式识别。我觉得模式识别偏重于对信号、图像、语音、文字、指纹等非直观数据方面的处理,如语音识别,人脸识别等,通过提取出相关的特征,利用这些特征来进行搜寻我们想要找的目标。
比较喜欢这方面的东西,一点肤浅的认识,很高兴与你交流。
Q3: 如何用python实现Adaptive Lasso
sklearn.linear_model里有四个跟lasso有关惩罚函数python的函数惩罚函数python,分别是lasso,lassoCV,lassolars,lassolarsCV,其中lassoCV会根据交叉验证自动对惩罚项参数lambda寻优惩罚函数python,lassolarsCV则是利用了lars算法求解。
Q4: 交叉熵损失函数是什么?
平滑函数。
交叉熵损失函数,也称为对数损失或者logistic损失。当模型产生了预测值之后,将对类别的预测概率与真实值(由0或1组成)进行不比较,计算所产生的损失,然后基于此损失设置对数形式的惩罚项。
在神经网络中,所使用的Softmax函数是连续可导函数,这使得可以计算出损失函数相对于神经网络中每个权重的导数(在《机器学习数学基础》中有对此的完整推导过程和案例,这样就可以相应地调整模型的权重以最小化损失函数。
扩展资料:
注意事项:
当预测类别为二分类时,交叉熵损失函数的计算公式如下图,其中y是真实类别(值为0或1),p是预测类别的概率(值为0~1之间的小数)。
计算二分类的交叉熵损失函数的python代码如下图,其中esp是一个极小值,第五行代码clip的目的是保证预测概率的值在0~1之间,输出的损失值数组求和后,就是损失函数最后的返回值。
参考资料来源:百度百科-交叉熵
参考资料来源:百度百科-损失函数
惩罚函数python的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于惩罚函数法的基本思想、惩罚函数python的信息别忘了在本站进行查找喔。








