本文重点:
- 监督学习
- 方差和误差(Sum of Squares Error, SSE)
- 均方误差(Mean Squares Error, MSE)
- 方均根误差(Root Mean Squares, RMS)
- 数据集
对于监督学习来说,误差计算非常重要,监督学习的训练集由成对的向量构成,其中输入向量与其预期输出向量一一对应。
方差和误差
方差和误差(SSE)是一种相当简单的误差计算方法,在部分机器学习算法中得以应用。一个很高的方差和意味着预期输出与实际输出之间存在很大的差异,训练算法的原理实际上就是减小方差和误差。
方差和误差的公式如下:其中y上方有一个尖号是预期输出,y上横线是实际输出,所以就是预期输出减实际输出的差值的平方再求和。
因此训练集越大,则方差和误差的值一般也会越大。这也是方差和误差的一个缺点——你没办法直接比较两个规模不同的训练集的方差和误差。
均方根误差
均方根误差(RMS)是一种与方差和误差有点儿相似的误差计算方法,其共同点在于都需要求出各个实际输出与预期输出值之间差值的平方。但均方根误差还需要对这全部的平方值取平均,再求这个平均值的平方根。因为均方根误差是用平均值计算出来的,因此就可以在两个不同大小的训练集之间进行比较
均方误差
均方误差(MSE)是机器学习算法中最常用的误差计算方法。大多数情况下,神经网络、支持向量机和其他很多机器学习算法都使用均方误差。
均方误差本质上就是对预期输出与实际输出的差值的平方求得的平均值,由于这一过程中差值被平方了,因此对均方误差而言,差值是正是负都不重要。
那么,在均方根误差和均方误差之间应当如何抉择。二者确实很类似,但有一个很重要的差异在于均方根误差是线性的,而均方误差则不然。如果训练集中的误差全都翻了一倍,那么均方根误差也会翻一倍,但均方误差不是这样;有时候均方误差这种非线性的性质在机器学习算法中用来度量误差反而更加有效。
误差计算方法的比较
下表列出了小、中、大、特大偏置对每种误差计算方法的影响。
Type | SSE | MSE | RMS |
---|---|---|---|
Small | 2505 | 0.01 | 0.1 |
Medium | 62634 | 0.251 | 0.501 |
Large | 250538 | 1.002 | 1.001 |
Huge | 25053881 | 100.216 | 10.011 |
可见,受影响最大的是方差和误差,因为方差和误差仅仅是把各差值的平方求和而已。而均方误差所受的影响又要比均方根误差更大,并且从数值上可以明显看出均方根误差和均方误差之间存在接近平方根的关系。
划分训练数据
一般不会想要把全部的数据都用作训练数据,因为在你的数据中必然会存在噪声(noise)。“噪声”这个词一般指的是数据中随机出现的微小扰动。一个训练很成功的算法能够忽视噪声的影响,并进行准确的预测。要是算法巨细靡遗,连噪声都一并记忆的话,就会出现我们竭力想要避免的“过拟合”现象。因为噪声的出现没什么规律,因此极大损害了算法识别训练集以外数据的能力,也会导致算法识别到错误的模式。这样的错误模式会产生一种被称作“训练集偏差”的现象。
选择偏差”是我们关心的另一个问题。要是需要从几个实现同样功能的机器学习算法中择一而用,你就不应该只考虑训练误差最小的那个算法,否则你会很容易选到一个过拟合最严重的模型。
可用数据一般被划分为3个数据集,以此来避免出现偏差。值得注意的是,这些数据集中的数据都是从可用数据中随机选取的,因为你不会希望在为每个数据集选取数据的时候引入新的偏差,从可用数据中随机选取数据为的就是避免偏差。对时间序列数据而言,就可以选择时间段。训练数据一般被划分为如下3个数据集:
- 训练集(Training set);
- 验证集(Validation set);
- 测试集(Test set)。
训练集中是用以训练算法的数据,通常也是3个数据集中规模最大的一个,一般占全部可用数据的80%。然后可以在剩下的20%数据中,再划分出验证集与测试集。一定要时刻谨记,由于是使用训练集来训练算法,因此训练集的误差往往是最小的。
如果需要对几个不同的算法进行评估,就应当使用验证集来比较哪一个算法训练效果最好。