【Todo】【读书笔记】机器学习-周志华

时间:2021-09-05 07:45:57

书籍位置:

/Users/baidu/Documents/Data/Interview/机器学习-数据挖掘/《机器学习_周志华.pdf》

一共442页。能不能这个周末先囫囵吞枣看完呢。哈哈哈。

当然了,我觉得Spark上面的实践其实是非常棒的。有另一个系列文章讨论了Spark。

还有另一篇读书笔记(Link)是关于《机器学习实战》。实战经验也很重要。

P1 一般用模型指全局性结果(例如决策树),用模式指局部性结果(例如一条规则)。

P3 如果预测的是离散值,那就是分类-classification;如果预测的是连续值,那就叫回归-regression。

P3 聚类,开始不具备标签。根据是否开始就有标签,分为监督学习(supervised learning)(有标签)和无监督学习(无标签)。分类、回归是前者;聚类是后者。

学得模型适用于新样本的能力,称为泛化能力(generalization);强泛化能力,好。假设样本空间中全体样本服从一个未知分布(distribution),我们获得的每个样本是独立地从这个分布上采样取得的,即独立同分布(independent and identically distributed, iid)。一般而言,获得的样本越多,得到分布的信息就越多。

P4 假设空间

归纳(induction)和演绎(deduction)是科学推理的两大手段。前者是从特殊到一般的“泛化”(generalization),后者是从一般到特殊的‘特化’(specialization). 在数学公理系统上,从公理和推导规则推导出定理,是演绎;而从样例中学习,是归纳,又称为归纳学习。

狭义的归纳学习要求从样本中学得概念,但是太难,应用很少,现在学到的大多是黑箱模型。

P6 机器学习过程中对某种类型假设的偏好,成为‘归纳偏好’,或者简称为偏好。

P9 NFL定理,No Free Lunch Theorem,指的是对出现机会“相同”的问题,不管什么解法,效果一样。最重要的寓意是,算法的好坏,一定要根据问题而讨论。

P10 机器学习是人工智能发展到一定阶段的必然产物。五六十年代,是推理期;然后进入知识期;然后要让机器自己学习,进入学习期。

P11 决策树学习由于简单易用,至今仍是常见的机器学习技术之一。

P12 二十世纪九十年代,统计学习闪亮登场,代表技术是SVM(支持向量机, Support Vector Machine),和更一般的“核方法”(kernel method)。统计方法在六七十年代就已开始。优越性在九十年代文本分类应用中才体现。支持向量机被普遍接收后,核方法(kernel trick)也成为机器学习基本方法。

P13 二十一世纪初,连接主义卷土重来,掀起来深度学习的热潮,其实是多层的神经网络。

P14 生物信息学涉及从“生命现象”到“规律发现”的整个过程,包括数据获取、数据管理、数据分析、仿真实验等各个环节。

P16 自然研究的驱动力归结起来无外是人类对宇宙本源、万物本质、生命本性、自我本识的好奇。

P17 机器学习领域最重要的国际学术会议是国际机器学习会议(ICML)。国际神经信息处理系统会议(NIPS)。国际学习理论会议(COLT)。

【Todo】【读书笔记】机器学习-周志华

P22 约翰.麦卡锡 人工智能之父,71年图灵奖获得者。阿瑟.萨缪尔,定义机器学习为,不显式编程地赋予计算机能力的研究。

P23 第二章。过拟合亦称过配,欠拟合亦称欠配。

P24 过拟合是不可避免的。机器学习面临的问题通常是NP难甚至更难,而有效的学习方法必然是在多项式内解决。如果可以彻底避免过拟合,则通过经验误差最小化就可以取得最优解,这就意味着P=NP.

【Todo】【读书笔记】机器学习-周志华

P26 评估方法:一般用S集训练,用T集验证。怎么选择S和T:1. 留出法,一般用2/3或者4/5来训练;

2. 交叉验证发,用k-1/k的样本训练,用1/k的评估;特例是留一法,这里n跟总样本一样多,意思是每次只留一个验证。但是模型量太大了。常见的k是10,叫作10折交叉验证法。

P27 3. 自助法,bootstrapping. 对于有m个样本的D,随机取m次,每次取完仍然放回D, 得到D',而

【Todo】【读书笔记】机器学习-周志华

得出,约有1/3不会出现在D'中。用D'进行训练,其余的进行验证。

