以下内容以2017年秋哈工大机器学习课程为主,参考周志华老师的《机器学习》,李航老师的《统计学习方法》以及Andrew NG的斯坦福公开课整合而成
CH1.基本术语
1.机器学习的一般泛型
根据训练数据是否有标记信息,学习任务可大致划分为两大类:监督学习和无监督学习。监督学习的典型例子为分类(对离散值的预测)和回归(对连续值的预测),无监督学习的典型例子为聚类
2.假设空间
我们可以把学习过程看做一个在所有假设(hypothesis)组成的空间里进行搜索的过程。
版本空间:可能有多个假设与训练集一致,即存在着一个与训练集一致的“假设集合”,称之为“版本空间”。
3.归纳偏好
对于版本空间里的假设,由于他们都与训练集一致,无法根据训练数据判断孰好孰坏,而他们的泛化能力却不同,学习算法必须选择出一个假设模型。
机器学习算法在学习过程中对某种类型假设的偏好,称为“归纳偏好”,或简称为“偏好”。
归纳偏好可看做学习算法自身在一个可能很庞大的假设空间中对假设进行选择的启发式。“奥卡姆剃刀”是一种常用的、自然科学研究中最基本的原则,即“若有多个假设与观察一致,则选择最简单的那个”
NFL定理(No Free Lunch Theory):对于学习算法La,Lb,如果La在某些问题上表现的比Lb好,则必定存在另一些问题,在这些问题上,Lb表现的更好。即所有算法的期望性能相同。值得注意的是,NFL定理有一个重要的前提:所有问题的出现机会相同或所有的问题同等重要,假设了真实目标函数均匀分布,但实际情况并非如此。NFL定理想要说明的不是所有的算法性能一样好,而是说明脱离具体问题,空谈哪个算法更好是没有意义的。
CH2模型评估与选择
1.误差和过拟合
训练误差(经验误差),泛化误差
学习的目标是使得泛化误差尽可能小。
过拟合:当学习器把训练样本学得太好了的时候,很可能已经把训练样本自身的一些特点当做了所有潜在样本都会具有的一般性质,这样会导致泛化性能下降,这种现象称为过拟合(overfitting)
欠拟合
2评估方法
通常使用测试集上的测试误差作为泛化误差的近似,值得注意的是,测试集应尽可能的与训练集互斥。
2.1留出法
留出法将数据集分为互斥的训练集和测试集。需要注意的是,训练集测试集的划分要尽可能保证数据分布的一致性,避免因数据划分引入额外的偏差。单次使用留出法得到的估计结果往往不够稳定可靠,一般要采用若干次随机划分、重复进行实验评估后取平均值。一般取2/3到4/5的样本作为训练集,剩余的作为数据集。
2.2交叉验证法
交叉验证法先将数据集分为k个大小相似的互斥子集,每次用k-1个子集的并集作为训练集,剩余的一个作为测试集,这样就会进行k次实验,最后返回k次测试结果的均值。通常把也成为“k折交叉验证”,k最常用的取值为10。
为减少因样本划分不同而引入的误差,k折交叉验证通常要使用不同的划分方法p次。
留一法:k=样本数据个数
2.3自助法
给定包含m个样本的数据集D,我们对他进行采样产生数据集D‘。采样规则如下:每次从D中随机取一个样本放入D'中,然后还需将该样本放回D中(下一次还有可能抽到),该过程重复执行m次,这样D'中包含了m个样本。一个样本在这m次抽样中均不被抽到的概率约为0.368(m很大时取极限得到),也就是说D'中大概包含了D中73.2%的数据。
我们使用D'作训练集(m个样本),D\D'作测试集。自助法产生的数据集改变了初始分布数据集的分布,这会引入估计偏差,所以一般适用于数据集较小,难以有效划分训练集数据集时使用。
3.偏差与方差
偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;方差度量了同样大小的训练集的变动导致的学习性能的变化,即造成了数据扰动所造成的影响;噪声则表达了当前学习任务上所有学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。
偏差-方差窘境
最上面那条是泛化误差。
训练不足时,学习性能不好,期望的输出与真实值之间差距较大,即偏差较大,泛化误差也大,偏差主导了泛化错误率。
训练加强时,学习能力变强,偏差变小,训练数据的扰动渐渐被学习到,方差主导了泛化错误率。
当训练过强(过拟合),训练数据的轻微扰动都会导致学习器发生显著的变化,方差主导了泛化错误率。
CH3决策树
3.1基本知识
决策树是基于树结构来进行决策的。决策过程中提出的每个判定问题都是对某个属性的测试,每个测试或者导出最终结果,或是导出进一步的判断问题,其考虑范围是在上次决策结果的限定范围内的。决策树可以表示输入属性的任何函数。
以下是贪心的top-down决策树归纳算法
决策树的生成是一个递归过程,有三种情况会导致递归返回:(1)当前节点包含的样本属于同一类别,无需划分。(2)当前属性集为空,或是所有样本在所有属性上取值相同,无法划分。(3)当前节点包含的样本集为空,不能划分。对于情形2,把该节点设为叶节点,并将其类别设为该节点所含样本最多的类别;对于情形3,同样把该节点设为叶节点,但其类别为父节点所含样本最多的类别。
下面是一个判断一个人是否会发生税务欺诈的例子,考虑的属性为有三个:是否还款(refund),婚姻状况(marital status)以及收入是否大于80k。基于这些属性值来判断一个人是否会发生税务欺诈。
然而,对于这个问题并非只有一个决策树,比如下面的一棵决策树也是可以的
那么如何切分示例集呢,我们需要考虑如何确定属性的测试条件以及如何确定最好的切分。一般而言,随着划分过程的不断进行,我们希望决策树的分支节点所包含的样本尽可能属于同一类别。这就是划分的选择问题。
3.2划分选择
(1) 信息熵(information entropy):假定当前样本集合X中第k类样本所占的比例为p(x=k)(共有N类),则X的信息熵定义为
信息熵的值越小,X的纯度越高。注意,虽然求和号前面有个负号,但log2p(x=i)是一个负数(或0),所以H(x)>=0,等于0说明样本属于同一类。
(2)条件熵
(3) 信息增益
父节点p被某个属性a划分为k部分(p1,p2..pi,..pk),每部分包含的样本数为ni,父节点p包含的样本数为n。那么该属性a对父节点样本集进行划分所获得的“信息增益(information gain)”为
一般而言,信息增益越大,则意味着使用属性a来进行划分所获得的纯度提升越大。ID3和C4.5均采用了该方法。
值得注意的是,信息增益准则对可取值数目较多的属性有所偏好,为较少这种偏好可能带来的不利影响,C4.5不直接使用信息增益,而是增益率来选择最优划分属性。
(4) 增益率
称IV(a)为属性a的固有值。
狗屎的是,增益率准则又对可取值数目较少的属性有所偏好,所以C4.5算法也不是直接使用这一原则,而是先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。
(5)基尼指数
Gini(p)反映了从节点p中,随机抽取两个样本,其类别标记不一致的概率。Gini(p)越小纯度越高。类似的,可以定义属性a的基尼指数。
3.3剪枝
剪枝是决策树学习算法对付过拟合的主要手段(防止分支过多)。剪枝的基本策略有预剪枝和后剪枝。
预剪枝:在决策树生成过程中,在对节点划分前考虑划分是否能提高泛化性能(验证集上的准确率),如果不能,则不进行划分。
预剪枝使得决策树的许多分支都没有展开,可以有效较少过拟合,但考虑到,虽然本次划分不能带来性能的提升,但本次划分产生的后续划分可能对性能有显著提高,然而预剪枝并禁止了这些分支的展开,导致预剪枝可能会带来欠拟合的风险。
后剪枝:后剪枝策略在已经生成的决策树上进行自底向上地剪枝,原则同上。
一般来说,后剪枝的欠拟合风险很小,泛化性能往往优于预剪枝,但从过程上可以清楚的看到,他的时空开销更大。
3.4连续与缺失值
属性连续:连续属性离散化
属性值缺失:我们需要解决两个问题:1如何在属性值缺失的情况下进行划分属性选择。2给定划分属性,如果样本在该属性上的值缺失,该如何如何划分。
对于问题1,采用推广的信息增益计算公式(详见周志华老师《机器学习》一书第87页)
对于问题2,让样本以不同的概率划分到不同的子节点(该样本划入所有的子节点,只是划入后,会分配一个权重)
3.5多变量决策树
上述的决策树所形成的分类边界有一个特点,即轴平行。这样的决策树对于一些分类边界非轴平行的问题会很复杂。多变量决策树生成的边界可以不平行坐标轴。原来决策树的非叶节点是对一个属性值的测试,而多变量决策树是对多个属性线性组合来进行测试。