机器学习

小结

Posted by Wwt on March 1, 2017

最近看了周志华所著的《机器学习》一书,决定将书上一些内容记录,以供后续学习,所以你如果看到书上原文,请不要惊讶。

引言

​ 在我们十几年的学生生涯中,我们从以往的学习经验知道,下足了功夫、弄清了概念、做好了作业,自然会取得好成绩。可以看出,我们能做出有效的判断,是因为我们积累了经验,而对经验的利用,就能对新的情况作出有效的决策。

​ 机器学习正是这样一门学科,它致力于研究如何通过计算手段,利用经验来改善系统自身的性能,在计算机系统中,“经验”通常以“数据”形式存在,因此机器学习所研究的主要的内容,是关于在计算机上从数据中产生“模型”的算法,即“学习算法”。有了学习算法,我们把经验数据提供给它,它就能基于这些数据产生模型;在面对新的情况(例如看到一个没剖开的西瓜),模型会给我们提供相应的判断(例如好瓜)。机器学习是研究关于“学习算法”的学问。

基本术语

​ 要进行机器学习,先要有数据。假定我们收集了一批关于西瓜的数据,例如(色泽=青绿;根蒂=蜷缩;敲声=浊响),(色泽=乌黑;根蒂=稍蜷;敲声=沉闷)·····每对括号内是一条记录,“=”意思是“取值为”。

​ 这组记录的集合称一个“数据集”,其中每条记录是关于一个事件或对象的描述,称为一个示例或“样本”。反映事件或对象在某方面的表现或性质的事项,例如“色泽”,“根蒂”,称为“属性”,“青绿”,“蜷缩”称为“属性值”。例如我们把“色泽”,“根蒂”,“敲声”作为三个坐标轴,则它们可以用一个描述西瓜三维空间,每个西瓜都可以在这个空间找到自己的坐标位置。由于空间中的每个点对应一个坐标向量,因此我们也把一个示例称为一个“特征向量”。

​ 从数据中学得模型的过程称为“学习”或“训练”,这个过程通过执行某个学习算法来完成。训练过程中使用的数据称为“训练数据”,其中每个样本称为一个“训练样本”,训练样本组成的集合称为“训练集”。学得模型对应了关于数据的某种潜在规律,因此亦称“假设”;这种潜在规律自身,则称为“真相”或“真实”,学习的过程就是为了找出或逼近真相。

​ 如果希望学得一个能够帮助我们判断没剖开的是不是“好瓜”的模型,仅有前面的示例数据显然是不够的。要建立这样的关于“预测”的模型,我们需要获得训练样本的“结果”信息,例如((色泽=青绿,根蒂=蜷缩,敲声=浊响),好瓜)。这里关于示例结果的信息,例如“好瓜”,称为“标记”;拥有了标记信息的示例,则称为“样例”。一般地,用$(x_i,y_i)$表示第i个样例,其中,$y_i∈Y$是示例$x_i$的标记,$Y$是所有标记的集合,亦称为“标记空间”或“输出空间”。

​ 若我们欲预测的是离散值,例如“好瓜”“坏瓜”,此类学习任务称为“分类”;若欲预测的是连续值,例如西瓜的成熟度0.95、0.37,此类学习任务称为“回归”。若只涉及两个类别的“二分类”任务,通常称其中一个类为“正类”,另外一个类为“反类”;涉及多个类别时,则称为“多分类”任务。一般地,预测任务是希望通过对训练集${(x_1,y_1),(x_2,y_2)····(x_i,y_i)}$进行学习,建立一个输入空间$X$到输出空间$Y$的映射$f:X→Y$.对于二分类任务,通常令$Y={-1,+1}$或{0,1};对多分类任务,$\mid Y \mid>2$;对回归任务,$Y=R,R$为实数集。

​ 学得模型后,使用其进行预测的过程称为“测试”,被预测的样本被称为“测试样本”。例如在学得f后,对测试样例x,可得到其预测标记$y=f(x)$。

