当前位置:   article > 正文

机器学习(周志华)读记-(一)绪论、模型评估与选择、线性模型、决策树_多个数据集上对多个算法进行比较检验常用

多个数据集上对多个算法进行比较检验常用

绪论

基础知识:

        所谓的机器学习高大尚的说法是机器像人一样的学习能力,能在预测中给出判断,其实是训练个强大的模型,里面有足够参数,可以对复杂的输入通过足够的参数表示,能对类似的输入得到相似的结构,不再是一条直线两个参数划分平面,或者更多参数曲线划分空间。人工智能研究的方向之一,是以所谓 “专家系统” 为代表的,用大量 “如果-就” (If - Then) 规则定义的,自上而下的思路。人工神经网络 ( Artifical Neural Network),标志着另外一种自下而上的思路。神经网络没有一个严格的正式定义。它的基本特点,是试图模仿大脑的神经元之间传递,处理信息的模式。机器学习通过研究如何通过计算的手段,利用经验来改善自身性能,在计算机里经验是以数据存在,机器学习就是在数据上计算产生模型,模型是通过数据学习到的结果,其精髓是:非线性、分布式、并行计算、自适应、自组织。

 样本:

进行学习的已知数据,样本空间的一个采样,这里又有样本属性与属性空间,用于训练的样本叫训练集。根据训练是否有标记信息,分为有监督学习和无监督学习,分类和回归是有监督,聚类即是无监督学习。学的模型适用于新样本的能力成为泛化能力,具有强泛化能力的模型能很好的适用于整个样本空间。

        从数据中学的得模型的过程称为学习或者训练,是执行某个学习算法的过程,训练使用的数据称为训练数据,每个样本称为训练样本,训练样本组成训练集。无论是有监督(有导师)或者还是无监督(无导师训练)是目的是通过已有的数据经验判断未至,归纳与演绎。书中例子是判断西瓜的好坏可以根据假设空间(颜色、根蒂、敲声)等通过已知信息判断西瓜好坏,可以二分类(好坏),也可以多分类-成熟度。通过对样本空间的假设分析,在计算机上的模拟参数化训练就会使得训练模型“黑箱子”在路径上自顶向下或自底向上同时进行去掉了和正例不一样的假设(训练上是使得参数结果靠近正例假设偏离负例假设)。

        关于书中其他的一些概念,如属性特征;以判断西瓜好坏为例,属性就是外在判断一个西瓜的特征:根蒂、颜色等。为什么要有属性值因为在计算机的数据处理中这些属性是人去判断的而计算机是要处理主要以数字形式的数据,这里的属性值的填写又涉及到数据预处理:归一化、数据填充、删除等操作。因为要得到好的训练模型一个脏数据的影响往往比一个正常数据影响要大。

归纳偏好:

判断分类的属性得到整理的属性空间往往不止一个,计算机算法基于某种偏好认为哪种假设比其他假设好就是归纳偏好。其实在非线性拟合的预测中,一些胡猜有时会和经过训练模拟的函数预测差不多,这要求学习算法的归纳偏好与实际问题相是否符合有莫大的关系。

        人工智能各学派:符号主义:又称为逻辑主义、心理学派或计算机学派,其原理主要为物理符号系统(即符号操作系统)假设和有限合理性原理,代表有决策树和基于逻辑的学习。典型决策树是以信息论为基础以信息熵最小化为目标直接模拟人类的对概念进行判定属性流程。基于逻辑的典型是归纳逻辑程序设计ILP。连接主义:基于神经网络的连接主义学习,它产生的是黑盒模型,BP算法的出现使得这种机器学习模型得到快速发展,但其局限性是试错性,就是过程涉及大量的参数而参数设置缺乏理论指导主要靠手工调参。统计学习:代表是支持向量机(SVM),连接主义和统计学习关系密切。深度学习:连接主义的又一次创意发展,狭义的讲就是很多层神经网络,主要涉及是数据量大,参数多,其发展是大数据及计算机设备的提升伴随产生。

模型评估与选择

        误差:

