损失函数

GBDT与XGBOOST

情到浓时终转凉″ 提交于 2020-01-25 19:56:59
Boosting方法实际上是采用加法模型与前向分布算法。在上一篇提到的Adaboost算法也可以用加法模型和前向分布算法来表示。以决策树为基学习器的提升方法称为提升树(Boosting Tree)。对分类问题决策树是CART分类树,对回归问题决策树是CART回归树。 1、前向分布算法   引入加法模型      在给定了训练数据和损失函数L(y,f(x))L(y,f(x)) 的条件下,可以通过损失函数最小化来学习加法模型      然而对于这个问题是个很复杂的优化问题,而且要训练的参数非常的多,前向分布算法的提出就是为了解决模型的优化问题,其核心思想是因为加法模型是由多各模型相加在一起的,而且在Boosting中模型之间又是有先后顺序的,因此可以在执行每一步加法的时候对模型进行优化,那么每一步只需要学习一个模型和一个参数,通过这种方式来逐步逼近全局最优,每一步优化的损失函数:      具体算法流程如下:   1)初始化f0(x)=0f0(x)=0;   2)第m次迭代时,极小化损失函数      3)更新模型,则$f_m (x)$:      4)得到最终的加法模型       Adaboost算法也可以用前向分布算法来描述,在这里输入的数据集是带有权重分布的数据集,损失函数是指数损失函数。 2、GBDT算法   GBDT是梯度提升决策树(Gradient Boosting

1. 2 监督学习

雨燕双飞 提交于 2020-01-23 05:15:34
个人随感,不可轻信,如有意见,欢迎指点。 统计学习包括监督学习、非监督学习、半监督学习及强化学习。 1.2.1 监督学习 监督学习的任务是学习一个模型,使模型能够对任意给定的输入,对其相应的输出做出一个好的预测,计算机的基本操作就是给定一个输入,产生一个输出。 1.2.1 基本概念: 1、 输出空间、特征空间与输出空间 在监督学习中,将输入与输出所有可能取值的集合分别称为输入空间与输出空间,输入与输出空间可以是有限元素的集合, 也可以是整个欧式空间,输入空间与输出空间可以是同一个空间,也可以是不同的空间,但通常输出空间远远小于输入空间。 每个具体的输入是一个实例(instance),通常由特征向量(feature vector)表示, 这时,所有的特征向量存在的空间称为特征空间(feature space)。特征空间的每一维对应于一个特征。 在监督学习过程中,将输入与输出看做是定义在输入(特征)空间与输出空间上的随机变量的取值,输入、输出变量用大写字母表示,习惯上输入变量写作 X,输出变量写作 Y, 变量可以是标量或向量,都用相同类型字母表示,输入实例 x 的特征向量记作: x = (x^(1),^, x ^(2)^, …… x^(n)^ ) ^T^ 输入空间可以看做由 n 维特征构成的空间,如输入有两个特征组成,那么输入空间就可以看成 由 x 和 y 轴构成的二维平面

机器学习损失函数总结——SVM、朴素贝叶斯、HMM、AdaBoost、EM

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-23 03:46:09
损失函数总结(适用算法) 1. 对数损失函数 (朴素贝叶斯,EM,HMM) L(Y , P(Y | X)) = -log P(Y | X) 2. 平方损失函数(最小二乘法) L(y , f(x)) = 〖(y – f(x))〗^2 3. 指数损失函数(AdaBoost) L(y , f(x)) = exp[-yf(x)] 4. 合页损失函数(svm) L(y(wx+b)) = [1-y(wx+b)] + [z] + = z if z>0 else 0 5. 0-1损失函数 L(y , f(x)) = 1 if y ≠f(x) else y=f(x) 6. 交叉熵损失函数 L(y ̂,y)=-(ylog(y ̂ )+(1-y)log⁡(1-y ̂ )) 来源: CSDN 作者: 不会写代码的菜鸡程序猿 链接: https://blog.csdn.net/m0_38022672/article/details/103914839

Keras实例:自定义损失函数/指标函数

随声附和 提交于 2020-01-19 12:11:48
在训练模型的时候,Keras提供了许多损失函数供我们使用,但是即便如此,我们也会有遇到需要用自己的损失函数的情况,这样我们就要自定义一个损失函数。比如我现在需要定义一个损失函数,类似于relu函数,低于threshold的loss为0,大于threshold的loss就是他们之间的差。注意我们在定义损失函数的时候,必须可以求导。任何损失函数必须有y_true, y_pred两个参数,他们的类型为tensor。 def relu_loss ( y_true , y_pred , threshold = 1 ) : if not K . is_tensor ( y_pred ) : y_pred = K . constant ( y_pred ) y_true = K . cast ( y_true , y_pred . dtype ) return K . sum ( K . cast ( K . greater ( K . abs ( y_pred - y_true ) , threshold ) , K . floatx ( ) ) * K . abs ( y_pred - y_true ) ) 在定义完之后,我们就可以通过名字把损失函数和指标函数给模型了。 model . compile ( optimizer = 'rmsprop' , loss = relu_loss ,

损失函数

左心房为你撑大大i 提交于 2020-01-17 11:41:24
其中y为标签,(a=σ(Wx+b))为神经元实际输出。 1. 平方损失函数 一般回归问题会使用此损失,离群点对他的效果影响较大。 $C=\frac{1}{2}(a-y)^2$ 也就是说,当神经元的实际输出与我们的期望输出差距越大,代价就越高。对应的对各个参数的导数如下,可以发现我其中都有σ′(a)这一项。 $C=\frac{\partial{C}}{\partial{W}}(a-y)σ′(a)x^T$ $C=\frac{\partial{C}}{\partial{W}}(a-y)σ′(a)$ 2.交叉熵损失函数 分类问题因为输出的是概率,故而一般使用的是此损失,当然他可以解决梯度消失。 交叉熵函数的形式是−[ylna+(1−y)ln(1−a)]而不是 −[alny+(1−a)ln(1−y)],为什么? 因为当期望输出的y=0时,lny没有意义;当期望y=1时,ln(1-y)没有意义。而因为a是sigmoid函数的实际输出,永远不会等于0或1,只会无限接近于0或者1,因此不存在这个问题。 当真实输出a与期望输出y接近的时候,代价函数接近于0。 $H(y)=-\sum\limits_{i=1}y_{i}log(y_{i})$ 而在实际操作中,我们并不知道y的分布,只能对y的分布做一个估计,也就是算得的a值, 这样我们就能够得到用a来表示y的交叉熵. $H(y,a)=-\sum

损失函数

北城余情 提交于 2020-01-17 08:56:59
loss function 损失函数 loss function:是针对于单个样本而言的,是指一个样本的误差。 代价函数 cost function:是定义在整个训练数据集上的,是所有单个样本和损失的平均, 目标函数 object function:是指最中要优化的函数,一般而言是经验风险+结构风险(也就是代价函数+正则化项) 其中下面的解释 y y y 代表真实的值, f ( x ) f(x) f ( x ) 代表模型得出的值 loss function (1),0-1损失函数 L ( y , f ( x ) ) = { 1 y = f(x) 0 y != f(x) L(y,f(x))=\begin{cases} 1& \text{y = f(x)}\\ 0& \text{y != f(x)} \end{cases} L ( y , f ( x ) ) = { 1 0 ​ y = f(x) y != f(x) ​ (2),平方损失函数 L ( y , f ( x ) ) = [ y − f ( x ) ] 2 L(y,f(x)) = [y-f(x)]^2 L ( y , f ( x ) ) = [ y − f ( x ) ] 2 (3),绝对值损失函数 L ( y , f ( x ) ) = ∣ y − f ( x ) ∣ L(y,f(x)) = |y - f(x)| L ( y

@。Tensorflow,纯新手入门笔记->优化器

夙愿已清 提交于 2020-01-16 21:38:34
第九节:Tensorflow优化器 高中数学学过,函数在一阶导数为零的地方达到其最大值和最小值。梯度下降算法基于相同的原理,即调整系数(权重和偏置)使损失函数的梯度下降。 (就是使用优化器,调整权重W,偏置B,使得损失函数到达一个损失最少的点) 有三种梯度下降: 1.Vanilla 梯度下降 :在 Vanilla 梯度下降(也称作批梯度下降)中,在每个循环中计算整个训练集的损失函数的梯度。该方法可能很慢并且难以处理非常大的数据集。该方法能保证收敛到凸损失函数的全局最小值,但对于非凸损失函数可能会稳定在局部极小值处。 **2.随机梯度下降:**在随机梯度下降中,一次提供一个训练样本用于更新权重和偏置,从而使损失函数的梯度减小,然后再转向下一个训练样本。整个过程重复了若干个循环。由于每次更新一次,所以它比 Vanilla 快,但由于频繁更新,所以损失函数值的方差会比较大。 3.小批量梯度下降 :该方法结合了前两者的优点,利用一批训练样本来更新参数。 亮点: 1.Vanilla 梯度下降:很慢,难以处理非常大的数据集。能保证收敛到凸损失函数的全局最小值,但对于非凸损失函数可能会稳定在局部极小值处。 2.随机梯度下降:比第一个快,但是由于频繁更新,所以损失函数值得方差会比较大。 3.批量梯度下降,快!准!狠 优化器的使用: 第一个优化器: GradientDescentOptimizer

@。Tensorflow,纯新手入门笔记->回归算法、损失函数

吃可爱长大的小学妹 提交于 2020-01-16 09:24:44
第七节: 机器学习中第一个算法:回归算法 亮点: 1.因变量和自变量之间的关系实现数据的预测。 2.不同自变量对因变量影响的强度。(不就是k嘛) for example :对房价估计时,需要确定房屋面积(自变量)与其价格(因变量)之间的关系,可以利用这一关系来预测给定面积的房屋的价格。 可以有多个影响因变量的自变量。 一、线性回归 其中,X=(x1,​x2,…,xn) 为 n 个输入变量,W=(w1,w2,…,wn) 为线性系数,b 是偏置项。目标是找到系数 W 的最佳估计,使得预测值 Y 的误差最小。 亮点: 1.W很重要,要W最佳,使得误差最小。 2.最小二乘法,可以使得W最佳。即使预测值 (Yhat) 与观测值 (Y) 之间的差的平方和最小。 3.还有个b偏置 因此,这里尽量最小化损失函数: 根据输入变量 X 的数量和类型,可划分出多种线性回归类型: 简单线性回归(一个输入变量,一个输出变量),多元线性回归(多个输入变量,一个输出变量),多变量线性回归(多个输入变量,多个输出变量)。 二、逻辑回归 :用来确定一个事件的概率。通常来说,事件可被表示为类别因变量。事件的概率用 logit 函数(Sigmoid 函数)表示: 现在的目标是估计权重 W=(w1,w2,…,wn) 和偏置项 b。在逻辑回归中,使用最大似然估计量或随机梯度下降来估计系数。损失函数通常被定义为交叉熵项:

交叉熵损失函数

假装没事ソ 提交于 2020-01-16 08:26:18
在理解交叉熵损失函数之前,有必要先来说一下信息熵这个概念 信息熵 信息熵可以理解为信息杂乱程度的量化描述:信息越多,概率越均等则信息熵就越大;反之,信息越单一,概率越偏向其中某一个信息,那么熵值就越小 公式如下: H ( X ) = − ∑ i = 1 n P ( x ( i ) ) l o g P ( x ( i ) ) H(X)=-\sum _ {i=1}^n P(x^{(i)}) logP(x^{(i)}) H ( X ) = − i = 1 ∑ n ​ P ( x ( i ) ) l o g P ( x ( i ) ) 其中, − l o g P ( x ( i ) ) -logP(x^{(i)}) − l o g P ( x ( i ) ) 表示一个信息的信息量,概率越小,信息量就越大,这很好理解,比如“太阳从西边出来了”,这几乎不可能发生,如果发生了,那对于我们来说其所含的信息量是巨大的 交叉熵损失函数 先给出公式: L ( y ^ , y ) = − [ y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) ] L(\hat y,y)=-[ylog\hat y+(1-y)log(1-\hat y)] L ( y ^ ​ , y ) = − [ y l o g y ^ ​ + ( 1 − y ) l o g ( 1 − y ^ ​ ) ]

梯度提升与梯度下降

随声附和 提交于 2020-01-15 00:00:55
梯度提升与梯度下降 梯度是什么 梯度是谁的 梯度下降 梯度提升 总结 梯度是什么 “梯度提升”与“梯度下降”中的“梯度”是什么?梯度是损失函数对需要求解的模型参数的导数。梯度方向是参数导数中绝对值最大的方向,因此梯度方向有两个,一个是梯度最大方向,另一个是梯度最小方向。 梯度是谁的 “梯度”是目标函数在当前点的梯度(不是参数的梯度),因此有了目标函数、样本点,才会有梯度。 梯度下降 在参数空间中,梯度下降是指目标函数在当前点的取值下降(最小化目标函数),参数自身沿着负梯度的方向下降。因此梯度下降,是目标函数对最优参数的搜索,其变量是参数。 梯度下降通常用来求解这种无约束最优化问题,它是一种迭代方法:初选取参数初值(还包括算法终止距离参数和学习率参数),不断迭代,更新参数的值,进行损失函数的最小化。 为什么梯度的负方向是函数局部下降最快的方向?下面开始证明。 假设迭代公式为: θ t = θ t − 1 + Δ θ \theta_{t}=\theta_{t-1}+\Delta \theta θ t ​ = θ t − 1 ​ + Δ θ ,将 L ( θ t ) L\left(\theta_{t}\right) L ( θ t ​ ) 在 θ t − 1 \theta_{t-1} θ t − 1 ​ 处进行泰勒展开: L ( θ t ) = L ( θ t − 1 + Δ θ ) ≈