① 朴素贝叶斯的理解
朴素贝叶斯是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入输出的联合概率分布,然后基于模型,对给定的输入x,利用贝叶斯定理求出后验概率的最大的输出y。
具体的推导可以参考网上的博文,这里不再进行叙述。
其中P(A)称之为先验概率,我们希望求得的P(A|B)称之为后验概率。
单纯的看这个公式很难理解贝叶斯的含义,这里用周志华西瓜书中例子来进行更好的理解。
假设我们手里有了一个西瓜,它有一系列的特征,那么我们现在需要根据这些特征来判断这个是好瓜还是坏瓜呢?这也就变成了一个数理统计里面称为条件概率的东西,也就是在某个条件存在的基础上,我们来求某一个事件发生的概率,比如事件B发生的条件下求事件A发生的概率,我们可以写成P(A|B).
那我们西瓜的例子来说,事件B是什么?当我是我们可以观察到的一系列的这个瓜的特征值了。假设我们用加粗的 X 来表示,因为特征很多,加粗表示这是一个特征向量, X = x1,x2,...,Xn 。那么我们要求的就是基于这个条件下这个瓜是好瓜或者是坏瓜的事件的概率。就是求P("好瓜"|X)或者P("坏瓜"|X)。那这个怎么求呢?当然是使用上面的贝叶斯公式了。
最终我们可以写出
来比较这两个哪个的概率大,那么我们就认为我们的这个瓜是好瓜还是坏瓜。
既然已经有了可以求概率的公式,那我们可以着手进行计算了,首先是先验概率P(Ci)(这里换成字母C表示类别以及下标i表示第i类,当然在西瓜的例子里面只有两个类别,那就是“好瓜”和“坏瓜”),这个很好计算,只用统计出“好瓜”和“坏瓜”各有多少个,然后除以全部的个数就可以得出相应的概率了。
这边先看分母,因为在计算中我们用到的特征数据都是一样的,所以分母完全可以当成一个常数,也就是我们的公式可以简化成:
P(Ci)可以容易求出,但是P(X/Ci)就很困难了。因为把这个展开后为:
理论上这个可以利用我们的数据集来进行估计的,但是现实情况是,n的值往往非常大(属性非常多),而我们的数据集往往不能保证我们的样本包含了属性值的所有可能组合。那么很多p(X|ci)我们估计得到的值就是0。然而这些样本很可能仅仅是我们的数据集中没包含到,即“未被观测到”,但不代表它们现实中“出现概率为0”。
朴素贝叶斯对条件概率分布作了条件独立性的假设,由于这是一个较强的假设,朴素贝叶斯由此得名。有了这个假设,我们就可以这样计算P(X/Ci):
P(x1/ci)P(x2/ci)...P(xn/ci)
没错,就是把每个特征独立的拆出来写成连乘的形式来计算这个概率。
引入连乘操作后可能导致一个问题,那就是数据量大了之后,进行多次的连乘操作可能导致结果下溢,也就是最后算出的概率为0了,所以把连乘操作改为取对数操作,即logP(X/ci),展开后把每个概率取对数后进行相加。
由于我们验证的西瓜中有些特征属性可能数据集中不会出现,导致最终算出的概率为0,但现实中这种瓜是存在的,所以引入拉普拉斯平滑来进行处理。也就是计算公式是修改为:
N表示训练集D中可能的类别树,Ni表示第i个属性可能的取值数
对于离散数据只需要把对应特征的属性个数加起来除以总数即可,而连续型数据则需要借助概率密度函数,此处假设数据服从高斯分布,用高斯密度函数来计算连续型数据的概率。
此处用Python实现西瓜书上151页的例子,数据集是西瓜数据集3.0。
整体的思路:使用两个全局变量来存储好瓜和坏瓜在数据集中的索引,遍历待分类数据的数据,拿出待分类的特征属性来进行概率计算,,每次计算都需要算出特征属性值在所有好瓜或者坏瓜上的概率,计算概率时要区分离散数据以及连续型数据,加入拉普拉斯平滑和取对数运算,最终比较各自大小,得出分类结果。
② 经典机器学习系列之【集成学习】
塌历老中国有句老古话,叫“ 三个臭皮匠顶个诸葛亮 ”,说的是人多力量大,可也有句成语叫“ 乌合之众 ”。在机器学习中也有一类算法,将这两种思想融合起来,取其精华,它就是 集成学习 ,算法将不同的学习器融合在一起。
在集成学习中,算法不要求每个学习器性能最好,但是期望它们对问题具有不同的看法,Good But Different (好而不同)。
如果在分类问题上描述的话,所表示的就是具有不同的划分能力,对于一些样本学习器 能划分,对于另外一些样本,学习器 能划分。并不要求单个学习器对所有样本都具备划分能力。
用专业一点的属于来说的话,就是不同的学习器具有不同的偏好模型,但是每一个都是弱监督模型,集成学习将多个弱监督模型组合,得到一个好的强监督模型。其思想是,不同的学习器之间相互地错误纠正,以达到最终准确率的提升。
集成学习,其英文名称叫做( ensemble learning ),它通过将多个学习器集成在一起来达到学习的目的。主要是将有限的模型相互组合,其名称有时也会有不同的叫法,有时也会被称为多分类器系统( multi-classifier system )、委员会学习( committee learning )、Molar systems、classifier fusion、combination、aggregation等。这些概念相互之间互相联系,又有些许区别,对于概念的定义业界还没有达成共识。整个算法所表现出来的性能非常地强悍,许多高水平的竞赛(Knowledge Discovery and Data Mining、Kaggle)中都是首选。
在机器学习,满足训练集的假设不一定在实际应用中有同样好的表现,这样学习算法选择哪个假设进行输出的时候就面临着一定的风险,把多个假设集成起来能够降低这种风险(这可以理解为通过集成使得各个假设和目标假设之间的误差得到一定程度的抵消)。
在周志华西瓜书中通过Hoeffding不等式证明了, 随着集成中个体分类器数目的增大 , 集成的错误率将指数级下降 , 最终趋于零 。
集成学习先产生一组“个体学习器”( indivial learner ),再通过某种策略将其结合起来。依据每个个体学习器所采用的学习算法是否相同,可以分为 同质集成 和 异质集成 。
集成学习器性能要好于单个个体学习器需要满足 好而不同 的两点要求:
第一个条件相对来说比较容易实现,在当前问题下训练一个模型,结果比瞎猜的结果好就行了。 第二个条件是集成学习研究的核心问题 。每个个体学习器学习的都是同一个问题,所以个体学习器不可能做到完全相互独立。想想小时候,老师让你发烂岁表不同的观点,想想写论文的时候找创新点,人都很难做到这样一件事情,何况它只是一个小小的学习算法。
想要在个体学习器足够好的前提下,增强其多样性,我们可以直观上来想象一下。整个的算法学习过程是从数据到模型再到输出。
首先考虑输入 。如果每个学习器学习不同的样本,那么可以学习出相对来说不同的个体学习器。那么现在的问题就是怎么划分训练样本,你可以随机抽取,或者利用不同的属性子集训练出不同的个体学习器。
其次考虑模型 ,如果基学习器的模型不一样,也能训练出不同的个体学习器。
最后考虑输出 ,如果我们依据标签的特性来进团升行划分,也能得到不同的个体学习器。
依据上述三点概念,主要有以下5种方法:
从原始训练样本中产生不同的样本子集,然后利用不同的样本子集训练不同的个体学习器。如 Bagging 中使用的 自助采样 , Boosting 中使用的 序列采样 。
这种训练样本扰动的方法简单高效,但 只对不稳定的基学习器有效 ,像 决策树 、 神经网络 等;对于稳定的基学习器,如线性学习器、支持向量机、朴素贝叶斯、K-NN等,就效果不明显,产生这个问题的原因就是因为稳定的基学习器,“变通能力”并不是很强。
说到Bagging和Boosting,这里详细介绍一下这两种经典的方法:集成学习分为个体学习其之间存在强以来关系、必须 串行生成的序列化方法-Boosting 和不存在强依赖关系, 可同时生成并行化方法-Bagging 。
具体的实现方法是:首先给每一个训练 样例赋予相同的权重 ,然后训练第一个基本分类器并用它来对训练集进行测试, 对于那些分类错误的测试样例提高其权重 (实际算法中是降低分类正确的样例的权重), 然后用调整后的带权训练集训练第二个基本分类器 ,然后重复这个过程直到最后得到一个足够好的学习器。
Boosting中最着名算法是1997年Yoav Freund所提出的AdaBoost(Adaptive Boosting)方法。下图是AdaBoost论文Bing学术搜索结果:
本文以周志华西瓜书推导过程为例,以“ 加性模型 ”(additive model)进行解析:
将基学习器 线性组合,则基学习器的线性组合表示为如下 形式:
定义整个学习器的损失函数为指数损失函数( exponential loss function ),期望指数损失函数最小化:
其中 是真实函数, , 表示样本的权值分布(对于错误的样本权重要高一点,正确的样本权重要低一点,所有的样本组合起来就相当于有一个分布)。
若基学习器的线性组合 能够使得指数损失函数最小化,一般的做法就是求偏导数,令其等于零,求解。由于 取值只有两种,所以其求偏导数之后的结果如下所示:
令其偏导数为0,解得:
有:
这意味着若指数损失函数最小化,则分类错误率也将最小化。说明指数损失函数是原任务的替代函数,但由于其连续可微,所以用它替代 0/1 损失函数作为优化目标。上面这么多就是说接下来用这个连续的指数损失函数做进一步的处理。
在AdaBoost算法中,第一个基分类器 通过直接将基学习算法用于初始数据分布而得到;之后的 和 是通过迭代生成得到的。当基分类器 基于分布 产生之后,基分类器的权重 应该使得 最小化指数损失函数,只有 在判断错误的基分类器给予较小权值,判断正确的基分类器给予较大权值,才能使得 具有较准确的判断,从而最小化指数损失函数
其中 ,其实就是误判率。为了求得基分类器的权重,对其求导:
再令导数为0,可得:
到这里相当于自适应做完了,在这里,AdaBoost自适应的思想采取的是加权多数表决的方法,上述公式体现出来的就是加大分类器误差率小的弱分类器的权值,使其在表决中起较大作用。误差率较大的则相反。
现在要回到Boost的原理中对样本的处理,在改变这个样本的权值,或者说概率分布的时候,我们要实现的直观想法是: 提高那些被前一轮弱分类器错误分类样本的权值 , 降低那些被正确分类的样本的权值 。接下来我们去把这个公式证出来:
这里通过基学习器开始证明,看基学习器在什么样本分布下能够学出来最小化分类误差。
AdaBoost 在得到 之后,调整样本分布,使得 能学出来之前的基学习器无法学习到的东西,能纠正 的一些错误,那这个 就能够最小化:
注意到 ,上式可使用 的泰勒展开式近似为如下公式:
于是理想的基学习器:
注意到 是一个常数。令 表示一个分布:
依据数学期望的定义,等价于令:
由 , , ,有:
则理想的基学习器:
由此可见,理想的 将在分布 下最小化分类误差。 和 的关系有:
上述公式就是下图AdaBoost的第7步更新公式,整个的AdaBoost算法如下图所示:
AdaBoost 算法第五行检查当前基分类器是否比随机猜测好,一旦不满足条件,当前基学习器即被抛弃,且学习过程停止。在这个请款下就有可能导致集成中包含基学习器数量过少,导致整体性能不佳。采用“重采样法”(re-sampling)来处理,即在每一轮学习中,根据样本分布对训练集重新采样,再用重采样而得到的样本集对基学习器进行训练,则可获得重启动。
是并行式集成学习方法着名代表,基于自助采样法( bootstrap sampling ),给定包含 个样本的数据集,有放回随机采样,经过 次得到含有 个样本的采样集,这样的采样,初始训练集中约有 的样本出现在采样集中。
照这样采样出 个含 个训练样本的采样集,然后基于每个采样集训练一个基学习器,再将这些基学习器进行结合。在预测输出时,Bagging通常对分类任务使用 简单投票法 。对回归任务使用 简单平均法 。
上图中 表示自助采样产生的样本分布。
输入属性扰动通常是从初始属性集中抽取出若干个属性子集,然后利用不同的属性子集训练出不同的个体学习器。比如有:
RF 在以 决策树 为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入随机属性。传统决策树在选择划分属性时是在当前结点的属性集合中选择一个最优属性;而在RF中,对基决策树的每个结点, 先从该结点的属性集合中随机选择一个包含 个属性的子集 , 然后再从这个子集中选择一个最优属性用于划分 。
随机森林中基学习器多样性不仅来自样本扰动,还来自属性扰动,使得最终集成的泛化性能可通过个体学习器之间差异度的增加而进一步提升。
但这类输入属性扰动的方法只对大量冗余属性的数据集有效,但若数据集只包含少量属性,或者冗余属性很少,则不宜使用。随机森林由于起始引入了属性扰动,性能会比Bagging差一点,但随着个体数量增多,随机森林通常会收敛到更低的泛化误差。
算法参数扰动指的是通过随机设置不同的参数来训练差别较大的个体学习器。如下图所示的神经网络的隐层神经元数、初始连接权值等不同。
此类方法对参数较多的算法有效,对参数较少的算法,可通过将其学习过程中某些环节用其他类似方法代替?从而达到扰动的目的。这可能也是发论文的一个点吧,自己以后可能也不咋用这个算法,就不去做算法调研了。
输出标记扰动是对训练样本的类别标记稍作变动,将原来的多分类问题随机转化 多个二分类问题 来训练基学习器。经典的一个算法就是纠错输出编码法(Error-Correcting Output Codes,ECOC)
将每个类别对应一个长度为n的二进制位串(称为码字),共形成m个码字,这些码字的同一位描述了一个二值函数。学习结束后获得n个二分器,在分类阶段,每个二分器对输入样本产生的输出形成输出向量,然后由决策规则判定输入样本的类别。
这类方法对类数足够多的数据集有效,但若数据集包含的类数较少,则不宜使用。
混合扰动在同一个集成算法中同时使用上述多种扰动方法。比如随机森林就同时使用了训练样本扰动和输入属性扰动。
上文五点讨论的是如何产生好而不同的个体学习器。那产生了好而不同的个体学习器之后,我们如何结合这些策略?主要有 平均法 和常见的 投票法 (voting),具体包括:
简单地将输出结果平均一下
乘以权值系数将其加起来。
即若某标记得票过半数,则分类为该标记,否则拒绝分类。
分类为得票最多的标记,若同时有多个标记获最高票,则从中随机选取一个。
给每个个体学习器预测的类标记赋一个权值,分类为权值最大的标记。这里的权值通常为该个体学习器的分类置信度(类成员概率)。
③ 2021-01-25
机器学习(周志华) 参考答案 第十二章 计算理论学习
机器学习(周志华西瓜书) 参考答案 总目录
http://blog.csdn.net/icefire_tyh/article/details/52064910
从三个方面来确定泛化误差的上界,确定学习的可行性。
1.试证明Jensen不等式:对任意凸函数f(x),有f(E(x))≤E(f(x))。
显然,对任意凸函数f(x),必然有
取 ,
所以:
以此类推得:
2.试证明引理12.1。
引理(12.1)若训练集D包含m个从分布Ɗ上独立同分布采样而得的样例, ,则对任意 ,有 。
已知Hoeffding不等式:若 为m个独立的随机变量,且满足 ,则对任意 ,有
。
将 替换为损失函数 ,显然 ,且独立。
带入Hoeffding不等式得:
其中
所以有: 。
3.试证明推论12.1。
推论(12.1):若训练集D包含m个从分布 上独立同分布采样而得的样例, ,则对任意 ,式(12.18)以至少 的概率成立。
式(12.18):
有引理(12.1)可知, 成立
即
取 ,则
所以 的概率不小于
整理得: 以至少 的概稿罩腔率成立。
4.试证明: 空间中线性超平面构成的假设空间的VC维是d+1。
线性空间超平面公式为 ,超平面将空间分为二块,即二分类。
取 空间中不共超平面的d+1个点,为了简化,假设是各坐标轴基向量和原点。
设A是(d+1)*(d+1)矩阵,第一列是b的系数1,第二列起是各个点的坐标。
要证明的是,对于任意的 ,存在 使得 成立。
由于X是可逆矩阵,可以得 使得 成立。所以VC维至少是d+1。
由于R^d空间中的d+2个点必然线性相关,将第d+2个点写成前n+1个点的线性组合:
,
则:
对任意的 ,取 ,得到 恒成立,所以此时 无法被打散。
即VC维小于d+2。
所以 空间中线性超平面构成的假设空间的VC维是d+1。
5.试计算决策树桩假设空间的VC维。
如果是非连续属性,通过决策树一次划分无法确定节点个数,可能导致VC维无限大。
仅考虑连续属性单变量的决策树桩。
由于决策树的划分是与坐标轴平行的超平面,显然平面上的2个点是可以被打散的,即VC维大于等于2。
对于平面的3各点,如果其中两个点的连线与一条坐标轴平行,另两个点的键衫连线与另一坐标轴平行。比如(0,0),(0,1),(1,0)三个点,无法通过一个与坐标轴平行的超平面来划分。所以VC维小于3。
所以决策树桩假设空间的VC维是2。
6.决策树分类器的假设空间VC维可以为无穷大。
由于决策树如果不限制伸展,会包含整个假设空间。对任意多的样本,决策树可以使得训练误差为0,所以VC维是无穷大。
7.试证明:最近邻分类器的假设空间VC维为无穷大。
最近邻分类器,也就是闷历1NN,总是会把自己分类成自己的样本分类,所以对任何数目的样本训练误差恒为0。如图所示
8.试证明常数函数c的Rademacher的复杂度为0。
常数函数c的Rademacher的复杂度为
其中 是随机变量,以0.5的概率取1,0.5的概率取-1。
所以
9.给定函数空间 ,试证明Rademacher复杂度 。
当 时,
当 时,
所以
即: 。
10.考虑定理12.8,试讨论通过交叉验证法来估计学习算法泛化能力的合理性。
K折交叉验证,当K=m时,就成了留一法。
由式(12.59):
取 时,可以得到:
以至少 的概率成立,所以留一法有不错的泛化能力。
前提条件是 对于损失函数l满足 均匀稳定性,且 应该是 这个量级。
仅拿出一个样本,可以保证很小的 。
随着K的减小,训练用的样本会减少, 逐渐增大,当 超出 量级时,交叉验证就变得不合理了。
④ 《机器学习》pdf下载在线阅读,求百度网盘云资源
《机器学习》(周志华)电子书网盘下载免费在线阅读
链接:https://pan..com/s/1JOJeNfgMu0yr0cDH35z4lw
书名:机器学习
作者:周志华
豆瓣评分:8.7
出版社:清华大学出版社
出版年份:2016-1-1
页数:425
内容简介:
机器学习是计算机科学与告卜人工智能的重要分支领域. 本书作为该领域的入门教材,在内容上尽可能涵盖机器学习基础知识的各方面。 为了使尽可能多的读者通过本书对机器学习有所了解, 作者试图尽可能少地使用数学知识. 然而, 少量的概率、统计、代数、优化、逻辑知识似乎不可避免. 因此, 本书更适合大学三年级以上的理工科本科生和研究生, 以及具有类似背景的对机器学 习感兴趣的人士. 为方便读者, 本书附录给出了一些相关数学基础知识简介.
全书共16 章,大致分为3 个部分:第1 部分(第1~3 章)介绍机器学习的基础知识;第2 部分(第4~10 章)讨论一些经典而常用的机器学习方法(决策树、神经网络、支持向量机、贝叶斯分类器、集成学习、聚类、降维与度量学习);第3 部分(第11~16 章)为进阶知识,内容涉及特征选择与稀疏学习、计算学习理论、半监督学习、概率图模型、规则学习以及强化学习等.前3章之外的后续各章均相对独立, 读者可根据自己的兴趣和时岩此间情况选择使用. 根据课时情况, 一个学期的本科生课程可考虑讲授前9章或前10章; 研究生课程则不妨使用全书.
书中除第1章外, 每章都给出了十道习题. 有的习题是帮助读者巩固本章学习, 有的是为了引导读者扩展相关知识. 一学期的一般课程可使用这些袜枣穗习题, 再辅以两到三个针对具体数据集的大作业. 带星号的习题则有相当难度, 有些并无现成答案, 谨供富有进取心的读者启发思考.
本书可作为高等院校计算机、自动化及相关专业的本科生或研究生教材,也可供对机器学习感兴趣的研究人员和工程技术人员阅读参考。
作者简介:
周志华,南京大学教授,计算机科学与技术系副主任,软件新技术国家重点实验室常务副主任,机器学习与数据挖掘研究所(LAMDA)所长,校、系学术委员会委员;ACM杰出科学家,IEEE Fellow,IAPR Fellow,中国计算机学会会士;长江学者特聘教授,国家杰出青年基金获得者。2007年创建南京大学机器学习与数据挖掘研究所(LAMDA),2010年11月任软件新技术国家重点实验室常务副主任,2013年5月任计算机系副主任。
⑤ 请问有没有纯小白入门机器学习的书籍
1.机器学习
首先推荐的一本书的周志华的《机器学习》,网称西瓜书,这是机器学习领域的经典入门教材之一,是一本大而全的书!内容中有用到西瓜举例子。如果你之前真的没有接触过任何关于机器学习的知识,那么这本书大概可以作为你第一本入门书。这本书对理论的讲解并没有很深入,但是通过举例子可以让人很容易理解每一个算法。
第二本是推荐李航的统计学习方法,推荐指数五颗星,真香指数满天星。这本书对机器学习原理的解释、公式的推导非常非常详尽,相信看完这本书,不会再说机器学习是玄学了。目前已经出了第二版。第二版要比第一版厚一些。使用这本书强烈建议里面的公式动手在白纸上推一推!
第三本推荐的是机器学习实战,通过上面两本书学习了概念、原理、公式推导,接下来可以实战一下。这本书作为机器学习实战的入门书再合适不过。 里面的代码跟着敲,不敲没效果哦。
⑥ 西瓜书是什么意思啊
西瓜书,即周志华老师的《机器学习》一书,因封面画着西瓜而得名。这一系列文章,主要对西瓜书中的一些概念和公式做出通俗的解读工作。
1、 引言
机器学习:我们在日常生活中的决策,比如当前天气穿什么衣服、如何解一道数学题等,都是根据以往的经验做出的。人工智能的终极目标就是让机器拥有像人一样的智能,既然基于经验的决策经常发生在人身上,那我们也可让机器试试基于经验决策,来解决一些之前没能解决的问题。
3、假设空间谈绝凯
归纳:就是用那一堆西瓜做实验的过程,先观察瓜的外表,再打开瓜尝尝是否好吃。随着经验增多,你渐渐总结出什么样的瓜是好瓜。当然,不同的人会有不同的总结方法。
演绎:利用总结出来的规律给水果摊进货的过程。如果进来的都是好瓜,那说明规律总结对了。如果进来的不全是好瓜,说明还要继续进行归含唤纳。
假宏腔设:用西瓜做实验的时候,先假设颜色深的瓜好吃,再去验证这一假设是否正确。当然这样的假设会有很多,归纳就是寻找最优假设的过程。
⑦ 求 机器学习周志华pdf
链接:
《机器学习》展示了机器学习中核心的算法和理论,并阐明了算法的运行过程。