损失函数:用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。
经验风险:一个损失函数的函数
结构风险:可简单理解为经验风险(一种损失函数的函数)+λ正则化项。因此,模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子:
对于损失函数:
线性回归中的损失函数:平方损失函数,可以通过线性回归在假设样本是高斯分布的条件下推导得到.
逻辑回归中的损失函数:log损失函数,在逻辑回归的推导中,它假设样本服从伯努利分布(0-1分布),然后求得满足该分布的似然函数,接着取对数求极值等。而逻辑回归并没有求似然函数的极值,而是把极大化当做是一种思想,进而推导出它的经验风险函数为:最小化负的似然函数(即max F(y, f(x)) —-> min -F(y, f(x)))。
log损失函数形式:L(Y,P(Y|X))=−logP(Y|X),
这里,取对数是为了方便计算极大似然估计。损失函数L(Y, P(Y|X))表达的是样本X在分类Y的情况下,使概率P(Y|X)达到最大值(换言之,就是利用已知的样本分布,找到最有可能(即最大概率)导致这种分布的参数值;或者说什么样的参数才能使我们观测到目前这组数据的概率最大)。因为log函数是单调递增的,所以logP(Y|X)也会达到最大值,因此在前面加上负号之后,最大化P(Y|X)就等价于最小化L了。
逻辑回归的P(Y=y|x)表达式如下(为了将类别标签y统一为1和0,下面将表达式分开表示):
将它带入到上式,通过推导可以得到logistic的损失函数表达式,如下:
逻辑回归最后得到的目标式子如下:
上面是针对二分类而言的。这里需要解释一下:之所以有人认为逻辑回归是平方损失,是因为在使用梯度下降来求最优解的时候,它的迭代式子与平方损失求导后的式子非常相似,从而给人一种直观上的错觉。
这里有个PDF可以参考一下:Lecture 6: logistic regression.pdf.
最小二乘法是线性回归的一种,OLS将问题转化成了一个凸优化问题。在线性回归中,它假设样本和噪声都服从高斯分布(为什么假设成高斯分布呢?其实这里隐藏了一个小知识点,就是中心极限定理,可以参考【central limit theorem】),最后通过极大似然估计(MLE)可以推导出最小二乘式子。最小二乘的基本原则是:最优拟合直线应该是使各点到回归直线的距离和最小的直线,即平方和最小。换言之,OLS是基于距离的,而这个距离就是我们用的最多的欧几里得距离。为什么它会选择使用欧式距离作为误差度量呢(即Mean squared error, MSE),主要有以下几个原因:
平方损失(Square loss)的标准形式如下:
Y-f(X)
表示的是残差,整个式子表示的是
残差的平方和,而我们的目的就是最小化这个目标函数值(注:该式子未加入正则项),也就是最小化残差的平方和(residual sum of squares,RSS)。
而在实际应用中,通常会使用均方差(MSE)作为一项衡量指标,公式如下:
学过Adaboost算法的人都知道,它是前向分步加法算法的特例,是一个加和模型,损失函数就是指数函数。在Adaboost中,经过m此迭代之后,可以得到fm(x)fm(x):
Adaboost每次迭代时的目的是为了找到最小化下列式子时的参数αα 和G:
而指数损失函数(exp-loss)的标准形式如下
可以看出,Adaboost的目标式子就是指数损失,在给定n个样本的情况下,Adaboost的损失函数为:
关于Adaboost的推导,可以参考Wikipedia:AdaBoost或者《统计学习方法》P145.
在机器学习算法中,hinge损失函数和SVM是息息相关的。在线性支持向量机中,最优化问题可以等价于下列式子:
下面来对式子做个变形,令:
于是,原式就变成了:
如若取λ=12Cλ=12C,式子就可以表示成:
可以看出,该式子与下式非常相似:
前半部分中的ll就是hinge损失函数,而后面相当于L2正则项。
Hinge 损失函数的标准形式
更多内容,参考Hinge-loss。
补充一下:在libsvm中一共有4中核函数可以选择,对应的是-t
参数分别是:
除了以上这几种损失函数,常用的还有:
0-1损失函数
绝对值损失函数
下面来看看几种损失函数的可视化图像,对着图看看横坐标,看看纵坐标,再看看每条线都表示什么损失函数,多看几次好好消化消化。
OK,暂时先写到这里,休息下。最后,需要记住的是:参数越多,模型越复杂,而越复杂的模型越容易过拟合。过拟合就是说模型在训练数据上的效果远远好于在测试集上的性能。此时可以考虑正则化,通过设置正则项前面的hyper parameter,来权衡损失函数和正则项,减小参数规模,达到模型简化的目的,从而使模型具有更好的泛化能力。
最初的最小二乘法并没有统计理论基础,只是一种数值计算方法。一般只求使∑(ti−y(xi,θ))2∑(ti−y(xi,θ))2最小的θ^θ^,也不考虑t的具体模型假设是什么。当我们学习最小二乘的时候,我们总是会问,问什么我们取差的平方和,而不取差的绝对值,或者四次方的和呢?答案是最小二乘法为人们所熟知所运用,最根本的原因是,它与高斯模型下的极大似然估计的结果是一致的!因此,我们使用最小二乘而不使用最小一乘或四乘是有道理的。
损失函数是用来做预测的,属于决策理论的范畴。在一个估计好的模型t=f(x,θ^)+ϵt=f(x,θ^)+ϵ下,我们如何对一个预测变量x′x′的输出t′t′进行预测呢?用t^′=f(x′)t^′=f(x′)作预测呗。有没有想过其原因呢?其实,这时t′t′是一个随机变量,这个随机变量可能会取各种各样的值,用f(x′)f(x′)作为t′t′的预测值,在ϵϵ服从0均值正态分布假设下,意味着用一个随机变量的均值对一个随机变量做预测。显然,预测不可能准确,也就是说t′−t^′t′−t^′不可能为0。但是,在使(t′−t^′)2(t′−t^′)2最小的情况下,用均值做预测是最好的选择。而(t′−t^′)2(t′−t^′)2就是平方损失函数,即预测可能发生的损失。在其他损失函数下,比如∥t′−f(x′)∥‖t′−f(x′)‖,这时用均值做预测,就不会让这个损失函数最小,反而用中位数会更好。
参考文章:
http://www.csuldw.com/2016/03/26/2016-03-26-loss-function/