​ 我们还可以对西瓜做“聚类”,即将训练集中的西瓜分成若干组,每组称为一个“簇”;这些自动形成的簇可能对应一些潜在的概念划分,例如“浅色瓜”“深色瓜”,甚至“本地瓜”“外地瓜”这样的学习过程有助于我们了解数据的内在规律,能为更深入地分析数据建立基础。

​ 根据训练数据是否拥有标记信息,学习任务可大致划分为两大类:“监督学习”和“无监督学习”,分类和回归是前者的代表,而聚类则是后者的代表。

假设空间

​ 我们可以把学习过程看作一个在所有假设组成的空间进行搜索的过程,搜索目标是找到与训练集“匹配”的假设,即能够将训练集中的瓜判断正确的假设。假设的表示一旦确定,假设空间及其规模大小就确定了。这里我们的假设空间由形如“(色泽=?)∧(根蒂=?)∧(敲声=?)”的可能取值所形成的假设组成。例如色泽有“青绿”“乌黑”“浅白”这三种可能取值;假设“好瓜↔(色泽=*)∧(根蒂=蜷缩)∧(敲声=浊响)”,即“好瓜是根蒂蜷缩,敲声浊响的瓜,什么色泽都行”。此外还要考虑极端情况:有可能“好瓜”这个概念根本不成立,世界上没有“好瓜”这种东西;我们用∅表示这种假设。这样“色泽””根蒂“敲声”分别有3、2、2种可能取值,则我们面临的假设空间规模大小为4×3×3+1=37.

归纳偏好

​ 任何一个有效的机器学习算法必有其归纳偏好,否则它将被假设空间中看似在训练集上“等效”的假设所迷惑,而无法产生确定的学习结果。可以想象,如果没有偏好,我们的西瓜学习算法产生的模型每次在进行预测时随机抽选训练集上的等效假设,那么对这个新瓜“(色泽=青绿,根蒂=蜷缩,敲声=沉闷)”,学得模型时而告诉我们它是好的,时而告诉我们它是不好的,这样学习显然没有意义。

​ 归纳偏好的作用在于下图这个回归学习图示中可能更直观。这里的每个训练样本是图中的一个点(x,y),要学得一个与训练集一致的模型,相当于找到一条穿过所以训练样本点的曲线。显然,对有限个样本点组成的训练集,存在着很多条曲线与其一致。我们的算法必须有某种偏好,才能产出它认为“正确”的模型。例如,若认为相似的样本应有相似的输出(例如,在各种属性上都很相像的西瓜,成熟程度应该比较接近),则对应的学习算法可能偏好下图中比较“平滑”的曲线A而不是比较“崎岖”的曲线B。

mc_1

​ 归纳偏好可看作学习算法自身在一个可能很庞大的假设空间中对假设进行选择的启发式或“价值观”。“奥卡姆剃刀”是一种常用的、自然科学研究中最基本的原则,即“若有多个假设与观察一致,则选最简单的那个”。

​ 事实上,归纳偏好对应了学习算法本身所作出的关于“什么样的模型更好”的假设。在具体的现实问题中,这个假设是否成立,计算法的归纳偏好是否与问题本身匹配,大多时候直接决定了算法能否取得好的性能。

过拟合与欠拟合

​ 我们实际希望的,是在新样本上能表现的很好的学习期。为达到这个目的,应该从训练样本中尽可能学出适用于所有潜在样本的“普遍规律”,这样才能在遇到新样本时做出正确的判别。然而,当学习器把训练样本学得“太好了”的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有一般性质,这样就会导致泛化性能下降。这种现象在机器学习中称为“过拟合”。与“过拟合”相对的是“欠拟合”,这是指对训练样本的一般性质尚未学好。过拟合是无法避免的,我们只能想办法缓解,或者说减小其风险。

线性判别分析

​ 线性判别分析(简称LDA)是一种经典的线性学习方法。LDA的思想非常朴素:给定训练集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别。

参考

周志华《机器学习》