以监督学习来介绍一下机器学习的一些基本概念。
数据集
- 训练集:有正确标签,用来学习,归纳的数据集。
- 测试集 :没有正确标签,用来测试模型的优劣的数据集。
过拟合和欠拟合
- 过拟合:当学习器将训练样本学得太好了的时候,很可能已经把训练样本自身的一些特点当作了所以潜在样本都会具有的一般性质,这样就会导致泛化性能下降。
- 欠拟合:训练样本的一般性质尚未学好。
评估方法
通常,我们可通过实验测试来对学习器的泛化误差进行评估并进而做出选择,为此,需使用一个“测试集”(testing set)来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”(testing error)作为泛化误差的近似。
通常我们假设测试样本也是从样本真实分布中独立同分布采样所得。其中测试集应该尽可能与训练集互斥,即测试样尽量不在训练集中出现、未在训练过程中使用过。
下面将会提到3种划分训练集和测试集的方法
-
留出法(hold-out):直接将训练集D划分为两个互斥的集合,其中一个作为训练集S,另一个作为测试集T,即 D = S ∪ T D=S\cup T D=S∪T, S ∩ T = ∅ S \cap T = \varnothing S∩T=∅。在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。
* 训练集和测试集的划分要尽可能保持数据分布的一致性。 -
交叉验证法(cross validation):先将数据集D划分为k个大小相似的互斥子集,即 D = D 1 ∪ D 2 ∪ . . . ∪ D k , D i ∩ D j = ∅ ( i ≠ j ) D=D_1 \cup D_2 \cup...\cup D_k,D_i \cap D_j = \varnothing(i \neq j) D=D1∪D2∪...∪Dk,Di∩Dj=∅(i=j)。每个子集都尽可能保持数据分布的一致性,即从D中通过分层抽样得到。然后,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可以获得k组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值。通常,k=10。
*假定数据集中D中包含m个样本,k=m时,又称留一法(leave-one-out)。 -
自助法:给定包含m个样本的数据集D,有放回抽样m次得到数据集 D ′ D' D′, D ′ D' D′作为训练集, D ∖ D ′ D \setminus D' D∖D′作为测试集。
性能度量
- 精度
- 错误率
- 查准率与查全率
- F1-Score