损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,一般使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项,一般能够表示成以下式子:html
其中,前面的均值函数表示的是经验风险函数,L表明的是损失函数,后面的ΦΦ是正则化项(regularizer)或者叫惩罚项(penalty term),它能够是L1,也能够是L2,或者其余的正则函数。整个式子表示的意思是找到使目标函数最小时的θθ值。下面主要列出几种常见的损失函数。git
有些人可能以为逻辑回归的损失函数就是平方损失,其实并非。平方损失函数能够经过线性回归在假设样本是高斯分布的条件下推导获得,而逻辑回归获得的并非平方损失。在逻辑回归的推导中,它假设样本服从伯努利分布(0-1分布),而后求得知足该分布的似然函数,接着取对数求极值等等。而逻辑回归并无求似然函数的极值,而是把极大化当作是一种思想,进而推导出它的经验风险函数为:最小化负的似然函数(即max F(y, f(x)) —-> min -F(y, f(x)))。从损失函数的视角来看,它就成了log损失函数了。github
log损失函数的标准形式:算法
刚刚说到,取对数是为了方便计算极大似然估计,由于在MLE中,直接求导比较困难,因此一般都是先取对数再求导找极值点。损失函数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)的标准形式以下:
当样本个数为n时,此时的损失函数变为:Y-f(X)
表示的是残差,整个式子表示的是残差的平方和,而咱们的目的就是最小化这个目标函数值(注:该式子未加入正则项),也就是最小化残差的平方和(residual sum of squares,RSS)。
而在实际应用中,一般会使用均方差(MSE)做为一项衡量指标,公式以下:
上面提到了线性回归,这里额外补充一句,咱们一般说的线性有两种状况,一种是因变量y是自变量x的线性函数,一种是因变量y是参数αα的线性函数。在机器学习中,一般指的都是后一种状况。
学过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 损失函数的标准形式
能够看出,当|y|>=1时,L(y)=0。
更多内容,参考Hinge-loss。
补充一下:在libsvm中一共有4中核函数能够选择,对应的是-t
参数分别是:
除了以上这几种损失函数,经常使用的还有:
0-1损失函数
绝对值损失函数
下面来看看几种损失函数的可视化图像,对着图看看横坐标,看看纵坐标,再看看每条线都表示什么损失函数,多看几回好好消化消化。
OK,暂时先写到这里,休息下。最后,须要记住的是:参数越多,模型越复杂,而越复杂的模型越容易过拟合。过拟合就是说模型在训练数据上的效果远远好于在测试集上的性能。此时能够考虑正则化,经过设置正则项前面的hyper parameter,来权衡损失函数和正则项,减少参数规模,达到模型简化的目的,从而使模型具备更好的泛化能力。