机器学习笔记(一)
有了学习器之后,我们需要对该学习器进行评估。关于学习器和样本以及评估,有几个相关的概念:
- 错误率E: 分类错误的样本数a占样本总数m的比例E=a/m;
- 精度(accuracy): (1-E)×100%;
- 误差(error): 学习器的实际预测输出与样本的真实输出的差异;
- 训练误差(empirical error): 学习器在训练集上的误差;
- 泛化误差(generalization error): 在新样本上的误差;
- 过拟合(overfitting): 将训练样本的自身特点当成所有潜在样本具有的性质,从而导致的泛化性能下降;
- 欠拟合(underfitting): 训练样本的一般性质尚未学好;
1、模型评估方法
为了通过实验测试来估计学习器的泛化误差,需要从样本中独立同分布采样获得“测试集”,通过“测试集”来测试学习器对新样本的判别能力。已知一个包含m个样例的数据集D={(x1,y1),(x2,y2),…,(xm,ym)},通过对D进行适当的处理,从中产生出训练集S和测试集T。
1.1 留出法(hold-out)
“留出法”直接将数据集D划分成两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,满足:D=S∪T,S∩T= ∅ \varnothing ∅.注意:测试集和训练集的划分需要保持数据分布的一致性。
在使用“留出法”时,需要采用若干次随即划分、重复进行实验评估后取平均值作为留出法的评估结果。
留出法的缺点:若训练集S包含绝大多数样本,则训练出的模型可能更接近于用D训练出的模型,由于T比较小,评估结果不够准确。若T多包含一些样本,则S与D的差别更大,被评估的模型与用D训练出的模型有较大差别,降低了评估结果的保真性。
常见做法:取2/3~4/5的样本用于训练,剩余用于测试。
1.2 交叉验证法(cross validation)
交叉检验法将数据集D分成k个大小相似的互斥子集,D=D1 ∪ \cup ∪D2 ∪ \cup ∪… ∪ \cup ∪Dk, Di ∩ \cap ∩ Dj = ∅ \varnothing ∅ (i≠j).且每个子集都尽可能保持数据分布的一致性,从D中分层采样获得。每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集,从而得到k组训练\测试集,返回k个测试结果的均值。
假设D中包含m个样本,若令k=m,则得到的交叉验证法的特例:留一法(Leaving-One-Out).
优点:评估模型与期望评估模型相似,评估结果较为准确。
缺点:训练m个模型的计算开销难以忍受。
1.3 自助法(bootstrapping)
给定数据集D,对其进行采样产生数据集D’:每次从D中挑选一个样本,拷贝进入D’,然后将样本放回;重复过程执行m次,得到包含m个样本的数据集D’.自主采样又可以称为“有放回采样”。D中有一部分样本会在*D’*中多次出现,而另一部分样本不出现。样本不被采到的概率是 ( 1 − 1 m ) m (1-\frac1m)^m (1−m1)m,取极限以后得到 lim ( 1 − 1 m ) m = 1 e \lim(1-\frac1m)^m=\frac1e lim(1−m1)m=e1.