自助法在样本较小不好划分时比较有用。但是会影响分布,引入评估误差。一般初始数据量大的时候,留出法和交叉验证法更常用一些。

P28 因为留出了验证集,所以在训练集训练之后,要把所有数据合在一起,再进行训练。然后得出最终的模型。

P29 性能度量。 1. 错误率与精度。 2. 查准率、查全率与F1.

查准率(precision):检索出的信息中有多少比例是用户感兴趣的。

查全率(recall):用户感兴趣的信息中有多少被检索出来了。

混淆矩阵如下:

【Todo】【读书笔记】机器学习-周志华

一般来讲,上面两个是矛盾的。查准率高时,查全率往往会低。反之也是。通常只有在一些简单的任务中,才能做到两个都高。

所以有了下面的P-R图。

【Todo】【读书笔记】机器学习-周志华

注意上面飘红的部分。现实中不一定是这种平滑的曲线的。

如果像A和B那样有交叉,就需要权衡了。

平衡点(Break-Event Point, BEP)是这样的一种度量:查全率=查准率时候的取值。

但BEP还是过于简化了。更常用的是F1度量:

【Todo】【读书笔记】机器学习-周志华

P32 有宏P,宏R,宏F1(多次取和),以及微P,微R,微F1(取平均)

P33 2.3.3 ROC与AUC

很多时候是获得数值,然后根据分类阈值(threshold)来判定正例和反例。就有一个截断点(cut point),根据P和R的不同,来将这个位置靠前或者靠后。

ROC全称是“受试者工作特征”(Receiver Operating Characteristic)曲线。

【Todo】【读书笔记】机器学习-周志华

基于有限个测试样例绘制P-R图和绘制ROC曲线,是用到同样的方法,如下:

【Todo】【读书笔记】机器学习-周志华

P35 代价敏感错误率与代价曲线

有时候,反正例和反反例同样是犯错,但是代价是不一样的。如下:

【Todo】【读书笔记】机器学习-周志华

P36:这时候,ROC曲线,不能反映出整体期望代价。但是代价曲线(cost curve)可达到此目的。

然后代价曲线说是能够反映整体期望。但是说实话,开始没看懂。后来发现是把横轴的数值用纵轴的值一看,是对等的。难。

【Todo】【读书笔记】机器学习-周志华

而绘制方法如下:

【Todo】【读书笔记】机器学习-周志华

P37 比较检验

前面介绍了各种性能度量方式,但是其度量的是模型在测试集下的测试误差的性能状况,虽然其可以近似代替泛化性能,但毕竟与真实的泛化性能有一定的距离,在这里我们介绍通过假设检验的方式,利用测试误差来预估泛化误差从而得到模型的泛化性能情况,即基于假设检验结果我们可以推断出若在测试集上观察到模型A比B好,那么A的泛化性能在统计意义上优于B的概率有多大。

下面有一大堆看不懂的数学公式推导。略。

P44 偏差与方差

对学习算法除了通过实验估计其泛化性能,人们往往还希望了解它“为什么”具有这样的性能。

偏差-方差分解(bias-variance decomposition)是解释学习算法泛化性能的一种重要工具。

各个定义如下:

【Todo】【读书笔记】机器学习-周志华

总结如下:

【Todo】【读书笔记】机器学习-周志华

P46 偏差-方差窘境:

训练不足时,偏差主导了泛化错误率;随着训练程度加深,训练数据的扰动主导了泛化错误率,方差影响上升。

看到第3章了,P53了。

先跳到P373,看了强化学习。 领悟下面这段话:

【Todo】【读书笔记】机器学习-周志华

因为第三章 线性模型和第四章 决策树都有点印象。先看第五章 神经网络。

P97 神经网络。

M-P神经元模型。

【Todo】【读书笔记】机器学习-周志华

激活函数也称作响应函数。

实际经常采用Sigmoid函数作为激活函数,下面是典型的Sigmoid函数,把较大范围的输入挤压到0-1之间,所以也称为积压函数。

【Todo】【读书笔记】机器学习-周志华

P98 神经网络,本质上是包含了许多参数的数学模型,比如多个函数相互嵌套而成。很多神经网络学习算法以数学证明为基础。

比如10个神经元两两相连,就有100个参数,90个连接权和10个阈值。

P98 5.2 感知机Perceptron 和多层网络