学习器的实际预测输出与样本的真实输出之间的差异,错误样本数占测试样本数的比例称为错误率。 训练误差(经验误差):学习器在训练集上的误差。   泛化误差:在新样本上的误差,想得到的就是泛化误差较小的模型。

     在实际希望中,需要的是在新样本上能表现很好的学习器,就需要从训练样本中尽可能学出适用于所有潜在样本的“普遍规律”,用以判别新样本,但如果学习器将训练样本中一些自身特点当作所有潜在样本都会具有的性质,就会导致泛化能力下降。这种现象称为“过拟合”,与其相对的就是“欠拟合”:训练一般性质尚未完成。过拟合:形象的讲就是学的太细致博学的生物教授在以往的经验上看到新的植物,比以往植物少一片叶子都不认为他们是同一类。把一些特点当做所有数据共有的特性。欠拟合就是训练样本的性质没有学好预测与根据一定数据范围胡猜类似。书中例子就是训练树叶欠拟合就会误以为绿色都是树叶。相对于过拟合欠拟合相对容易克服,如在神经网络里通过增加训练轮数,决策树扩展分支,过拟合相对麻烦,过拟合只能缓解不能避免,连接性训练网络的机器学习通常都会参数初始化,不同初始化的模型得到效果也不一样,哪个模型好要通过泛化误差进行评估。泛化误差不能直接获得,训练误差由于过拟合的存在不标准,现实中模型的评估与选择有以下几个方法:(只考虑泛化误差,没有考虑时间开销、存储开销、可解释性等方面,测试集的测试误差作为泛化误差)

        1、留出法:直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即D=S∪T,S∩T=空集,在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。假定D包含1000个样本,将其划分为S包含700个样本,T包含300个样本,用S进行训练以后,如果模型在T上有90个样本分类错误,那么其错误率为(90/300)*100%=30%,精度为1-30%=70%。
        需注意:训练/测试集的划分要保持数据分布的一致性,避免额外偏差。这里的一致不仅要保持训练与测试数据比例,还要保持训练数据的样本类别数据一致,多分类任务中如果某一样本过多(Yk)那么模型更偏向于Yk,结果相似的就会归类于Yk。神经网络大多还存在一个数据样本打乱的算法,就是让数据随机训练,如果不这样,每一类样本集中训练,最后的结果更偏向于最后迭代训练的那类样本。常见数据集训练与测试的划分:2/3  4/5.(弊端一般划分不均匀)

        2、交叉验证:先将数据集D分为k个大小相似的互斥子集,即D=D1∪D2∪……∪Dk,Di∩Dj=空集(i≠j)。每次用K-1个子集的并集作为训练集,余下的子集作为测试集;获得K组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值,相对客观的一种方法,它的稳定性和保真性取决于k的取值。但是模型训练测试开销较大,每次划分训练测试都要耗费很多的时间,每次训练如果初始化参数训练的模型,也不一定是最准确的方式。

        3、自助法:自助采样:在数据集D中做放回抽取样本,将m次抽取后得到的样本做数据集D’。每个样本被选中的概率是1/D,因此未被选中的概率就是(1-1/D),这样一个样本在训练集中没出现的概率就是d次都未被选中的概率,即(1-1/D)^D。当d趋于无穷大时,这一概率就将趋近于e^-1=0.368,通过自助采样,初始数据集D中约有36.8%的样本出现在D’中。将D’做训练集,将D/D’做测试集。

        4、调参与最终模型:调参:因参数配置不同,学得模型的性能有显著差别,在进行模型评估和选择时,需要对算法参数进行设定,参数的设定没有具体准则,但又不能全都训练和调节范围过大,一般是在[0,0.2]范围内步长0.05为步长调节,在梯度下降法中,用学习率的大小控住调节量的度量变化。寻找最优值的值的过程是让初始参数向预测度高的方向靠近,即总体的误差越来越小。

        模型性能度量 性能度量:衡量模型泛化能力的评价标准在预测任务时,将学习器预测结果与真实值进行比较,什么样的模型是好的不仅取决于算法核数据,还取决于任务需求,回归任务中常用的性能度量“均方误差”。

        错误率与精度错误率:分类错误在样本总数,精度分类正确的占样本的总数。常用的衡量标准。 

        查准率、查全率:面对不同问题,性能度量不同,例如。信息检索中,“检索出的信息中有多少比例是用户感兴趣的”即为“查准率”“用户感兴趣的信息有多少被检索出来了”即“查全率”。查准率与查全率是矛盾度量,所以一般会综合两方面考量学习器的好坏,找到最佳平衡点BEP(Break-Even Point)。衡点定义:查全率等于查准率时的取值。我们可以根据学习器的预测结果对样例排序,计算出当前的查准率、查全率,做查准率-查全率曲线,简称“P-R曲线”如果一个学习器的PR曲线包住了另一个,外面的较为好,如果有交叉,如A、B,可比较曲线下面积大小,但不容易估算,需综合考虑PR性能。引入平衡点(BEP),基于BEP比较,平衡点大的较好。当BEP判断不够准确时使用F1变量,本质上是P和R的调和平均。

        ROC与AUCROC曲线:用于研究综合考虑学习器在不同任务下“期望泛化性能”的好坏。现实中有限个测试样例仅能获得有限个坐标对绘制ROC,若一个学习器的ROC曲线被另一个包住,后者的性能能优于前者;若交叉,判断ROC曲线下的面积,即AUC。AUC:考虑的是样本预测的排序质量,因此它与排序误差有紧密联系。

        代价敏感错误与代价曲线:为权衡不同类型错误(有病判无病,无病判有病)所造成的不同损失,可为错误赋予“非均等代价”在非均等代价下ROC曲线不能直接反应出学习器的期望总体代价,以及其他性能度量如精度的代价敏感版本。所以需要“代价曲线”,如图。

