《机器学习》周志华西瓜书学习笔记(一):机器学习概述

【机器学习】《机器学习》周志华西瓜书 笔记/习题答案 总目录html

——————————————————————————————————————————————————————git

绪论

什么是“机器学习”?

傍晚小街路面上沁出微雨后的湿润,和熙的细风吹来,抬头看看天边的晚霞,嗯,明天又是一个好天气。走到水果摊旁,挑了个根蒂蜷缩、敲起来声音浊响的青绿西瓜,一边满心期待着皮薄肉厚瓢甜的爽落感,一边愉快地想着,这学期狠下了工夫,基础概念弄得清清楚楚,算法做业也是信手拈来,这门课成绩必定差不了!github

正如咱们根据过去的经验来判断明天的天气,吃货们但愿从购买经验中挑选一个好瓜,那能不能让计算机帮助人类来实现这个呢?机器学习正是这样的一门学科,人的“经验”对应计算机中的“数据”,让计算机来学习这些经验数据,生成一个算法模型,在面对新的状况中,计算机便能做出有效的判断,这即是机器学习web

对于机器来讲,经验是经过数据传达的。机器学习的主要研究内容就是从数据中产生模型的算法,也即学习算法。Mitchell给出一个更为形式化的定义,假设:算法

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

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

在本书中,模型泛指全部从数据中学得的结果,在别的文献中,也有对模型模式做出区分的,模型指学得的全局性结果(好比一棵决策树),模式指学得的局部性结果(好比一条规则)。app

基本概念

要进行机器学习,首先要有数据,咱们能够收集一组结构相同的记录,这组记录的集合就称为数据集。好比下面这个西瓜数据集:机器学习

编号 色泽 根蒂 敲声
001 青绿 蜷缩 浊响
002 乌黑 稍蜷 沉闷
003 浅白 硬挺 清脆

接下来给出一些基本概念的定义:ide

示例(instance),样本(sample)

数据集中的每条记录是对一个事件或对象(好比这里的西瓜)的描述,称为一个示例或者样本svg

特别地,有时会把整个数据集称为一个样本,由于数据集能够看做是从样本空间中抽样所得,这时候就须要根据上下文信息来进行判断了。

属性(attribute),特征(feature),属性值(attribute value)

反映事件或对象在某方面的表现或性质的事项,并由此能够进行区分,例如“色泽”、“根蒂”、“敲声”,称为属性或者特征。这些属性上的取值,例如“青绿”、“乌黑”、“浅白”,称为属性值

属性空间(attribute space),样本空间(sample space),输入空间,特征向量(feature vector)

由属性张成的空间称为属性空间样本空间或者输入空间,比方说上面的表格中有3个属性 “色泽”、“根蒂”、“敲声”,咱们能够把它们做为三个坐标轴张成一个用于描述西瓜的3维空间,每一个西瓜均可以用空间中的一个点来表示,这个点对应于一个坐标向量,因此有时也把一个示例称为一个特征向量

维数(dimensionality)

即数据集中每一个样本拥有的特征数目,称为维数。该西瓜的例子维数为3,当维数很是大时,也就是如今说的“维数灾难”。

学习(learning),训练(training),训练数据(training data),训练样本(training sample),训练示例(training instance),训练例,训练集(training set)

从数据中得到模型的过程称为学习训练。在这个过程当中使用的数据称为训练数据,里面的每一个样本称为一个训练样本,也称训练示例训练例,训练样本的集合就是训练集

模型(model),学习器(learner),假设(hypothesis),真相/真实(ground-truth)

模型有时也称为学习器,能够看做一组参数的有序集合,可以把属性空间映射到输出空间上,也能够看作学习算法在给定数据和参数空间上的实例化。学得模型对应了关于数据的某种潜在的规律,所以称为假设。这种潜在规律自身称为真相真实,学习过程就是为了找出或逼近真相

——————————————————————————————————————————————————————

若是咱们但愿经过机器学习来实现预测(prediction),那么只有样本是不够的,要让机器明白怎样的样本会产生怎样的结果,还须要为每一个样本设置标记,标记有多是离散值(分类任务),也多是连续值(回归任务)。

带标记的数据集以下:

