周志华 《机器学习》学习笔记系列一(绪论第一章+第二章)

来源:互联网 发布:国家大数据专业委员会 编辑:程序博客网 时间:2024/06/15 21:53

本系列是根据清华大学出版,南京大学周志华教授撰写的《机器学习》教材的编写的学习笔记。现在正处于研一阶段,刚接触机器学习方向,很多知识都只是结合自己浅显的理解,但是我相信我会慢慢的越来越厉害~~~  

     本篇主要介绍了该教材前两个章节的主要知识点。

1.绪论

机器学习是指在计算机上从数据中产生“模型”的算法,即“学习算法”。在已有的数据集基础上产生“模型”,再对新的数据做出合理的判断。例如:如何让计算机通过大量的挑瓜经验来挑选一个又甜又大的西瓜?

  1.1基本术语

假设我们收集了一批西瓜数据,例如:(色泽=青绿; 根蒂=蜷缩; 敲声=浊响), (色泽=乌黑; 根蒂=稍蜷; 敲声=沉闷), (色泽=浅自; 根蒂=硬挺; 敲声=清脆)……每对括号内是一个西瓜的记录,定义:

①所有记录的集合为:数据集。每一条记录称为一个示例(instance)或样本(sample)。

色泽或敲声,称为特征(feature)或属性(attribute),青绿乌黑为相对应的属性值。

②每一条记录(如“色泽”“根蒂”“敲声”)可以在坐标轴上用三维空间表示,每个西瓜都可以在空间中用一个点表示,一个点也是一个向量,即每个西瓜为:一个特征向量(feature vector)。

③一个样本的特征数为:维数(dimensionality),即该西瓜的例子维数为3。

④训练过程中的样本称为一个“训练样本”,同时在训练好模型后,使其预测的过程为“测试”,每一个被预测的新的样本称为一个“测试样本”。

所有训练样本的集合为:训练集(trainning set),[特殊]。

所有测试样本的集合为:测试集(test set),[一般]。

机器学习出来的模型适用于新样本的能力为:泛化能力(generalization),即从特殊到一般。

在上述西瓜的例子中,我们是想计算机通过学习西瓜的特征数据,训练出一个学习模型,来判断一个新的西瓜的好与坏。

预测值为离散值的问题为:分类(classification)。例:西瓜是好瓜?西瓜是坏瓜?

预测值为连续值的问题为:回归(regression)。 例:西瓜的成熟度是0.5?0.7?

在预测过程中,对已有训练集中的西瓜,我们事先便知道了该瓜是否是好瓜,学习器通过学习这些特征,从而总结出规律,即事先准备好了"标记信息"。

但是,例如:未知的某堆西瓜,我们想分辨出好与坏,只能分成若干个组,样本是没有标记信息。

训练数据有标记信息的学习任务为:监督学习(supervised learning),包括分类和回归。

训练数据没有标记信息的学习任务为:无监督学习(unsupervised learning),常见的有聚类和关联规则。

2.模型评估与选择

2.1经验误差与过拟合

误差:实际预测结果与样本的真实值之间的差异。

在训练集上的误差称为训练误差(training error)或经验误差(empirical error)。

在测试集上的误差称为测试误差(test error)。

学习器在所有新样本上的误差称为泛化误差(generalization error)。

② 显然,我们想要得到泛化误差小的学习器,但“太好了”也不好。

学习能力过强,把训练样本自身特点当作潜在样本的一般性质 ,称为:过拟合(overfitting)。

学习能力太差,训练样本的一般性质没有学好,称为:欠拟合(underfitting)。

2.2评估方法

测试集应该尽可能与训练集互斥。例:老师上课教会10道题,考试又考这十道题,结果全对,却看不出来学生的学习能力。所以应该对数据集进行相应的互斥划分。

2.2.1留出法

将数据集D划分为两个互斥的集合,一个作为训练集S,一个作为测试集T,满足D=S∪T且S∩T=∅,常见的划分为:大约2/3-4/5的样本用作训练,剩下的用作测试。

注意:训练/测试集的划分要尽可能保持数据分布的一致性,以避免由于分布的差异引入偏差,常见的做法是采取分层抽样。

同时,由于划分的随机性,单次的留出法结果往往不够稳定,一般要采用若干次随机划分,重复实验取平均值的做法。

2.2.2 交叉验证法

将数据集D划分为k个大小相同的互斥子集,满足D=D1∪D2∪…∪Dk,Di∩Dj=∅(i≠j),同样地尽可能保持数据分布的一致性,即从D中采用分层抽样。

交叉验证法的思想是:每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集,即有K种训练集/测试集划分的情况,进行k次训练和测试,返回k次测试结果的均值。

交叉验证法也称“k折交叉验证”,k最常用的取值是10,下图给出了10折交叉验证的示意图。

这里写图片描述

将数据集D划分为K个子集的过程具有随机性,因此K折交叉验证通常也要重复p次,称为p次k折交叉验证,常见的是10次10折交叉验证,即进行了100次训练/测试。

“留一法”:划分的k个子集的每个子集中只有一个样本。显然,留一法的评估结果比较准确,但对计算机消耗大。

2.2.3 自助法(bootstrapping)

由于留出法和交叉验证法会使得训练集比数据集少,导致结果有误差,所以给出了自助取样法。

基本思想是:即随机m次有放回取样。可以得知在m次采样中,样本始终不被采到的概率取极限为:

这里写图片描述

通过自助采样,初始样本集D中大约有36.8%的样本没有出现在D’中,于是可以将D’作为训练集,D-D’作为测试集。

自助法在数据集较小,难以有效划分训练集/测试集时很有用,但由于自助法产生的数据集(随机抽样)改变了初始数据集的分布,因此引入了估计偏差。在初始数据集足够时,留出法和交叉验证法更加常用。

2.3 调参

大多数学习算法都有些参数(parameter) 需要设定,参数配置不同,学得模型的性能往往有显著差别,这就是通常所说的”参数调节”或简称”调参” (parameter tuning)。

通过调参,得到不同的训练模型,但对每种参数取值都训练出模型来是不可行的。常用的做法是:对每个参数选定一个范围和步长λ,这样使得学习的过程变得可行。

例如:假定算法有3 个参数,每个参数考虑5个候选值,这样对每一组训练/测试集就有5*5*5= 125 个模型需考察,由此可见:减少参数范围的同时,又简单高效。

注:当选定好模型和调参完成后,我们需要使用初始的数据集D重新训练模型,即让最初划分出来用于评估的测试集也被模型学习,增强模型的学习效果。

即对应于每个参数和模型,都要使用上一次的所有的数据集再次实验。


原创粉丝点击