【机器学习】【基本理论】结构风险、结构风险、损失函数

损失函数:用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。

经验风险:一个损失函数的函数

结构风险:可简单理解为经验风险(一种损失函数的函数)+λ正则化项。因此,模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子:

θ=argminθ1Ni=1NL(yi,f(xi;θ))+λ Φ(θ)

其中,前面的均值函数表示的是经验风险函数,L代表的是损失函数,后面的 ΦΦ 是正则化项(regularizer)或者叫惩罚项(penalty term),它可以是L1,也可以是L2,或者其他的正则函数。整个式子表示的意思是 找到使目标函数最小时的θθ


对于损失函数:

线性回归中的损失函数:平方损失函数可以通过线性回归在假设样本是高斯分布的条件下推导得到.

逻辑回归中的损失函数: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的损失函数表达式,如下:

逻辑回归最后得到的目标式子如下:

J(θ)=1mi=1m[y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]J(θ)=−1m∑i=1m[y(i)log⁡hθ(x(i))+(1−y(i))log⁡(1−hθ(x(i)))]

上面是针对二分类而言的。这里需要解释一下:之所以有人认为逻辑回归是平方损失,是因为在使用梯度下降来求最优解的时候,它的迭代式子与平方损失求导后的式子非常相似,从而给人一种直观上的错觉

这里有个PDF可以参考一下:Lecture 6: logistic regression.pdf.

二、平方损失函数(最小二乘法, Ordinary Least Squares )

最小二乘法是线性回归的一种,OLS将问题转化成了一个凸优化问题。在线性回归中,它假设样本和噪声都服从高斯分布(为什么假设成高斯分布呢?其实这里隐藏了一个小知识点,就是中心极限定理,可以参考【central limit theorem】),最后通过极大似然估计(MLE)可以推导出最小二乘式子。最小二乘的基本原则是:最优拟合直线应该是使各点到回归直线的距离和最小的直线,即平方和最小。换言之,OLS是基于距离的,而这个距离就是我们用的最多的欧几里得距离。为什么它会选择使用欧式距离作为误差度量呢(即Mean squared error, MSE),主要有以下几个原因:

  • 简单,计算方便;
  • 欧氏距离是一种很好的相似性度量标准;
  • 在不同的表示域变换后特征性质不变。

平方损失(Square loss)的标准形式如下:

L(Y,f(X))=(Yf(X))2L(Y,f(X))=(Y−f(X))2

当样本个数为n时,此时的损失函数变为:
$$L(Y, f(X)) = \sum _{i=1}^{n}(Y - f(X))^2$$
Y-f(X)表示的是残差,整个式子表示的是 残差的平方和,而我们的目的就是最小化这个目标函数值(注:该式子未加入正则项),也就是最小化残差的平方和(residual sum of squares,RSS)。

而在实际应用中,通常会使用均方差(MSE)作为一项衡量指标,公式如下:

MSE=1ni=1n(Yi~Yi)2MSE=1n∑i=1n(Yi~−Yi)2

上面提到了线性回归,这里额外补充一句,我们通常说的线性有两种情况,一种是因变量y是自变量x的线性函数,一种是因变量y是参数 αα的线性函数。在机器学习中,通常指的都是后一种情况。

三、指数损失函数(Adaboost)

学过Adaboost算法的人都知道,它是前向分步加法算法的特例,是一个加和模型,损失函数就是指数函数。在Adaboost中,经过m此迭代之后,可以得到fm(x)fm(x):

$$f_m (x) = f_{m-1}(x) + \alpha_m G_m(x)$$

Adaboost每次迭代时的目的是为了找到最小化下列式子时的参数αα 和G:

$$\arg \min_{\alpha, G} = \sum_{i=1}^{N} exp[-y_{i} (f_{m-1}(x_i) + \alpha G(x_{i}))]$$

而指数损失函数(exp-loss)的标准形式如下

$$L(y, f(x)) = \exp[-yf(x)]$$

可以看出,Adaboost的目标式子就是指数损失,在给定n个样本的情况下,Adaboost的损失函数为:

L(y, f(x)) = \frac{1}{n}\sum_{i=1}^{n}\exp[-y_if(x_i)]