编号 色泽 根蒂 敲声 标记
001 青绿 蜷缩 浊响 好瓜
002 乌黑 稍蜷 沉闷 坏瓜
003 浅白 硬挺 清脆 坏瓜

标记(label),样例(example),标记空间(label space),输出空间

标记指示的是对象的类别或者事件的结果,例如“好瓜”。样本和标记组合起来就是样例。全部标记的集合称为标记空间,也称为输出空间

分类(classification),回归(regression),聚类(clustering)

根据预测值的不一样,能够把任务分为几种不一样的类别。若预测的是离散值,好比“好瓜”,“坏瓜”,则该任务称为分类任务;若预测的是连续值,好比瓜的重量,则该任务称为回归任务;还有一种聚类任务,旨在基于某种度量将样本分为若干个簇(cluster),使得同一簇内尽可能类似,不一样簇间尽可能相异。聚类任务不须要对样本进行标记。

特别地,只涉及两种类别的分类任务称为二分类任务(binary classification),一般称一个类为正类(positive class),另外一个类为反类或者负类(negative class)。涉及到多个类别的分类任务就称为多分类任务(multi-class classification)。

测试(testing),测试样本(testing sample),测试示例(testing instance),测试例

学得模型后,使用模型进行预测新样本的这个过程称为测试测试中使用到的样本称为测试样本,也称测试示例测试例

监督学习(supervised learning),无监督学习(unsupervised learning)

根据训练样本是否拥有标记信息,学习任务能够大体划分为两大类:须要标记的监督学习,不须要标记的无监督学习。前者的表明是回归分类,后者的表明是聚类

须要注意的是,机器学习的目标是使学得的模型能很好地适用于“新样本”,而不是仅仅在训练样本上工做得很好;即便在聚类这样的无监督学习任务,咱们也但愿学得的簇划分能适用于没在训练集中出现的样本。

泛化(generalization)能力

学得模型适用于新样本的能力就称为泛化能力,具备强泛化能力的模型可以更好地适用于整个样本空间

独立同分布(independent and identically distributed)

通常来讲,训练集只占样本空间的不多一部分,咱们仍但愿它可以很好地反映整个样本空间的特性,不然就很难指望在训练集上学得的模型能在整个样本空间中都工做得很好。一般假设样本空间中的全体样本都服从于一个未知分布(distribution) D D ,咱们得到的每一个样本都是地从这个分布上采样得到的,即独立同分布(independent and identically distributed,简称 i . i . d . i.i.d. )。通常而言,训练样本越多,咱们获得的关于 D D 的信息越多,越能反映该分布的特性,这样就越有可能经过学习得到具备强泛化能力的模型。

假设空间

相似由样本构成的样本空间和由标记构成的标记空间,全部的假设共同构成了假设空间。咱们能够把学习过程看做是一个在全部假设组成的空间中进行搜索的过程,搜索目标是找到与训练集**匹配(fit)**的假设,即可以在训练集中的瓜判断正确的假设。

假设空间的规模有多大呢?举个例子,样本空间维度是3,也即每一个样本由3个特征来表示。这三个属性可能的取值分别为3,3,3。那么假设空间的规模就是 4 × 4 × 4 + 1 = 65,为何呢?

由于除了可能的取值以外,还须要考虑到,也许“色泽”不管取什么值都合适,咱们用通配符 * 来表示,例如“好瓜< - - - > (色泽= * ) 并集 (根蒂=蜷缩) 并集 (敲声=浊响)”,即好瓜是根蒂蜷缩,敲声浊响的瓜,什么色泽都行,此外,还须要考虑极端状况:有可能好瓜这个概念根本就不成立,世界上没有好瓜这种东西,咱们用 \varnothing 假设,比方说,前面的假设都是假设怎样的瓜会是好瓜,而 \varnothing 假设 则对应于好瓜根本不存在。

有时候会出现多个假设都能匹配训练集的情形,即存在着一个与训练集一致的假设集合,咱们称之为版本空间(version space)。版本空间是假设空间的子空间。有不少策略能够对这个假设空间进行搜索,不断删除与正例不一致的假设、和(或)与反例一致的假设。

概括偏好

