《机器学习》第一、二、三章学习笔记

第一章:绪论

    例子:书本上用了一个实例引出了机器学习的思想,就是西瓜的选择:色泽青绿,根蒂蜷缩,敲声浊响的就是正熟的好瓜,这是我们人类靠自身的经验来判断的,但是如今计算机就可以帮我们的忙,计算机是怎么做到的呢?机器学习正是这样的一门学科,在计把经验算机系统中“经验”通常以“数据”的形式存在因此机器所研究的主要内容,是关于在计算机上从数据中产生“模型”的算法,即“学习算法”,有了学习算法,我们数据提供给它,它就能基于这些数据产生模型;在面对新的情况时,(列如看到已给没有剖开的西瓜),模型会给我们提供相应的判断(列如好瓜),如果说计算机科学是研究关于“算法”的学问,那么类似的,可以说机器学习是研究关于“学习算法”的学问。

   简单来说假定我们收集了一批西瓜的数据,列如(色泽=青绿;根蒂=蜷缩;敲声=浊响),(色泽=乌黑;根蒂=稍蜷;敲声=沉闷),(色泽=浅白;根蒂=硬挺;敲声=清脆),.......没对括号里面的都是一条记录,这些记录都可以当做计算机的学习的训练集,计算机通过学习这些训练集,可以得到一个好的“记住训练样本”的能力,然后判断新的数据进来的时候,计算机可以根据数据记录的特征,把新的西瓜归为好瓜或者坏瓜,这就是简单的机器学习的过程。

假设空间

但是我们就会发现一些问题,好瓜的标准是(色泽=青绿;根蒂=蜷缩;敲声=浊响),那问题就来了,是否3个条件都满足的才是好瓜呢还是满足2个条件就可以归为好瓜的范畴,这就是我们假设空间的问题,我们可以把学习过程看作一个在所有假设组成的空间中进行搜索的过程,搜索目标是找到与训练集匹配的假设,即能够将训练集中的西瓜判断正确的假设,假设的表示一但确定,假设空间极其规模大小就确实了,这里我们的假设空间由形如“(色泽=?;根蒂=?;敲声=?)”的可能取值所形成的假设组成,列如色泽有“青绿”,“乌黑”,“浅白”这三种可能的取值;还需要考虑到,也许“色泽”无论取什么值都合适,我们用通配符“*”来表示,列如“好瓜<--->(色泽=*;根蒂=蜷缩;敲声=浊响)”,或者“好瓜<--->(色泽=青绿;根蒂=*;敲声=浊响)”,又或者“好瓜<--->(色泽=青绿;根蒂=蜷缩;敲声=*)”,又或者“好瓜<--->(色泽=*;根蒂=蜷缩;敲声=*)”等等,可以有很多策略对这个假设空间进行搜索,这就是假设空间。

 

偏好问题

现在我们又面临一个问题,当有3个与训练集一致的假设,但它们对应的模型在面临新的样本的时候,却会产生不同的输出,列如(色泽=青绿;根蒂=蜷缩;敲声=浊响)这个新收来的瓜,如果我们采用的是“好瓜<--->(色泽=*)∧(根蒂=蜷缩)()敲声=*)” 那么将会被判断为好瓜,而如果采用其他的两种假设,则判断的结果将不是好瓜,那么应采用哪种模型呢?这就是归纳偏好的问题。

我们学习的算法必须是有某种偏好的,才能产生认为正确的模型,归纳偏好可看作学习算法自身在一个可能很庞大的假设空间中对假设镜子呢选择的启发式或价值观”,”奥卡姆剃刀是一种常用的,自然科学研究中最基本的原则,若有多个假设与观察一致,则选择最简单的那个”,然后用这个原则来给我们证明了对于什么是好瓜的两种假设,哪一更简单?这并不容易。然后证明无论学习算法多聪明,或者多笨拙,它们的期望性能竟然相同,来给我们说明了没有免费的午餐定理。

所以让我们意识到,脱离了具体的问题,空泛地谈论“什么学习算法更好”是毫无意义的,因为若考虑所有潜在的问题,则所有学习算法一样好,要谈论算法的相对优劣,必须要针对具体的学习问题,在某些问题上表现好的学习算法,在另一些问题上可能不尽人意,学习算法自身的归纳偏好与问题是否相配,往往会起到决定性的作用。

这样就给我们引出了机器学习的问题。