绘图过程:ROC曲线每一点对应代价平面上一条线段设ROC曲线上点的坐标(FPR,TPR),计算FNR,绘制一条从(0,FPR)到(1,FNR)的线段,线段下的面积表示该条件下的期望总体代价,诸如此类,取所有线段的下界围成的面积为在所有条件下学习器的期望总体代价。

        比较检验:机器学习性能不能通过度量值直接比较。因为通过实验评估获得的是测试集的,两者对比结果未必相同。二是测试性能与测试集的选择有很大关系,最后机器学习的随机性,即便相同的初始参数经过训练后结果也不一定相同。“统计假设检验”为学习器性能比较提供重要依据给出如下检验方法:假设检验:“假设“是我们对学习器泛化错误率分布的猜想或判断。我们通过不同假设,基于假设检验结果可推断出学习器性能的比较。当我们做出多次重复留出法或交叉验证法进行训练/测试时,得出多个测试错误率:t检验。

        交叉验证t检验:基本思想:若两个学习器的性能相同,则使用相同的训练/测试集得到的测试错误率应相同。假设检验的前提:测试错误率均为泛化错误率的独立采样。k折交叉验证产生的K对测试错误率:先对每对结果求差,若两个学习器性能相同则差值均值应为0。因此根据差值对“学习器AB性能相同”做t检验,计算差值的均值和方差,在显著度确定条件下,判断变量是否小于临界值,若小于则无显著差别,否则可判断平均错误率较小的学习器性能较优。
因样本有限,加查验证不同轮次训练集有重叠,测试错误率实际上不独立,会导致过高估计假设成立的概率。

        McNemar检验通过考虑变量,服从自由度为1的分布,即标准正态分布变量的平方。给定显著度α,当以上变量值小于临界值时,认为两学习器性能没有显著差别;否则性能有显著差别。且平均错误率较小的那个学习器性能较优。
Friedman检验与Nemenyi后续检验。定义:Friedman检验是利用秩实现对多个总体分布是否存在显著差异的非参数检验方法。原始前提:当多个配对样本来自的多个总体分布无显著差异时。基于算法排序的Friedman检验用于:一组数据集上对多个算法进行比较:假定数据集比较,由好到差排序,并赋予序值1,2,……Friedman检验判断这些算法是否性能相同:性能相同,平均序值应当相同。若”所有算法的性能相同”这个假设被拒绝,说明算法的性能显著不同。

        Nemenyi检验计算出平均序值差别的临界值域,若两个算法的平均序值之差超出了临界值域,则以相应的置信度拒绝”两个算法性能相同”这一假设。

        偏差与方差:偏差-方差分解(bias-variance decomposition)就是用来解释学习算法泛化性能的一种工具,试图拆解期望泛化错误率。泛化误差可分解为偏差、方差与噪声之和。范化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。偏差和方差是有冲突的。训练不足时,拟合能力不强,由偏差主导泛化错误率;训练充足时,方差主导泛化错误率。

