机器学习游记

Posted johnvwan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习游记相关的知识,希望对你有一定的参考价值。

机器学习是目前信息技术中最激动人心的方向之一,其应用已经深入到生活的各个层面且与普通人的日常生活密切相关.

 

一.定义

正如我们人类根据过去的经验来判断明天的天气,购买适合自己的东西,做出有效的预判,那能不能让计算机帮助人类来实现这个呢?

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

机器学习教父Mitchell给出了一个形式化的定义,假设:

  • P:计算机程序在某任务类T上的性能。
  • T:计算机程序希望实现的任务类。
  • E:表示经验,即历史的数据集。

若该计算机程序通过利用经验E在任务T上获得了性能P的改善,则称该程序对E进行了学习。

 

二.基本术语

要进行机器学习,先要有数据。当下正值炎炎夏日,祛暑良品西瓜给我们带来丝丝清凉。假定我们收集了一批关于西瓜的数据,例如(色泽=青绿;根蒂=蜷缩;敲声=浊响),(色泽=乌黑;根蒂=稍蜷;敲声=沉闷),(色泽=浅白;根蒂=硬挺;敲声=清脆),.......,每对括号内是一条记录,“=”意思是“取值为”。

这组记录的集合称为一个"数据集" (data set) ,其中每条记录是关于一个事件或对象(这里是一个西瓜)的描述,称为一个"示例" (instance) 或"样本" (sample)。 反映事件或对象在某方面的表现或性质的事项,例如"色泽"、"根蒂"、 "敲声",称为"属性" (attribute) 或"特征" (feature);属性上的取值,例如"青绿"、 "乌黑",称为"属性值" (attribute value)。属性张成的空间称为"属性空间" (attribute space) 、"样本空间" (sample space) 或"输入空间"。例如我们把"色泽" 、"根蒂"、 "敲声"作为三个坐标轴,则它们张成一个用于描述西瓜的三维空间,每个西瓜都可在这个空间中找到自己的坐标位置。由于空间中的每个点对应一个坐标向量,因此我们也把一个示例称为一个"特征向量" (feature vector)。

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

