《机器学习(周志华)》学习笔记(一)

Q:什么是机器学习?

机器学习最初被定义为“不显式编程地赋予计算机能力的研究领域”。很明显,这里的“机器”是指计算机。通常我们给计算机编程都会使用if-else这些流程控制:

if(今天是周末){
  在家睡觉
}
else{
  好好工作
}

这就是直接地、明显地(显式地)告诉了计算机什么时候应该做什么。

机器学习则不是直接告诉计算机什么时候做什么,而是提供一些案例(训练数据),让计算机通过案例自己学习,自己摸索什么时候应该做什么。一个著名的例子是给计算机输入一大堆“房价-房屋面积”数据,让计算机自己发现房价和房屋面积的规律,然后我们输入一个新的房屋面积数据,计算机就可以根据学习到的规律输出相应的房价。

机器学习的根本任务是预测

“机器学习”同时也是一门学科,研究怎样使得计算机更好地学习,亦即,是一门研究“学习算法”的学科,主要任务是评估“学习算法”的好坏以及开发新的“学习算法”。这里的“学习算法”是计算机的学习方法,本质上是一种基于现有的数据产生预测模型的算法。

Q:学习一门学科需要先掌握其基本概念,“机器学习”领域有哪些需要掌握的重要概念?

人类观察事物时,是通过观察事物的本质特征来认识事物的。比如观察西瓜,会观察西瓜的色泽、根蒂、敲声等特征。假设我们收集了一批关于西瓜的数据:

(色泽=青绿;根蒂=蜷缩;敲声=浊响)
(色泽=墨绿;根蒂=稍蜷;敲声=沉闷)
(色泽=浅白;根蒂=硬挺;敲声=清脆)
······

假设我们希望用这一批数据来让计算机学习
1、样本、示例、记录——这批数据里的每对括号。
2、数据集——这组样本(示例、记录)的集合。
3、特征、属性——色泽、根蒂、敲声等反映一个事物的本质的可观察方面。
4、属性值——青旅、墨绿、蜷缩、浊响等,是属性的取值。
5、属性空间、样本空间、输入空间——属性张成的空间。这似乎是线性代数的语言,亦即把属性当作坐标轴,形成一个空间,那么样本就是这个空间中一个个的点。例如,吧“色泽”、“根蒂”、“敲声”作为坐标轴,则长生了一个三维空间,每个西瓜都是这个空间里的一个点。
6、维数——样本空间的坐标轴数,也就是数据集的特征数量。本例中的维数是3。
7、假设——也称假设函数,指计算机通过学习后得到的一个函数(预测模型)。
8、标记——关于样本结果的信息,比如一个(色泽=青绿;根蒂=蜷缩;敲声=浊响)的西瓜是好瓜,那么“好瓜”就是(色泽=青绿;根蒂=蜷缩;敲声=浊响)这个样本的标记。
9、样例——带有标记的样本,比如((色泽=青绿;根蒂=蜷缩;敲声=浊响),好瓜)
10、标记空间、输出空间——所有标记的集合。本例中就是指{好瓜、坏瓜}。
11、泛化——如果用某个数据集的样本训练出的一个模型(假设函数),能够适用于新的样本数据,就说这个模型具有泛化能力。模型能适用于越多的新数据,则说明其泛化能力越强。

Q:《机器学习》为“假设空间”这个概念另起一节说明,那么什么是“假设空间”?

“假设空间”里的“假设”指的是假设函数,也就是机器学习的成果。例如我们做分类学习,那么通过数据训练后得到的分类模型就是我们得到的假设。

假设空间是指所有可能假设组成的空间。也可以说是所有在表达形式上符合任务要求的假设函数的集合。

对于西瓜分类任务,我们要获得的假设函数的形式是

好瓜→(色泽=*)^(根蒂=*)^(敲声=*)

假设“色泽”、“根蒂”、“敲声”3个特征都有3种可能取值,那就有444+1=65种可能假设,亦即假设空间的大小为65。
对于根据房屋大小预测房价的问题,我们要后的的假设函数的形式则是

y = a*x + b

这个问题的假设空间是无穷大。

因此,学习过程可以看作在假设空间中寻找符合训练数据集的假设的过程。

Q:什么是“归纳偏好”?

A:
在西瓜分类问题中,可能由于数据集的原因,我们会得到多个符合数据集的假设函数,比如:

好瓜→(色泽=墨绿)^(根蒂=蜷缩)^(敲声=沉闷)
好瓜→(色泽=青绿)^(根蒂=*)^(敲声=沉闷)

这所有训练后得到的假设组成的空间称为“版本空间”。

那么版本空间中哪一个假设 比较好?
如果我们认为越精细越好,则选择

好瓜→(色泽=墨绿)^(根蒂=蜷缩)^(敲声=沉闷)

如果我们认为越粗略越好,则选择

好瓜→(色泽=青绿)^(根蒂=*)^(敲声=沉闷)