经过学习获得的模型对应了假设空间中的一个假设。因此对于学习算法来讲,要产生一个模型就意味着要从版本空间中挑选出一个假设。可是版本空间中的假设都和训练集一致,没法直接判定哪个假设更好,然而对于一个具体的学习算法而言,它必需要产生一个模型,这时候学习算法的概括偏好,简称偏好就会起到关键的做用。

注意区分偏好特征选择,前者是基于某种领域知识而产生的,后者则是基于对训练样本的分析进行的。

偏好指的是,在多个假设等效时,学习算法会认为某一种假设更优,并选择这种假设来创建最终的模型。若是一个学习算法没有偏好,比方说每次随机地从版本空间中选择一个假设,则它所给出的结果是时好时坏,自相矛盾的。因此任何一个有效的学习算法都应当有本身的概括偏好

概括偏好可看做学习算法自身在一个可能很庞大的假设空间中对假设进行选择的启发式或价值观,那么有没有通常性的原则来引导算法确立“正确性”偏好呢?一个经常使用的天然科学研究中最基本的原则是奥卡姆剃刀(Occam’s razor),用一句话概述就是:如有多个假设与观察一致,则选最简单的那个。注意,奥卡姆剃刀并非惟一的准则,而且如何诠释“最简单”也是待考虑的,由于奥卡姆剃刀自己存在不一样的诠释,使用奥卡姆剃刀原则并不平凡。

给定基于某种概括偏好的算法产生的模型A和基于另外一种概括偏好的算法产生的模型B,有a时咱们会注意到,A和B在不一样的样本集上的表现各有好坏,有时候A的效果更好,有时候B的效果更好。甚至一个随机产生的模型都有可能在某个样本集上表现得优于咱们精心设计的算法所产生的模型。怎样去定位这个问题呢?

在这里插入图片描述
在这里插入图片描述

书中使用NFL定理(No Free Lunch Theorem)来解答了这个问题,有一个关键点就是总偏差与学习算法无关,以下:

在这里插入图片描述

解析:
在这里插入图片描述
南瓜书——https://datawhalechina.github.io/pumpkin-book/#/

当咱们考虑样本空间的全部可能分布,并认为它们都以相同的几率出现或同等重要时,不管使用什么模型,形成的总偏差都是相同的,指望性能是相同的,与学习算法无关!

可是现实中并非这样的,咱们只考虑样本空间服从同一种分布的情形。打个比方,模型A是精心设计的算法产生的,模型B则简单地设定为把任何样本预测为负类。那么对于按照样本分布抽样所得的测试集,模型A效果会比B好;可是若是只抽取负类样本做为测试集,则模型B优于A。显然这种状况下模型B没有任何意义,由于咱们根本就不care全是负类这种分布!

因此说,NFL定理最重要的寓意,是让咱们清楚地意识到,脱离具体问题,空泛地谈论“什么学习算法最好”毫无心义,由于若考虑全部潜在的问题,则全部学习算法都同样好。要谈论算法的相对优劣,必需要针对具体的学习问题! 学习算法自身的概括偏好和问题是否相配,每每会起到决定性的做用。

其它

关于发展历程和应用情况,属于阅读材料,因此这里不做详细的笔记了。这个小节再补充一点其余内容。

概括(induciotn)演绎(deduction) 是科学推理的两大基本手段,前者是从特殊到通常的泛化(generalization) 过程,即从具体的事实归结出通常性规律;后者则是从通常到特殊的**特化(specialization)**过程,即从基础原理推演出具体情况。举个例子:

演绎

在数学公理系统中,基于一组公理和推理规则推导出与之相洽的定理,这是演绎。

概括

“从样例中学习”显然是一个概括的过程,所以亦称之为概括学习(inductive learning)。

概括学习

概括学习有广义和狭义之分。广义上的概括学习大致上至关于从样例中学习;而狭义上的概括学习则要求不只从样例中学习,还要求从训练数据中学得概念(concept),所以也称为概念学习概念造成。概念学习技术目前应用和研究都比较少,由于要学得泛化性能好且语义明确的概念实在太困难了,现实经常使用的技术大多都是产生黑箱模型,难以明白学得的是什么,只知道它确实有用。