线性模型

        线性模型形式简单、易于建模,(如简单的二元一次方程线性函数,复杂的线性函数,多维变量与因变量的关系)却蕴涵着机器学习中的一些重要的基本思想。许多功能更为强大的线性模型可以在线性模型的基础上通过引入层级结构或者高维映射而得。 几种经典的线性模型(线性回归、对数几率回归、线性判别分析、多分类学习)

        1、线性回归:根据已有的数据确定一个函数然后预测,怎样衡量函数的准确度呢,均方误差是常用的,几何意义上是求得一条线使得所有的样本到直线的欧式距离之和最小,基于均方误差最小化进行模型求解的方法称为最小二乘法,以单变量为例f(x)=wx+b,求解w和b使得m代表有m个数据,通过使得所有数据误差就和最小的w,b就是所要求得的最佳参数。

将求解公式等于0可求得w和b的最优封闭解

由此多元线性回归的参数求解以同样的思路求解,多参数转为矩阵涉及到矩阵逆的计算,在不满秩的时候经常会出现不止一组解使得均方误差最小,涉及到选择偏好,处理时加入正则化。也可以使用线性回归的衍生物,即让得到的模型和另外的函数产生关系lny=wx+b,这其实是输入空间到输出的一个非线性预测,对数线性回归。

        2、对数几率回归:二分类任务的结果[0,1],而一般函数的输出是实值,单位阶跃函数以一定阈值划分类别。但是单位阶跃函数不连续不能直接作用于函数的输出对数几率函数常用的代替函数对数几率函数(在神经网络里有重要的作用)是一种sigmoid函数(S型函数)将z值转化为一个接近0或1的y值。使用最大似然估计的方法来计算出w和b两个参数的取值。

        3、线性判别分析:(LDA)经典的线性学习方法,基本思想是:将训练样本投影到一条直线上,使得同类的样例尽可能近,不同类的样例尽可能远。如图所示:

想让同类样本点的投影点尽可能接近,不同类样本点投影之间尽可能远,即:让各类的协方差之和尽可能小,不用类之间中心的距离尽可能大。基于这样的考虑,LDA定义了两个散度矩阵。如图:类内散度矩阵(越小越好) 类间散度矩阵(越大越好),最后得到了LDA的最大化目标:“广义瑞利商”

最优化求解w的问题,当求解出w后对新的样本进行分类时,只需将该样本点投影到这条直线上,根据与各个类别的中心值进行比较,从而判定出新样本与哪个类别距离最近。

        4、多分类学习:多分类的问题常常是使用差分策略,通过二分类学习来解决多分类问题,即将多分类问题拆解为多个二分类训练二分类学习器最后通过继承得到结果,最经典拆分策略有三种:“一对一”(OvO)、“一对其余”(OvR)和“多对多”(MvM),核心思想与示意图如下所示:

        1)OvO:给定数据集D假定其中有N个真实类别,将这N个类别进行两两配对(一个正类/一个反类),从而产生N(N-1)/2个二分类学习器,在测试阶段,将新样本放入所有的二分类学习器中测试,得出N(N-1)个结果,最终通过投票产生最终的分类结果。训练N个分类器,开销较大。
        2)OvM:给定数据集D假定其中有N个真实类别,每次取出一个类作为正类,剩余的所有类别作为一个新的反类,从而产生N个二分类学习器,在测试阶段得出N个结果若仅有一个学习器预测为正类,则对应的类标作为最终分类结果。优时也要考虑预置置信度的大小确定类别。
        3)MvM:给定数据集D假定其中有N个真实类别,每次取若干个类作为正类,若干个类作为反类(通过ECOC码给出编码),若进行了M次划分,则生成了M个二分类学习器,在测试阶段(解码),得出M个结果组成一个新的码,最终通过计算海明/欧式距离选择距离最小的类别作为最终分类结果。

        5、类别不平衡问题:指分类问题中不同类别的训练样本相差悬殊的情况,在分类是实际上是输出的y值是与一个阈值比较,y反应的是一个类别被划分的可能性大小,阈值是0.5表明正反两类结果可能性一致,一般情况下假设训练集无偏差的,因此观测几率就代表真实几率,则如果出现,则预测就为正例,但是预测其实依靠y/1-y是否大于来判断,这要求对预测值进行微调,即根据此公式判断是实际上是依靠,,但是此时依据假设样本绝对均匀,但是这种假设不成立,需要多样本尽可能处理,常见的处理这种问题的做法有三种:在训练样本较:

