错误率
分类错误的样本占样本总数的比例,称为错误率。相对应的,精度= 1 - 错误率。
误差
用来训练模型的数据叫做训练集,训练出模型后,我们要拿另外一些数据去测试所得到的模型,这部分数据叫做测试集。训练数据前,我们会使用某个算法得到一个初始的假设模型,在这个模型上预测输出与样本真实输出之间的差异,称为误差。使用训练集数据得到的误差,称为训练误差(或经验误差),用误差函数表示,训练模型就是不断修正模型,使误差函数最小化。模型在测试集上的误差,称为测试误差,与测试误差近似,拿新的样本,在模型上得到的误差称为泛化误差。
过拟合与欠拟合
训练误差很小,泛化误差较大的情况较过拟合,说明学习器学的“太好”了,对训练数据能够非常好的分类,但拿到新数据就力不从心了,说明它的泛化能力不行,而欠拟合则相反。学习能力是否过于强大是由学习算法和数据内涵共同决定的。
不同的拟合程度
分类、回归、聚类
根据样本的属性,将样本分为离散的若干类的过程叫分类,如果将样本映射到一个连续空间,则成为回归。如果事前不知道属性和输出的映射关系,即没有标签的样本,将其分为若干簇,这些簇代表什么,我们事前并不知道,这种做法叫做聚类。分类和回归属于监督学习,聚类属于无监督学习。
独立同分布
假设所有的样本都满足独立同分布,测试样本也是真实样本的独立同分布采样取得的。每个样本都是独立的,指的是A的发生不影响B的状态,反之也一样,即p(AB) = p(A)*p(B)。同分布指所有样本服从同一分布,所以就可以用“个别到一般”的思想,通过测试集得到一般的分布律。
所以我们希望测试集得到的模型尽可能的接近真实的分布规律,而不是精确的掌握测试集样本的性质,即要得到的模型具有很好的泛化能力,首先要在测试集上表现良好。为了测试模型的泛化能力,测试集要尽可能的和训练集选用不同的样本。下面介绍三种评估泛化能力的方法。
留出法
留出法直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集,另一个作为测试集,即D = S ∪ U, S ∩ U = ∅。在分配时要尽可能保持数据分布的一致性,因此采样方式多采用分层采样,而且多次变化训练集和测试集的数量,重复若干次后取平局值作为留出法的评估结果。
分层采样:先将总体的单位按某种特征分为若干次级(层),然后从每一层内进行单纯的随机抽样。
交叉验证法
先将数据集D划分为k个大小相似的互斥子集,即D = D1 ∪ D2 ∪...∪ Dk,每个子集都通过分层采样得到。然后每次选择其中k - 1个子集的并集作为训练集,剩下那个作为测试集,轮流进行k次训练和测试,最终返回这k个测试结果的均值。这个验证法通常也称为k折交叉验证,k常取10。
10折交叉验证
如果D中包含m个样本,取k = m,则称为留一法,留一法结果往往认为比较准确,但数据量大的时候,这种方法的计算开销是难以忍受的。
自助法
当数据集较小时,可以采用自助法。给定包含m个样本的数据集D,从中采样得到数据集D':每次随机从D中挑选一个样本,将其拷贝放入D',然后再将该样本放回D中,使得该样本在下次采样时还有可能被采到,重复m此后,得到含有m个样本的D'。一个样本在m次采样中始终不被采到的概率取极限:
m次采样不被采到
需要注意的是,自助法产生的数据改变了初始数据集的分布,这会引入估计误差。
估计误差:度量预测结果与最优结果的相近程度。
最后,在模型选择完成后,学习算法和参数配置已选定,此时应该用数据集D重新训练模型,这个模型在训练过程中使用了m个样本,之后才得到我们最终提交给用户的模型。
参考:《机器学习》周志华
https://www.zhihu.com/question/32246256
领取专属 10元无门槛券
私享最新 技术干货