发展历程

机器学习是人工智能(artificial intelligence)研究发展到必定阶段的必然产物。

简要带过如下概括学习(广义)的几大主流技术,在二十世纪八十年代,"从样例中学习"的一大主流是符号主义学习,其表明包括决策树(decision tree)和基于逻辑的学习

典型的决策树学习以信息论为基础,以信息熵的最小化为目标,直接模拟了人类对概念进行断定的树形流程。决策树学习技术因为简单易用,到今天还是最经常使用的机器学习技术之一.。ILP 具备很强的知识表示能力,能够较容易地表达出复杂数据关系,并且领域知识一般可方便地经过逻辑表达式进行描述。然而,成也萧何、败也萧何,因为表示能力太强,直接致使学习过程面临的假设宅间太大、复杂度极高。所以,问题规模稍大就难以有效进行学习,九十年代中期后这方面的研究相对陷入低潮。

二十世纪九十年代中期以前,“从样例中学习"的另外一主流技术是基于神经网络的链接主义学习。链接主义学习在二十世纪五十年代取得了大发展,但由于早期的不少人工智能研究者对符号表示有特别偏心,例如图灵奖得主ESimon 曾断言人工智能是研究"对智能行为的符号化建模”,因此当时链接主义的研究未被归入主流人工智能研究范畴。尤为是链接主义自身也遇到了很大的障碍,正如图灵奖得主M. Minsky 丰11 S. Papert 在1969 年指出, (当时的)神经网络只能处理线性分类,甚至对"异或"这么简单的问题都处理小了。1983 年,J. J. Hopfield 利用神经网络求解"流动推销员问题"这个著名的NP 难题取得重大进展,使得链接主义从新受到人们关注。1986 年, D. E. Rumelhart 等人从新发明了著名的BP 算法,产生了深远影响.与符号主义学习能产生明确的概念表示不一样,链接主义学习产生的是"黑箱"模型,所以从知识获取的角度来看,链接主义学习技术有明显弱点;然而,因为有BP 这样有效的算法,使得它能够在不少现实问题上发挥做用。事实上,BP 一直是被应用得最普遍的机器学习算法之一。链接主义学习的最大局限是其"试错性’p;简单地说其学习过程涉及大量参数,而参数的设置缺少理论指导,主要靠于工"调参"夸张一点说,参数调节上失之毫厘,学习结果可能谬以千里。

二十世纪九十年代中期"统计学习" (statistical learning) 闪亮登场并迅速占据主流舞台,表明性技术是支持向量机(Support Vector Machine,简称SVM) 以及更通常的"核方法" (kernel methods)。直到九十年代中期统计学习才开始成为机器学习的主流,一方面是因为有效的支持向量机算法在九十年代初才被提出,其优越性能到九十年代中期在文本分类应用中才得以显现;坤一方面,正是在链接主义学习技术的局限性凸显以后,人们才把目光转向了以统计学习理论为直接支撑的统计学习技术.事实上,统计学习与链接主义学习有密切的联系.在支持向量机被广泛接受后,核技巧(kernel trick) 被人们用到了机器学习的几乎每个角落,核方法也逐渐成为机器学习的基本内容之一。

有趣的是二十一世纪初,链接主义学习又卷土重来,掀起了以"深度学习"为名的热潮。所谓深度学习,狭义地说就是"不少层"的神经网络。在若干测试和竞赛上,尤为是涉及语音、图像等复杂对象的应用中,深度学习技术取得了优越性能.以往机器学习技术在应用中要取得好性能,对使用者的要求较高;而深度学习技术涉及的模型复杂度很是高,以致于只要下工夫"调参把参数调节好,性能每每就好。所以,深度学习虽缺少严格的理论基础,但它显著下降了机器学习应用者的门槛,为机器学习技术走向工程实践带来了便利。

那么深度学习为何此时才热起来呢?

有两大支持:

  • 一是数据支持,深度学习模型参数极多,若是数据不够,很容易会过拟合,但这是一个大数据时代,海量的数据容许咱们构造出精准的模型;
  • 二是计算支持,随着计算机技术的发展,现代计算机具有了足够的计算海量数据的能力。