机器学习的发展历程

机器学习是人工智能研究发展到一定阶段的必然产物,从二十世纪五十年代,人工智能的研究发展中,机器学习就隐藏这发展了,到二十世纪七十年代机器学习被人们开始意识到机器学习的重要性,简单的说,就是由人们来把知识总结出来再教给计算机是相当困难的,于是一些学者想到,如果机器自己能够学习知识该有多好?此机器学习就出现在了人们的视线中,然后有F.rosenblatt的感知机,B.WidrowAdaline,P.Winston的“结构学习系统”,R.SMichalski等人的“基于逻辑的归纳学习系统”,E.B.Hunt等人的“概念学习系统”还有N.J.Nilson的“机器学习”,为机器学习这门学科打下了坚实的理论基础,然后到二十世纪八十年代机器学习成为了一个独立的学科领域,各种机器学习的技术百花初绽,在二十世纪八十年代“从样例中学习”的一大主流是符号注意学习,但是由于表现能力太强,直接导致学习过程面临的假设空间太大,复杂度极高,因此,问题规模稍大就难以有效的进行学习,九十年代中期后这方面的研究就相对陷入了低潮。

二十世纪九十年代中期,“统计学习”闪亮登场并迅速占据主流舞台,代表性技术是支持向量机又叫核方法,统计学习与连接主义学习有密切的联系,在支持向量机被普遍接受后,核技巧被人们用到了机器学习的几乎每一个角落,核方法也逐渐成为机器学习的基本内容之一。二十一世纪初,“深度学习”掀起了一股热潮,为机器学习技术走向工程实践带来了便利。

今天,在计算机的诸多分支学科领域中,无论是多媒体,图形学,还是网络通信,软件工程,乃至体系结构,芯片设计,都能找到机器学习技术的身影,尤其是在计算机视觉,自然语言处理等“计算机应用技术”领域,机器学习已经成为最重要的技术进步源泉之一。

第一章,模型评估与选择

经验误差与过拟合

经验误差:学习器的实际预测输出与样本的真实输出之间的差异称为“误差”,学习器在训练集上的误差称为“训练误差”或者“经验误差。

过拟合:学习器把训练样本学得“太好了”的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具备的一般性质,这样就会导致泛化性能下降,这种现象在机器学习中被称为“过拟合”,然而与过拟合想对应的就是“欠拟合”,这是指对训练样本的一般性质没有学好 ,一般而言,欠拟合比较容易克服,例如在决策树学习中扩大分支,在神经网络学习中增加训练的轮数等,而过拟合则很麻烦,所以过拟合是机器学习中的关键障碍。过拟合是不可避免的,我们只可以让它的影响尽可能的小。

评估方法:

  我们在训练学习器和测试学习器的时候我们的测试集和训练集该怎么办选取,这就是评估方法,通常我们假设测试样本是从赝本真实分布中独立同分布采样得来的,但需要注意的就是我们的训练集应该尽可能的与测试集互斥,即测试集不应该在训练集中出现过,未在训练样本中出现过。未达到这种更好的评估方法我们有三个方法来确定什么样的测试集和训练集的分布是好的。

(1)留出法:就是直接把我们的样本D分成两个部分,其中一个作为测试集,另一个作为训练集,最主要的要求是这两个部分中的样本不可以有交集。有两个需要注意的地方是1,训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终的结果造成影响。2,我们给定将样本分为两个部分的比例大概是训练集70%,测试集30%,,但是即便在给定训练/测试集的样本比例后,仍存在多种划分方式对初始数据集进行分割。因此。单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分,重复进行试验评估后取平均值作为留出法的评估结果。

 

(2)交叉验证法:最主要的思想是,先将数据集D划分为K个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性,即从数据集D中通过分层采样得到,然后每次用K-1个子集的并集作为训练集,余下的那个子集作为测试集,这样就可以获得K组训练/测试集,从而可进行K次训练和测试,最终返回的是这K个测试结果的均值。然而交叉验证法评估结果的稳定性和保真性在很大的程度上取决于K的取值,所以通常把交叉验证法称为“K折交叉验证”,K最常用的取值是1010折交叉验证法就是,把数据集D划分成10个互斥子集,我们又把每个子集划分为10个互斥子集,这样就把每一个子集中的前9份作为训练集,每个子集的最后一份作为测试集,然后把测试得的结果取平均在作为最后的结果,与留出法相似,将数据集D划分为K个子集同样存在多种划分方式,为减少因样本划分不同而引入的差别,K折交叉验证通常需要随机使用不同的划分重复P次,最终的评估结果是这PK折交叉验证结果的均值。