像上面那样,计算机的学习算法基于某种偏好认为某个假设比其他假设好,那么我们说这个学习算法有“归纳偏好”。事实上所有“学习算法”都有归纳偏好,而且一般来说会偏好那些形式简单的假设。

Q:什么是NFL定理?其推导如何?

A:
NFL(No Free Lunch)定理,翻译过来就是“没有免费午餐”定理,收的是在机器学习中,没有给定具体问题的情况下,或者说面对的是所有问题的情况下,没有一种算法能说得上比另一种算法好。换成我们的俗话讲,就是“不存在放之四海而皆准的方法”。只有在给定某一问题,比如说给“用特定的数据集给西瓜进行分类”,才能分析并指出某一算法比另一算法好。这就要求我们具体问题具体分析,而不能指望找到某个算法后,就一直指望着这个“万能”的算法。这大概也是no free lunch名字的由来吧。

这个定理怎么得出的?西瓜书里有这样一段文字:


似乎说的是我?

好吧,仔细读一下推导过程,其实不难,连我这种数学渣渣都能读懂绝大部分。只要别被一长串推导吓到就行。

首先,定理推导的思路是证明对于某个算法a,它在训练集以外的所有样本的误差,与a本身无关。

让我们一步一步来探索。

首先,误差是怎样表示,或者说怎样计算出来的?简单起见,只考虑二分类问题。那么误差就是分类器错判的个数与样本总数的比

E=误判数/总数。

其次我们要明确,一个算法,会产生很多不同的假设。更详细得说,一个算法的结果就是一个函数h,但是h的参数不同,那么就会有h1,h2等不同的假设函数。最典型的是h=kx+b。只要参数k、b不同,那么函数h就不同了。

那么,对于某个算法a,它在训练集以外的所有样本的误差,就是它所能产生的所有假设h,在训练集以外的所有样本上的误判率的和

对于某个假设h,“h在某个数据集上的误差”“在某个数据集中抽取一个能让h误判的样本的概率”是等价的问题。设P(x)为“在某个数据集中抽取一个能让h误判的样本的概率”,那就可以用P(x)来替代h的误差。

综上所述,对于某个算法a,它在训练集以外的所有样本的误差就可以这样表示:


某个算法a,它在训练集以外的所有样本的误差

对于二分类问题,设f为真正的分类函数,可能f有多个。假设其均匀分布,那么对于某个算法a,它在训练集以外的所有样本的误差就可以表示成:


二分类问题中算法a在训练集外所有样本的误差

由乘法分配率可以化为
Paste_Image.png

又由于


Paste_Image.png

上式中最后意象可以被化简:
Paste_Image.png

又由全概率公式,或者说概率的可列可加性,下面这一项(上式中间那一项)其实等于1
这一块其实等于1,所有h的概率加起来嘛

如此一来,a就在公式中消失了,于是最后的结果就是
与a无关

所以说无论是什么算法,它在训练集以外所有样本上的误差都是上式表示的结果。

这就是NFL定理的推导。


这篇文章发表的五年里,大多数的评论都是围绕NFL的。五年前我对机器学习和NFL都知之甚少。现在我有了更多理解,便尝试一下再解释解释周志华老师这个简单版的论证。

我们对于数学的恐惧,在理解数学内容时感到困难,原因大多是我们没有搞清楚数学符号对应的意思。我们往往都是匆匆扫一眼对于符号的定义,然后就忙不迭地透入公式之中。但是,连基本地单词都没掌握,怎么能指望理解一句话地内容呢?所以首先我们解释清楚上面所用到的数学符号的含义。

  • \mathcal{X}是样本空间,指的就是所有可能的样本组成的集合。比如说我们要判断一批西瓜中的好瓜坏瓜,那么这一批西瓜就是样本空间。假设这一批西瓜有1000个,那么|\mathcal{X}|就是样本空间的规模,也就是所有可能西瓜的数量,1000。
  • X则是我们所有用的训练集,x代表其中的一个训练样本。比如我们从这批1000个西瓜中采样50个来做分析,那这50个西瓜就是训练集。
  • h代表使用学习算法在训练集中学习出来的假设。在我们这个例子中也就是一个判别函数,用来判断一个样本的类别h: \mathcal{X} \rightarrow \{0,1\}。使用这个判别函数h,输入某个西瓜的特征信息,就这个函数就会告诉我们这个瓜是好是坏。我们用f来代表真正的判别函数。
  • \mathfrak{L}代表一个训练算法,比如\mathfrak{L}_{a}可能代表逻辑回归\mathfrak{L}_{b}可能代表决策树。我们可以把\mathfrak{L}也看作一个函数,输入是一个训练集,输出是一个判别函数\mathfrak{L}: \mathcal{X} \rightarrow H。这里H是指假设空间,也就是所有可能的判别函数的集合。
  • 前文已经说过,在假设空间H中,可以有多个假设h_1, h_2,..符合同一个训练集X,那么学习算法\mathfrak{L}应该挑选哪一个假设呢?我们目前不知道,但可以假设某个算法\mathfrak{L}和某个数据集X,它挑选某个假设h的概率是P(h|X,\mathfrak{L}).

