大家好,我是“果壳三明治”。
这次继续上次,讲统计机器学习的几个基本概念。
一、损失函数和风险函数:
损失函数非常非常非常关键。它是用来度量模型每次预测结果的好坏程度。常用的损失函数有以下几种:
(1)0-1损失函数:
当 Y≠f(X) 时 L( Y , f(X) ) =1
当 Y=f(X) 时 L( Y , f(X) ) =0
(2)平方损失函数:
L( Y , f(X) ) =( Y-f(X) )2
(3)绝对损失函数:
L( Y , f(X) ) =| Y-f(X) |
(4)对数损失函数:
L( Y ,P(Y|X) ) =-log P( Y|X )
拿预测全校每个学生考试成绩举例:
对于0-1损失函数,Y有两种结果时可以采用,如:合格、不合格。
如果通过模型求出的结果对了,损失就是0;错了,损失就是1。
对于平方损失函数和绝对损失函数,Y是连续的值时可以采用,如 0-100分。
如果通过模型求出的结果是90分,实际是85分。那平方损失就是( 90-85 )2=25,绝对损失就是 |90-85|=5。
如果结果是80分,实际是85分。那平方损失就是( 80-85 )2=25,绝对损失就是 |80-85|=5。
可以看出,取平方和绝对值,是为了防止正负误差抵消。
对数损失函数,与上面三个差别比较大。我们的目标是判定考试成绩是否合格,其中P( Y|X ) 是一个概率,她表示通过模型计算出的合格的概率。概率越大,按理来说预测的就越有把握,损失也就越小。也就是P( Y|X ) 越大,损失越小,也就是P( Y|X ) 越小,损失越大。所以要加个负号,就和损失成正比了。取log是为了方便计算,log可以把乘积变成加法。
对于所有的预测,我们来求一下期望(均值),结果就称为风险函数或期望损失。
二、经验风险最小化、结构风险最小化、正则化:
经验风险最小化:
经验风险就是在训练数据集上的平均损失。如何让经验风险最小化呢?
有很多方法,极大似然估计就是其中一种方法。什么叫极大似然估计?
举个例子,掷硬币,掷了50次,30次正面,20次背面。我们要估计掷出正面的概率。
设概率为p,先建立似然函数L,然后找p取何值时,L值最大。通过求偏导,可以求出此例子当p=3/5时,似然函数值最大。p的极大似然估计值就是3/5。有兴趣的可以去查资料看一下极大似然函数。
对于掷硬币例子,如果采用0-1损失函数,每次都猜正面,经验风险会比较小(如果样本不是很小)。
结构风险最小化:
结构风险最小化是为了防止过拟合而提出来的。
过拟合就是在训练集的结果效果很好,在测试集的结果要差很多。欠拟合是训练集上结果就很差。
结构风险最小化就是,在经验风险基础上加上一个惩罚项。这个惩罚项随着模型复杂度的增大而增大。
为什么加上这个惩罚项就能防止过拟合?
大家看一下下面几个图。
(突然发现,图片粘贴过来,会自动加水印。。。)
训练模型,就是学习一个函数 f(X),图中绿色线是所有数据(训练集和测试集)的分布情况。
图中的M是函数f(X)中x的最高次幂。M越大,函数f(X)自然会更复杂,惩罚项增大。当M=0或1的时候,经验风险很大,效果不是很好,当M=9时,经验风险为0,但M很大,效果也不是很好。M=3时,效果是最好的。
也就是说,经验风险太大或者特别特别小都不好,M过大过小也都不好。大多数情况下,比较简单(M=0或1过于简单了)的模型会有更好的泛化能力(就是对于非训练集的预测能力)。
正则化:
通常,用正则化项来作为惩罚项。通常取参数向量的L1-范数或者L2-范数。
范数属于矩阵的知识。这里通过例子大概给大家讲解一下:
有两个拟合函数,一个是 y = 1a+2b+3c+4d,另一个是 y =2a+2b。
对于第一个y
L1-范数就是(1+2+3+4)=10
L2-范数就是√(12+22+32+42)=√30
对于第二个y
L1-范数就是(2+2)=4
L2-范数就是√(22+22)=√8
很明显,第一个更复杂。
注意:L2-范数永远<=L1-范数。
三、交叉验证:
交叉验证就是如何划分训练集和测试集。
简单交叉验证就是划分一部分为训练集,一部分为测试集。通常训练集比测试集要大,如(7:3)。
S折交叉验证如下图所示,将数据集分成10份,然后每份轮流测试集。最后计算平均损失。
生成模型和判别模型:
生成模型是学习联合概率分布P(X,Y)。典型的有:朴素贝叶斯法、马尔科夫模型。
判别模型是直接学习判别函数f(X)或者条件概率分布P(Y | X )。也就是不用求出联合分布,只关心结果。
典型的有:感知机、决策树、SVM、条件随机场等等。
哈哈哈哈,基础知识终于基本上铺垫完毕了!下一次,可以讲具体算法感知机!
感谢阅读!参考资料 《统计学习方法》