(3)自助法:自助法是一种可以减少训练样本规模不同造成的影响,又能比较高效地进行评估的方法,解决了之前两个方法的缺点,是相对较好的评估方法,它直接以自助采样法为基础每次都从数据集D中随机的取出一个样本拷贝到数据集D中,然后再把这一个样本放回数据集中,再重新从数据集D中随机的取出一个样本拷贝到数据集D中,然后再把这一个样本放回数据集中,如此重复这个动作m次,我们把D作为训练集,D/D’用作测试集 ,自助法在数据集较小,难以有效划分训练/测试集是很有用,此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处,然而自助法产生的数据集改变了初始数据集的分布,这回引入估计偏差,因此,在初始数据量足够的时候,留出法和交叉验证法更常用一些。

性能度量

   对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有很衡量泛化能力的评估标准,这就是性能度量。

  回归任务中最常见的性能度量是“均方误差”,然后分类任务中常用的性能度量有,错误率与精度,查准率,查全率与F1ROCAUC,最后就是代价敏感错误率与代价曲线

          错误率与精度:分类错误的样本总数对的比例为“错误率”,精度=1-错误率

          查准率:查准率=真正例/真正例+假正例(查准率高时查全率往往偏低)

查全率:查全率=真正例/真正例+假反例(查全率高时查准率往往偏低)

  F1F1=2*真正例/样例总数+真正例-真反例

  ROC:将排序好的样例按顺序把样本作为正例进行预测,每次计算出的两个重量的值,一个作为横坐标,一个作为纵坐标作图,得到的就是ROC曲线

性能度量  AUCROC曲线下面的面积就是AUC,用来判断ROC曲线的性能好坏。

代价敏感错误率:在不同的错误造成不同的结果下,每一类错误的代价加起来的平均数就是代价敏感错误率

代价曲线:横坐标是[0,1]的正例概率代价,纵坐标是[0,1]的归一代价,将ROC曲线上每个点的坐标计算出相应的每个FNR(假反例率),在代价平面上画出每一条从(0,FNR),(1,FNR)的线段,取所有线段的下界,围成的面积为期望总体代价,总面积的边界曲线局势代价曲线。

比较检验

机器学习中性能比较里面涉及了几个重要的因素:第一,我们希望比较的是泛化性能,然而通过实验评估的方法我们获得的是测试集上的性能,两者的比对结果可能未必相同;第二,测试集上的性能与测试集本身的选择有很大的关系,切不论使用不同大小的测试集会的到不同的结果,即便用相同大小的测试集,若包含的测试样例不同,测试结果也会不同;第三,很多机器学习算法本身有一定的随机性,即便使用相同参数设置在同一个测试集上多次运行,其结果也会不一样。所以我们要用适当的方法来对学习器的性能进行比较,

           假设检验:用二项分布和t分布来进行假设检验

           交叉验证t检验:若使用k折交叉验证法的得到的测试错误率,就用k折交叉验证法“成对t检验”

比较检验   McNemar检验:对于二分类问题,使用留出法不仅可估计学习器AB的测试错误率,还可获得两学习器分类结果的差别,

           Friedman检验:基于算法排序的检验

           Nemenyi检验:检验计算出平均序值差别的临界值域,用临界值域来检验 

第二章:线性模型

  线性模型的基本形式:线性模型是学得一个通过属性的线性组合来进行预测的函数,

     一般用向量形式表示:f(x)=wT x + b

线性模型形式简单,易于建模,但是却蕴涵着机器学习中一些重要思想,许多功能更为强大的非线性模型课在线性模型的基础上通过引入层级结构或高维映射而得,此外,由于w直观表达了各属性在预测中的重要性,因此线性模型有很好的可解释性。

   多元线性回归:f(xi) = wT xi + b ,使得f(xi)yi

这两种方法都可以用最小二乘法对wb进行估计,

对数线性回顾模型:ln y = wT x + b

  对数几率回归:

在二分类任务时,其输出标记y∈{0,1},而线性回归模型产生的预测值z=wT x + b是实值,于是我们将实值z转换0/1值,最理想的是“单位阶跃函数”,当z>0就判断为正例,z<0时判断为反例,z=0时任意判断。