对于某个算法\mathfrak{L}_a,设它在训练集以外的所有样本,也就是剩下的950个瓜x \in \mathcal{X} - X期望误差(Expected Out of Training Error)E_{ote}(\mathfrak{L}_a|X, f)。按照数学期望的定义,它可以表达成:
E_{ote}(\mathfrak{L}_a|X, f) = \sum_{h\in \mathfrak{L}(X)} P(h|X, \mathfrak{L}_a)E_{ote}(h|X, \mathfrak{L}_a)

其中P(h|X, \mathfrak{L}_a)是指学习算法\mathfrak{L}_a根据给定的训练集X,选择了假设h的概率;而E_{ote}(h|X, \mathfrak{L}_a)是指假设h在训练集以外的所有样本的期望误差。再次按照数学期望的定义,它可以表达成:
E_{ote}(h|X, \mathfrak{L}_a) = \sum_{x \in \mathcal{X} - X}P(x)\mathbb{I}\big(f(x) \neq h(x)\big)

其中\mathbb{I}(b) 是一个辅助函数,用来表示x是不是被误判了,定义为
\mathbb{I}(b) \left\{ \begin{aligned} &0 \quad b=True \\ &1 \quad b=False \\ \end{aligned} \right .

那么整个E_{ote}(\mathfrak{L}_a|X, f)的定义就可以写成
E_{ote}(\mathfrak{L}_a|X, f) = \sum_{h\in \mathfrak{L}(X)} P(h|X, \mathfrak{L}_a) \sum_{x \in \mathcal{X} - X}P(x)\mathbb{I}\big(f(x) \neq h(x)\big)

学习算法生成的假设h可能有多个,真判别函数f也可能有多个。于是我们对所有可能的f的误差求和:
\sum_f E_{ote}(\mathfrak{L}_a|X, f) = \sum_f \sum_{h\in \mathfrak{L}(X)} P(h|X, \mathfrak{L}_a) \sum_{x \in \mathcal{X} - X}P(x)\mathbb{I}\big(f(x) \neq h(x)\big)

由乘法分配率可以化为
\sum_f E_{ote}(\mathfrak{L}_a|X, f) = \sum_{h\in \mathfrak{L}(X)} P(h|X, \mathfrak{L}_a) \sum_{x \in \mathcal{X} - X} P(x) \sum_f \mathbb{I}\big(f(x) \neq h(x)\big)

怎样化简上式的最后一项\sum_f \mathbb{I}\big(f(x) \neq h(x)\big)呢?我们不知道真正的判别函数f是怎样的,只知道它存在于假设空间H中,那我们姑且认为每一个假设h是真判别函数f的概率相等,也就是假设f在空间H中的概率是均匀分布。若fH中均匀分布,则有一半fx的预测是0,另一半的预测是1。无论如何,对于一个给定的h,总有一半fx的预测与h不一致,也就是说\sum_f \mathbb{I}\big(f(x) \neq h(x)\big)=\frac{|H|}{2},也就是说:
\begin{aligned} \sum_f E_{ote}(\mathfrak{L}_a|X, f) &= \sum_{h\in \mathfrak{L}(X)} P(h|X, \mathfrak{L}_a) \sum_{x \in \mathcal{X} - X} P(x) \frac{1}{2}|H| \\ &=\frac{1}{2}|H| \sum_{h\in \mathfrak{L}(X)} P(h|X, \mathfrak{L}_a) \sum_{x \in \mathcal{X} - X} P(x) \\ &=\frac{1}{2}|H| \sum_{x \in \mathcal{X} - X} P(x) \sum_{h\in \mathfrak{L}(X)} P(h|X, \mathfrak{L}_a) \\ &=\frac{1}{2}|H| \sum_{x \in \mathcal{X} - X} P(x) \end{aligned}
到了这一步,我们已经可以看出,学习算法(\mathfrak{L}_a在训练集外的总误差与(\mathfrak{L}_a自身无关,无论它是逻辑回归,还是决策树,还是别的什么,理论上其训练集外的总误差都是\frac{1}{2} |H| \sum_{x \in \mathcal{X} - X} P(x).

最后提一嘴,|H|是指假设空间的规模,也就是所有可能的判别函数h的数量。那么,一共可能有多少个h呢?一个h要做的事情是给样本空间里的样本打上0或1的标签,有多少种打标签的组合,相当于问1000个西瓜中每个西瓜都可能是好瓜坏瓜,那么1000个西瓜一共有多少种可能的好坏组合?答案是2^{1000}种。所以理论上其训练集外的总误差都是
\sum_f E_{ote}(\mathfrak{L}_a|X, f) = 2^{|\mathcal{X}|-1} \sum_{x \in \mathcal{X} - X} P(x)

好家伙,我自己写完,看到这么多符号,也下了一跳。担心细一看每一步都不难,其实都是高中数学而已。


本作品首发于简书博客园平台,采用知识共享署名 4.0 国际许可协议进行许可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容