感知机由两层神经元组成。输入层接收信号,输出层是M-P神经元,也成为“阈值逻辑单元”。

能容易地实现与、或、非运算。看书中介绍,很清晰。

【Todo】【读书笔记】机器学习-周志华

但是,感知机只拥有一层功能神经元(functional neuron),能力非常有限。而且能解决的问题都是线性可分。看书中的介绍,很清晰。Minskey的69年的论文证明了,非线性问题就会振荡。

对于异或这样,非线性可分的问题,需要用两层功能神经元来解决。

【Todo】【读书笔记】机器学习-周志华

这样输出层和输入层之间多的一层神经元,成为隐层或者隐含层(hidden layer)。隐含层和输出层都是有激活函数的功能神经元,而输入层不是。

多层前馈神经网络(multi-layer feedforward neural networks)如下:

【Todo】【读书笔记】机器学习-周志华

为避免歧义,左边的成为“单隐层网络”。神经网络的学习过程,就是根据训练来调整神经元之间的‘连接权’和阈值。

换言之,‘学’到的东西,蕴含在连接权和阈值里。

P101 5.3 误差逆传播算法

多层网络,用之前的那个简单感知机学习规则不够了。误差逆传播(error BackPropagation)BP算法就是其中最杰出的代表。

虽然BP也能用来训练其他网络,但是一般说到BP网络,就是用BP训练的多层前馈神经网络。

BP网络中的定义和变量符号如下:

【Todo】【读书笔记】机器学习-周志华

对训练集(Xk, Yk),网络在其上的均方误差为:

【Todo】【读书笔记】机器学习-周志华

BP算法基于梯度下降(gradient descent)策略,以目标的负梯度方向对参数进行调整。

【Todo】【读书笔记】机器学习-周志华

以及其他参数的更新公式:

【Todo】【读书笔记】机器学习-周志华

学习率(n)控制着算法每一轮迭代中的更新步长,太大就震荡,太小就过慢。有时候为了精细,5.11和5.12一个学习率,5.13和5.14一个学习率。

下图是BP算法的过程:

【Todo】【读书笔记】机器学习-周志华

目标其实就是要最小化累积误差:

【Todo】【读书笔记】机器学习-周志华

标准BP是每个样本都回溯调整。累积误差逆传播,是累积之后再回溯调整。

【Todo】【读书笔记】机器学习-周志华

由于其强大的表示能力,BP神经网络经常遭遇过拟合。训练误差降低,测试误差却上升。

两种策略:

1. 早停:在验证集错误率上升时候,就停止。

2. 正则化:加一些描述网络复杂度的部分到误差目标函数。

5.4 全局最小和局部最小

【Todo】【读书笔记】机器学习-周志华

上面这个图,能够很好的表达全局最小和局部最小的关系。

因为负梯度方向是函数值下降最快的方向,顺着这个方向找,容易到达局部最小。如上图所示。

【Todo】【读书笔记】机器学习-周志华

上面都是启发式的,没理论保障。

P108 其他常见的神经网络:

1. RBF网络,略;

2. ART网络,神经元竞争学习网络。赢者通吃。

【Todo】【读书笔记】机器学习-周志华

3. SOM网络,自组织映射,Self-Organizing Map,将高维样本映射到地维神经元。

4. 级联相关网络:其他网络训练的目的是确定合适的连接权、阈值等参数。而结构自适应网络把结构也作为学习的目标之一。

开始只是输入层、输出层等简单拓扑,隐层逐渐加入。训练速度快,但数据过小时容易过拟合。

5. Elman网络,递归神经网络。隐层神经元的输出被反馈回来。

6. Boltzmann机。为网络状态定义一个能量,能量最小化时候达到稳定。B机就是一种基于能量的模型。

神经元分为两层,显层和隐层,显层输入输出,隐层是数据内在表达。B机经常是一个全连接图,复杂度很大。

经常用受限B机,RBM,仅保留显层和隐层之间的连接。同一层内不存在连接。

【Todo】【读书笔记】机器学习-周志华

Boltzmann训练的目的:

【Todo】【读书笔记】机器学习-周志华

6. 深度学习

大型深度学习模型中,甚至有上百亿个参数。

【Todo】【读书笔记】机器学习-周志华

深度信念网络(deep belief network, DBN),每层都是一个受限B机,整个网络是通过若干个RBM堆叠而成。