因为跳跃函数不能直接用于是找了一个近似的可以单调可微的函数,“对数几率函数”:y = 1/(1+e-z)

对数几率函数是一种Sigmoid函数”,它将z值转化为一个接近01y值,并且其输出值在z=0附近变化很陡。正例y的可能性和反例1-y的可能性的比值就成为“几率”,ln(y/1-y)就是“对数几率”

实际上是在用线性回归模型的预测结果去逼近真实标记的对数几率,这个模型就称为“对数几率回归”,虽然它的名字是“回归”,实际上是一种分类学习方法,有很多的优点:

(1)它是直接对分类可能性进行建模,无需事先假设数据分布,这样就避免了假设分布不准确带来的问题,

(2)它不是仅预测出“类别”。二十课的到近似概率预测,这样对于许多需要利用概率预测辅助决策的任务很有用,

3)对数几率函数是任意阶可导的凸函数,有很好的数学性质,现有许多数值优化算法都可以直接用于求取最优解。

另一种方法就是我们还可以用“极大似然法”来估计wb

线性判别分析

   法将样例投影到一条直线上,使得同类样例的投射点尽可能接近,异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的这条线上,再根据投影点的位置来判断新的样本的类别。而欲使同样例的投影点尽可能接近,可以让同类样例投影点的协方差尽可能小,,而欲使异类样例的投影点尽可能远离,可以让类中心之间的距离尽可能的打,同时考虑两者,则可以得到欲最大化的目标,还可以从贝叶斯决策理论的角度来证明,当两类数据同先验,满足高斯分布且协方差相等时,LDA可达到最优分类。LDA也常被视为一种经典的监督降维技术。

多分类学习

多分类学习的基本思想是:“拆解法”,即将多分类任务拆分为若干个二分类任务求解,具体来说,先对问题进行拆分,然后为拆分的每个二分类任务训练一个分类器;在测试时,对这些分类器的预测结果进行集成以获得最终的多分类结果,这里的关键是如何对多分类任务进行拆分,以及如何对多个分类器进行集成,最经典的拆分策略有三种:(1)“一对一”,(2)“一对其余”,(3)“多对多”。

(1)一对一(OVO):给定数据集D={{x1,y1},{x2,y2},{x3,y3},...,{xm,yn}} ,yi{C1,C2,....,CN},OVO将这N个类别两两配对,从而产生NN-1/2个二分类任务,就是OVO将区分类别CiCj训练一个分类器,该分类器把D中的Ci类样例作为正例,Cj类样例作为反例,在测试阶段,新样本将同时提交给所有分类器,于是我们将的到NN-1/2个分类结果,最终结果可通过投票产生,即把被预测得最多的类别作为最终的分类结果。

(2)一对其余(OvR):OvR则是每次将一个类的样例作为正例,所有其他的样例作为反例来训练N个分类器,在测试时若仅有一个分类器测试预测为正类。则对应的类别标记作为最终分类结果,然而若有多个分类器预测为正类,则通常考虑各分类器的预测置信度,选择置信度最大的类别标记作为分类结果。

(3)多对多(MvM):MvM是每次将若干个类作为正类,若干个其他类作为反例,显然OvOOvRMvM的特例,MvM的正,反类构造必须有特殊的设计,不能随意选取,最常用的就MvM技术就是“纠错输出码”,纠错输出码有两步,编码和解码,纠错输出码编码越长,纠错能力越强,然而,编码越长,意味着所需训练的分类器越多,计算,存储开销都会增大,,另一方面,对有限类别数,可能的组合数目是有限的,码长超过一定范围后就失去意义,对同等码长的编码理论上来说,任意两个类别之间的编码距离越远,则纠错能力越强,因此在码长较小时可根据这个原则计算出理论最优编码,然而码长稍大一些就难以有效地确定最优编码,不过通常我们不需要获得理论最优编码,因为非最优编码在实践中往往已经能产生足够好的分类器,另一方面,并不是编码的理论性质越好,分类性能就越好,因为机器学习涉及很多困难的因素。

  类别不平衡问题:分类任务中不同类别的训练样例数目差别很大的情况。解决这个类别不平衡的问题的一个基本策略就是“再缩放”,就是把正例和反例的比值进行相应的缩放再计算结果。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值