关于Adaboost的推导,可以参考Wikipedia:AdaBoost或者《统计学习方法》P145.

四、Hinge损失函数(SVM)

在机器学习算法中,hinge损失函数和SVM是息息相关的。在线性支持向量机中,最优化问题可以等价于下列式子:
$$\min_{w,b}  \ \sum_{i}^{N} [1 - y_i(w\cdot x_i + b)]_{+} + \lambda||w||^2 $$
下面来对式子做个变形,令:
$$[1 - y_i(w\cdot x_i + b)]_{+} = \xi_{i}$$
于是,原式就变成了:
$$\min_{w,b}  \ \sum_{i}^{N} \xi_i + \lambda||w||^2 $$
如若取λ=12Cλ=12C,式子就可以表示成:
$$\min_{w,b}  \frac{1}{C}\left ( \frac{1}{2}\ ||w||^2 $$ + C \sum_{i}^{N} \xi_i\right )$$
可以看出,该式子与下式非常相似:
$$\frac{1}{m} \sum_{i=1}^{m} l(w \cdot  x_i + b, y_i) + ||w||^2$$

前半部分中的ll就是hinge损失函数,而后面相当于L2正则项。

Hinge 损失函数的标准形式

L(y)=max(0,1yy~),y=±1L(y)=max(0,1−yy~),y=±1

可以看出,当|y|>=1时,L(y)=0。

更多内容,参考Hinge-loss

补充一下:在libsvm中一共有4中核函数可以选择,对应的是-t参数分别是:

  • 0-线性核;
  • 1-多项式核;
  • 2-RBF核;
  • 3-sigmoid核。

五、其它损失函数

除了以上这几种损失函数,常用的还有:

0-1损失函数
L(Y, f(X)) = \left\{\begin{matrix}1 ,& Y \neq f(X)\\ 0 ,& y = f(X)    \end{matrix}\right.
绝对值损失函数
$$L(Y, f(X)) = |Y-f(X)|$$
下面来看看几种损失函数的可视化图像,对着图看看横坐标,看看纵坐标,再看看每条线都表示什么损失函数,多看几次好好消化消化。

OK,暂时先写到这里,休息下。最后,需要记住的是:参数越多,模型越复杂,而越复杂的模型越容易过拟合。过拟合就是说模型在训练数据上的效果远远好于在测试集上的性能。此时可以考虑正则化,
通过设置正则项前面的hyper parameter,来权衡损失函数和正则项,减小参数规模,达到模型简化的目的,从而使模型具有更好的泛化能力。

平方误差函数(square error function)与平方损失函数(square loss function):

最初的最小二乘法并没有统计理论基础,只是一种数值计算方法。一般只求使(tiy(xi,θ))2∑(ti−y(xi,θ))2最小的θ^θ^,也不考虑t的具体模型假设是什么。当我们学习最小二乘的时候,我们总是会问,问什么我们取差的平方和,而不取差的绝对值,或者四次方的和呢?答案是最小二乘法为人们所熟知所运用,最根本的原因是,它与高斯模型下的极大似然估计的结果是一致的!因此,我们使用最小二乘而不使用最小一乘或四乘是有道理的。

损失函数是用来做预测的,属于决策理论的范畴。在一个估计好的模型t=f(x,θ^)+ϵt=f(x,θ^)+ϵ下,我们如何对一个预测变量xx′的输出tt′进行预测呢?用t^=f(x)t^′=f(x′)作预测呗。有没有想过其原因呢?其实,这时tt′是一个随机变量,这个随机变量可能会取各种各样的值,用f(x)f(x′)作为tt′的预测值,在ϵϵ服从0均值正态分布假设下,意味着用一个随机变量的均值对一个随机变量做预测。显然,预测不可能准确,也就是说tt^t′−t^′不可能为0。但是,在使tt^)2(t′−t^′)2最小的情况下,用均值做预测是最好的选择。而tt^)2(t′−t^′)2就是平方损失函数,即预测可能发生的损失。在其他损失函数下,比如tf(x)‖t′−f(x′)‖,这时用均值做预测,就不会让这个损失函数最小,反而用中位数会更好。

参考文章:

http://www.csuldw.com/2016/03/26/2016-03-26-loss-function/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值