将第一层训练的隐节点作为第二层的输入节点,进行预训练(pre-training)。整个网络预训练完成后,进行微调训练。

这种做法,可以看成将大量参数分组,对每组参数用局部看起来比较好的设置。然后结合这些局部最优,联合寻找全局最优。

另一种节约训练开销的方式,是权共享。让一组神经元使用相同的连接权。

卷积神经网络(Convolutional Neural Network, CNN)就是用了这种策略。

【Todo】【读书笔记】机器学习-周志华

卷积神经网络的思想如下:

【Todo】【读书笔记】机器学习-周志华

其实,无论是DBN(深度信念网络,多层RBM)还是CNN,多隐层堆叠,每一层对上层的输出进行处理的机制,可以看做是逐层加工,从而把初始的,与输出目标之间联系不太密切的输入表示,转化为与输出目标联系更密切的表示。换言之,通过多层处理,将初始的“低层”特征转化为“高层”特征后,用“简单模型”就可以完成复杂的分类等学习任务。

由此可以将深度学习,理解为特征学习或者表示学习。以往描述样本的特征往往需要人类专家来设计,这称为“特征工程”。特征的好坏对泛化性影响很大。特征学习通过机器学习技术资深来产生好特征,这使得机器学习向“全自动数据分析”又前进了一步。

P115 神经网络是一种难解释的“黑箱模型”。但是也有一些研究尝试神经网络的可解释性,如某些参考文献。

P120 神经网络几起几落:四十年代M-P神经元、Hebb学习率出现后,五十年代出现了感知机。第一个高潮。

69年图灵奖获得者 Minsky 在69年的《感知机》一书中说了神经网络的局限,陷入低谷。美国和苏联停止了相关研究项目。

74年BP算法发明,都没有得到重视。

83年,利用神经网络对旅行商问题的求解获得当时最好结果。BP算法又重新发明。第二次高潮。

九十年代,随着统计学理论,和支持向量机的兴起,并且神经网络理论性质不清楚、试错性强、使用中大量“黑盒”“窍门trick”,再次低谷;NIPS会议甚至多年不接受神经网络类别的论文。

2010前后,随着计算能力的提升和大数据的涌现,神经网络换了个名字,深度学习,再次崛起。ImageNet比赛,AlphaGo下棋等等,又迎来第三次高潮。

关于深度学习中经常涉及的蒙特卡洛树和卷积网络,可以看下面这篇文章:

http://www.cnblogs.com/charlesblc/p/6194081.html

支持向量机 SVM

P124 支持向量机的重要特性:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。

6.3 核函数

【Todo】【读书笔记】机器学习-周志华

核函数的选择:

【Todo】【读书笔记】机器学习-周志华

接上图:核函数的线性组合也是核函数。 直积也是核函数。任意函数g, g(x)k(x,z)g(z)也是核函数。

为什么说SVM和统计学关系很大。

SVM和统计机器学习的内容比较多,具体内容可以看:http://www.cnblogs.com/charlesblc/p/6193867.html

第三章,线性回归的内容可以看: http://www.cnblogs.com/charlesblc/p/6195795.html

P73 第四章,决策树。

【Todo】【读书笔记】机器学习-周志华

上面这张图是决策树的精髓了。

其中最重要的是第8行,选择最优划分属性。

【Todo】【读书笔记】机器学习-周志华

P75

4.2 划分选择

对于关键的一步,最优划分选择。一般而言,我们希望分支节点所包含的样本尽量属于统一类别,即节点的纯度"purity"越来越高。

4.2.1 信息增益 信息熵

【Todo】【读书笔记】机器学习-周志华

信息增益:

【Todo】【读书笔记】机器学习-周志华

P79 4.2基尼系数

P79 4.3 剪枝处理

剪枝是对付“过拟合”的手段。

【Todo】【读书笔记】机器学习-周志华

可以看第七章了。P147。我觉得作者的章节排序还是很不错的。基本是按照重要性程度来排序的。

目录如下:

目录
第一章 绪论
第二章 模型评估与选择
第三章 线性模型
第四章 决策树
第五章 神经网络
第六章 支持向量机
第七章 贝叶斯分类器
第八章 集成学习
第九章 聚类
第十章 降纬与度量学习
第十一章 特征选择与稀疏学习
第十二章 计算理论学习
第十三章 半监督学习
第十四章 概率图模型
第十五章 规则学习
第十六章 强化学习