如果希望学得一个能帮助我们判断没剖开的是不是"好瓜"的模型,仅有前面的示例数据显然是不够的。要建立这样的关于"预测" (prediction)模型,我们需获得训练样本的"结果"信息,例如" ((色泽:青绿;根蒂二蜷缩;敲声=浊响),好瓜)" .这里关于示例结果的信息,例如"好瓜",称为"标记" (label); 拥有了标记信息的示例,则称为"样例" (example). 若我们欲预测的是离散值,例如"好瓜" "坏瓜",此类学习任务称为"分类" (classification); 若欲预测的是连续值?例如西瓜成熟度 0.95 0.37此类学习任务称为"回归" (regression). 对只涉及两个类别的"二分类" (binary cl sification) 任务,通常称其中一个类为 "?类" (positive cl甜的?另一个类为"反类" (negative class); 涉及多个类别时,则称为"多分类" (multi-class classificatio叫任务。学得模型后,使用其进行预测的过程称为"测试" (testing) ,被预测的样本称为“测试样本" (testing sample). 例如在学得 f后,对测试例x,可得到其预测标记y= f(x)。还可以对西瓜做"聚类" (clustering) ,即将训练集中的西瓜分成若干组,每组称为 个"簇" (cluster); 这些自动形成的簇可能对应一些潜在的概念划分,例如"浅色瓜" "深色瓜”,甚至“本地瓜”、“外地瓜”。这样的学习过程有助于我们了解数据内在的规律?能为更深入地分析数据建立基础.需说明的是,在聚类学习中,"浅色瓜" "本地瓜"这样的概念我们事先是不知道的,而且学习过程中使用的训练样本通常不拥有标记信息。根据训练数据是否拥有标记信息,学习任务可大致划分为两大类"监督学习" (supervised learning) 和"无监督学习" (unsupervised learning) ,分类和回归是前者的代表,而聚类则是后者的代表。

需注意的是,机器学习的目标是使学得的模型能很好地适用于"新样本",而不是仅仅在训练样本上工作得很好;即便对聚类这样的无监督学习任务,我们也希望学得的簇划分能适用于没在训练集中出现的样本.学得模型适用于新样本的能力,称为"泛化" (generalization) 能力.具有强泛化能力的模型能很好地适用于整个样本空间.于是,尽管训练集通常只是样本需间的一个很小的采样,我们仍希望它能很好地反映出样本空间的特性,否则就很难期望在训练集上学得的模型能在整个样本空间上都工作得很好.通常假设样本空间中全体样本服从 个未知"分布" (distribution)D, 我们获得的每个样本都是独立地从这个分布上采样获得的,即"独立同分布" (independent and identically distributed ,简称 i.i.d.). 一般而言,训练样本越多,我们得到的关于D的信息越多,这样就越有可能通过学习获得具有强泛化能力的模型。

 

三.假设空间

归纳(induction) 与横绎(deduction)是科学推理的两大基本手段。前者是从特殊到一般的"泛化" (generalization) 过程,即从具体的事实归结出一般性规律;后者则是从一般到特殊的"特化" (specializatio叫过程,即从基础原理推演出具体状况。例如,在数学公理系镜中,基于一组公理和推理规则推导出与之相洽的定理,这是演绎;而"从样例中学习"显然是一个归纳的过程?因此亦称"归纳学习" (inductive learning) 。归纳学习有狭义与广义之分?广义的归纳学习大体相当于从样例中学习,而狭义的归纳学习则要求从训练数据中学得概念(concept) ,因此亦称为"概念学习"或"概念形成"概念学习技术目前研究、应用都比较少,因为要学得泛化性能好且语义明确的概念实在太困难了,现实常用的技术大多是产生"黑箱"模型.然而,对概念学习有所了解,有助于理解机器学习的一些基础思想。

概念学习中最基本的是布尔概念学习,即对"是"、 "不是"这样的可表示为0/1 布尔值的目标概念的学习。举一个简单的例子,假定我们获得了这样一个训练数据集(表1):

技术分享图片

这里要学习的目标是"好瓜"暂且假设"好瓜"可由"色泽" "根蒂""敲声"这三个因素完全确定。换言之,只要某个瓜的这三兰个属性取值明确了?我们就能判断出它是不是好瓜.于是?我们学得的将是"好瓜是某种色泽、某种根蒂、某种敲声的瓜"这样的概念‘用布尔表达式写出来则是"好瓜忡(色=?η) 八(根蒂=7η) ^ (敲声=?)",这里”?“表示尚未确定的取值,而我们的任务就是通过对表1的训练集进行学习,把”?“确定下来。

可能马上发现,表1 第一行: " (色泽=青绿)八(根蒂:蜷缩)八(敲声=浊响)"不就是好瓜吗?是的,但这是一个己见过的瓜,别忘了我们学习的目的是"泛化"?即通过对训练集中瓜的学习以获得对没见过的瓜进行判断的能力.如果仅仅把训练集中的瓜"记住",今后再见到一模一样的瓜当然可判断,但是,对没见过的瓜,例如"(色泽=浅白) ^ (根蒂=蜷缩) ^ (敲声=浊晌)"怎么办呢?

我们可以把学习过程看作一个在所有假设(hypothesis) 组成的空间中进行搜索的过程,搜索目标是找到与训练集"匹配"但t) 的假设,即能够将训练集中的瓜判断正确的假设.假设的表示一旦确定,假设空间及其规模大小就确定了.这里我们的假设空间由形如"(色泽=?)八(根蒂=?) ^ (敲声=?)"的可能取值所形成的假设组成.例如色泽有"青绿" "乌黑" "浅白"这三种可能取值;还需考虑到,也许"色泽"无论取什么值都合适,我们用通配符"*"来表示,例如"好瓜件(色泽= *) ^ (根蒂口蜷缩)八(敲声=浊响)" ,即"好瓜是根蒂蜷缩、敲声浊响的瓜,什么色泽都行"此外,还需考虑极端情况:有可能"好瓜"这个概念根本就不成立,世界上没有"好瓜"这种东西;我们用 表示这个假设.这样,若"色泽" "根蒂" "敲声"分别有 种可能取值,则我们面临的假设空间规模大小为 x 3 x 3 + 1 = 37. 图1. 直观地显示出了这个西瓜问题假设空间。

技术分享图片

可以有许多策略对这个假设空间进行搜索,例如自顶向下、从一般到特殊,或是自底向上、从特殊到一般,搜索过程中可以不断删除与正例不一致的假设、和(或)与反例→致的假设.最终将会获得与训练集一致(即对所有训练样本能够进行正确判断)的假设,这就是我们学得的结果。需注意的是,现实问题中我们常面临很大的假设空间?但学习过程是基于有限样本训练集进行的,因此,可能有多个假设与训练集一致,即存在着一个与训练集一致的"假设集合",我们称之为"版本空间" (version space). 例如,在西瓜问题中,与表1. 训练集所对应的版本空间如图1. 所示.

技术分享图片

三.假设空间

通过学习得到的模型对应了假设空间中的一个假设.于是,图1. 的西瓜版本空间给我们带来一个麻烦:现在有三个与训练集一致的假设,但与它们对应的模型在面临新样本的时候,却会产生不同的输出.例如,对(色泽口青绿;根蒂=蜷缩;敲声=沉闷)这个新收来的瓜,如果我们采用的是"好瓜村(色泽= *)八(根蒂=蜷缩)八(敲声=*)",那么将会把新瓜判断为好瓜,而如果采用了另外两个假设,则判断的结果将不是好瓜.那么,应该采用哪一个模型(或假设)昵?

若仅有表1. 中的训练样本,则无法断定上述三三三个假设中明哪一个"更好然而,对于一个具体的学习算法而言?它必须要产生一个模型.这时,学习算法本身的"偏好"就会起到关键的作用.例如,若我们的算法喜欢"尽可能特殊"的模型,则它会选择"好瓜件(色泽= *)八(根蒂=蜷缩)八(敲声=浊晌)" ; 但若我们的算法喜欢"尽可能一般"的模型,并且由于某种原因它更"相信"根蒂,则它会选择"好瓜件(色泽= *) ^ (根蒂=蜷缩)八(敲声= *)" .机器学习算法在学习过程中对某种类型假设的偏好,称为"归纳偏好" (inductive bias) , 或简称为"偏好"。

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

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

技术分享图片

归纳偏好可看作学习算法自身在一个可能很庞大的假设空间中对假设进行选择的启发式或"价值观"那么,有没有一般性的原则来引导算法确立"正确的"偏好呢? "奥卡姆剃刀" (Occam‘s razor) 是一种常用的、自然科学研究中最基本的原则,即"若有多个假设与观察一致,则选最简单的那个"如果采用这个原则,并且假设我们认为"更平滑"意味着"更简单" (例如曲线更易于描述,其方程式是 = _X2 + 6x + ,而曲线 则要复杂得多) ,则在图1. 中我们会自然地偏好"平滑"的曲线 A.

然而,奥卡姆剃刀并非唯一可行的原则.退一步说,即使假定我们是奥卡姆剃刀的铁杆拥走,也需注意到,奥卡姆剃刀本身存在不同的诠释,使用奥卡姆剃刀原则并不平凡.例如对我们已经很熟悉的西瓜问题来说,"假设 1: 好瓜件(色泽= *) ^ (根蒂=蜷缩)八(敲声=浊响)"和假设 2: "好瓜件(色泽= *) ^ (根蒂=蜷缩)八(敲声= *)"这两个假设,哪一个更"简单"呢?这个问题并不简单,需借助其他机制才能解决.

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

 让我们再回头看看图1.3. 假设学习算法 Zα 基于某种归纳偏好产生了对应于曲线 的模型,学习算法 ~b 基于另一种归纳偏好产生了对应于曲线 的模型.基于前面讨论的平滑曲线的某种"描述简单性"?我们满怀信心地期待算法乌比岛更好.确实,图1.4(a) 显示出?与 相比, 与训练集外的样本更一致;换言之, 的泛化能力比 强.

技术分享图片

但是,且慢!虽然我们希望并相信乌比马更好,但会不会出现图1.4(b)情况:与 相比, 与训练集外的样本更一致?

很遗憾,这种情况完全可能出现.换言之,对于一个学习算法鸟,若它在某些问题上比学习算法岛好,则必然存在另一些问题,在那里岛比 2α 好.有趣的是,这个结论对任何算法均成立,哪怕是把本书后面将要介绍的一些聪明算法作为乌而将"随机胡猜"这样的笨拙算法作为乌.惊讶吗?让我们看看下面这个简短的讨论:

为简单起见,假设样本空间 和假设空间组都是离散的.令 P(hIX,‘ca)代表算法乌基于训练数据 产生假设 的概率,再令 代表我们希望学习的真实目标函数 ‘c 的"训练集外误差",即鸟在训练、集之外的所有样本上的误差为

技术分享图片

考虑二分类问题,且真实目标函数可以是任何函数 {O l} ,函数空间{O l}IXI. 对所有可能的 按均匀分布对误差求和,有

技术分享图片

式(1. 2) 显示出,总误差竟然与学习算法无关!对于任意两个学习算法乌和鸟,我们都有

技术分享图片

也就是说,无论学习算法乌多聪明、学习算法鸟多笨拙,它们的期望性能竟然相同!这就是"没有免费的午餐"定理

既然所有学习算法的期望性能都跟随机胡猜差不多,那还有什么好学的?

我们需注意到, NFL 定理有一个重要前提:所有"问题"出现的机会相同、或所有问题同等重要.但实际情形并不是这样.很多时候,我们只关注自己正在试图解决的问题(例如某个具体应用任务),希望为它找到一个解决方案,至于这个解决方案在别的问题、甚至在相似的问题上是否为好方案,我们并不关心.例如,为了快速从 地到达 地,如果我们正在考虑的 地是南京鼓·楼、 地是南京新街口,那么"骑自行车"是很好的解决方案;这个方案对地是南京鼓楼、 地是北京新街口的情形显然很糟糕,但我们对此并不关心.

事实上,上面 NFL 定理的简短论述过程中假设了 的均匀分布,而实际情形并非如此.例如,回到我们熟悉的西瓜问题,考虑{假设 1: 好瓜件(色泽= *) 八(根蒂=蜷缩)八(敲声=浊响)}和{假设 2: 好瓜村(色泽= *) ^ (根蒂=硬挺)^ (敲声:清脆)}.从 NFL 定理可知,这两个假设同样好.我们立即会想到符合条件的例子,对好瓜(色泽=青绿;娘蒂=蜷缩;敲声=浊响)是假设 更好,而对好瓜(色泽=乌黑;根蒂=硬挺;敲声=清脆)则是假设 更好.看上去的确是这样.然而需注意到, " (根蒂=蜷缩;敲声=浊晌)"的好瓜很常见,而"(根蒂:硬挺;敲声 清脆)"的好瓜罕见,甚至不存在。

所以, NFL 走理最重要的寓意?是让我们清楚地认识到,脱离具体问题,空泛地谈论"什么学习算法更好"毫无意义,因为若考虑所有潜在的问题,贝。所有学习算法都一样好.要谈论算法的相对优劣,必须要针对具体的学习问题;在某些问题上表现好的学习算法,在另一些问题上却可能不尽如人意,学习算法自身的归纳偏好与问题是否相配,往往会起到决定性的作用。

以上是关于机器学习游记的主要内容,如果未能解决你的问题,请参考以下文章

机器学习资料《分布式机器学习算法理论与实践》+《白话机器学习算法》+《Python机器学习基础教程》

机器学习:机器学习工作流程

一文读懂什么是机器学习--1. 机器学习是什么?

机器学习机器学习的经典算法

机器学习基础教程笔记---机器学习概述

机器学习基础教程笔记---机器学习概述