1)多的类别中进行“欠采样”(undersampling),使得正反接近再学习,常见的算法有:EasyEnsemble。
2)在训练样本较少的类别中进行“过采样”(oversampling),例如通过对反例中的数据进行插值,来产生额外的反例,常见的算法有SMOTE。
3)直接基于原数据集进行学习,对预测值进行“再缩放”处理。 再缩放也是代价敏感学习的基础。

决策树

       决策树-一种常见的机器学习方法,是一种简单但是广泛使用的分类器。通过训练数据构建决策树,可以高效的对未知的数据进行分类。通过对属性的选择划分形成一个树形的结构,最终对相似事物根据属性划分归类。决策数有两大优点:1)决策树模型可以读性好,具有描述性,有助于人工分析;2)效率高,决策树只需要一次构建,反复使用,每一次预测的最大计算次数不超过决策树的深度。

       决策树的构架是一个递归过程,三种情况导致递归返回,1)当前包含的样本属于同一类别,无须划分。2)当前属性集为空,或者所有属性取值相同,无法划分。3)当前节点包含的样本集为空不能划分。一个决策树包含了一个根节点,若干个内部节点和若干个叶节点。关键点在与选择划分的属性。这样的话,我们对于属性的选择就有了一个判定标准。再划分分支的时候,为了选择最优属性希望决策树的分支点所包含的样本尽可能属于同一类别,即纯度越来越高。划分评价准则一般有:1)信息熵:假设当前样本集D中第k类样本所占的比例为pk(k=1,2,...|y|)(类别数),则D的信息熵定义为

Ent(D)的值越小,D的纯度越高。

假设离散属性a有V个可能的取值那么使用a对样本集划分就会产生V个分支点,其中第v个分支点包含的D中所有在属性a上取值为a^v的样本记为Dv。计算Dv的信息熵考虑到不同的分支包含的样本数的不同给分支点赋予权重|Dv|/|D|。样本数越多的分支结点影响越大,计算公式为,

单纯的公式看着有点难理解可以看书中举例计算。

2)增益率:信息增益准则对可去值书目较多的属性有所偏好,造成泛化能力不足,为了减少这种影响,C4.5决策树算法不直接使用信息熵而是使用增益率

IV是属性a的固有值,属性a的取值书目愈多IV值通常越大,信息增益率对取值数较少的属性有所偏好。

3)基尼指数:CART决策树使用基尼指数来选则划分属性,简单来说就是随机抓取两个样本,这俩样本不是同一类的概率,因此越小越好表示数据集的纯度越高。

 拟合处理:算法通过回归处理分类问题常常会遇到过拟合与欠拟合的情况,决策树在处理此问题的时候有两种思路,一种是预剪枝一种是后剪枝。预剪枝就是在分支个数的时候就先判断一下是否要进行分支,寻要通过验证判断,但减少了决策树的训练开销和测试时间。后剪枝就是在生成决策树以后再由底向上的判断这个分支是否需要保留。一般来说、后剪枝的效果好,但是花费的时间要多。

样本属性值缺失集属性值连续处理:1)连续值处理:连续属性的离散化技术在此时派上了用场,连续值区间离散化,考察划分点。与离散值不同,若当前划分属性为连续属性值,该属性值还可以作为其后代节点的划分属性。2)缺失值处理:这种情况下解决两个问题(1)如何在属性缺失值的情况下进行划分属性选择,(2)给定划分属性若样本在该属性上的值缺失如何对样本进行划分。在属性值缺失的情况下那就用没有缺失的样本进行计算最后乘以权重作为整体样本的信息值。书例中样本17,属性不确实的是14个那么用有属性的14个样本计算信息熵,最后用权重14/17乘以14个样本的信息熵做个整体的信息熵。对于问题2若样本x在划分属性a上的取值已知,则将x划入与其值对应的字节点,且样本权值在字节点中保存为Wx,如样本x在划分属性a上的取值未知,则将x同时划入所有子节点。且样本权值在与属性a^v对应的字节点进行调整,直观的将就是让同一个样本以不同的概率划入到不同的子节点中去。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/697152
推荐阅读
相关标签
  

闽ICP备14008679号