机器学习-斯坦福:学习笔记6-朴素贝叶斯

朴素贝叶斯

本次课程大纲:

1、 朴素贝叶斯

-          朴素贝叶斯事件模型

2、 神经网络(简要)

3、 支撑向量机(SVM)铺垫 – 最大间隔分类器

复习:

1、 朴素贝叶斯

一种生成学习算法,对p(x|y)建模。

例:垃圾邮件分类

以邮件输入流作为输入,输出y为{0,1},1为垃圾邮件,0为非垃圾邮件。

将邮件文本表示为一个输入向量x

1)  xi∈{0,1},表示字典中的第i个词是否出现在邮件中

2)  x长度为n,n为字典的词数

3)  该模型称为多元伯努利事件模型

假设xi在给定y的时候是条件独立的,则x在给定y下的概率可简化为:

根据朴素贝叶斯公式,求p(y|x)最大时的y:

算法变化版本:

1)  让xi取多个值,xi∈{1,2,…,k},类似上式有:p(x|y) = ∏ p(xi|y),但是p(xi|y)变成多项式分布,而不是伯努利分布。

例:估计房屋面积预测房屋能否被卖掉,将房屋面积分成几个离散区间,如0-,1000为xi=1,1000-1500为xi=2,1500-2000为xi=3,2000以上为xi=4

2)  如上例处理邮件(文本)中,x向量记录每个词出现的次数(而不是是否出现)

多项式事件模型

接上例,给出一封邮件,将它表示成特征向量:

ni表示邮件中词的数量,xj是个到词典的索引,表示该词在词典的位置。

如邮件中有300个词,那么特征向量x(i)长度为300,若词典有50000个词,每个元素xj的取值范围为{1,2,…,50000}

则生成模型的联合概率p(xy)为:

n为邮件长度

上式理解:邮件内容满足一些概率分布,有一些随机分布在生成这些邮件。过程为:首先确定y,即是否为垃圾邮件,决定一个人是否向你发送垃圾邮件后,遍历邮件的300个词,按照某种概率分布生成一些词,基于他们是否向你发送垃圾邮件

模型参数:

表示某人决定向你发送垃圾邮件(y=1)时,选择词k的概率,类似有:

给出训练集后,求极大似然估计:

得到:

上面第一个式子,分子的意思是,对所有标签为1的邮件求和,之后对垃圾邮件中的词k求和,所以分子实际上就是训练集中所有垃圾邮件中词k出现的次数。分母是训练集中所有垃圾邮件的长度。比值的含义就是所有垃圾邮件中,词k占的比例。表示生成垃圾邮件时选择词k的概率。

应用Laplace平滑,分子加1,分母加总词数(字典大小,xi可能取值的数目):

事实上,多项式事件模型比之前的模型要好,可能是因为考虑了词出现的次数这个因素。但此问题仍存在争论。

非线性分类算法

例:logistic回归中,假设值小于0.5预测0,大于0.5预测1。即给定一个训练集,logistic回归会找到一条直线(牛顿方法或梯度下降),将正负样本合理分开。但有时数据不能被一条直线分开,需要一种算法,学习非线性的分界线。

上一讲的推论:

x|y=1 ~ ExpFamily(η1),x|y=0 ~ ExpFamily (η0)  =>  p(y=1|x)是logistic函数

即x|y的分布属于指数分布族,可推出后验分布是logistic函数。

朴素贝叶斯模型也属于指数分布族,所以也是用logistic线性分类器。下面介绍一种非线性分类器。

2、 神经网络

假设特征是x0,x1,x2,x3,x0设置为1,用连线表示logistic回归单元,圆圈表示计算节点,下图中间的节点以x0等特征作为输入,hθ(x)作为输出,这是一个sigmoid函数。为了找到非线性的界限,需要找到一种方式,表示出能够输出非线性分界限的假设。

将之前画的小单元拼在一起,得到神经网络。特征输入到若干个sigmoid单元,在输入到另外一个sigmoid单元,得到输出。中间节点的输出值设为a1,a2,a3。这些中间节点称为隐藏层,神经网络可以由多个隐层。

每个中间节点有一系列参数:

a2,a3同理。g为sigmoid函数。最终的输出值为:

其中,a向量由a1,a2,a3组成。

一种学习模型参数的方法是,利用成本函数J(θ),使用梯度下降使J(θ)最小。即用梯度下降使得神经网络的预测结果和你观察到的训练集中的样本标签尽可能接近。在神经网络中,这种方法称为反向传播。

3、 支撑向量机铺垫 – 最大间隔分类器

另外一种能生成非线性分类器的学习算法。本节课先介绍另外一类线性分类器,在下一讲或者下下讲中,利用支撑向量机的想法,进行一些巧妙的改动和扩展,让它可以生成非线性分界线。

两种对于分类的直观理解:

1)       考虑logistic回归,计算θTx:

输出1  <=> θTx>=0;输出0  <=> θTx<0

如果θTx>>0,相当确定的预测y=1;如果θTx<<0,相当确定的预测y=0

对于所有的i,如果y=1,θTx(i)>>0,如果y=0,θTx(i)<<0,那么我们认为分类器是良好的。即如果我们根据训练集找到了参数,我们的学习算法不仅需要保证分类结果正确,更要进一步保证分类结果的确定性。

2)       假设训练集是线性可分割的,即一定有一条直线可以将训练集分开。那么直观来看,我们一定会选择和正负样本都有一定距离的直线。后面讲到分类器的几何间隔时,再正式讨论。

支撑向量机中改动的符号:

输出y∈{-1,+1}

h输出的假设值也改为{-1,+1}

g(z) = { 1 , 如果z>=0;  -1, 如果z<0}

之前在使用式:hθ(x)=g(θTx)时,假设x0=1且x为n+1维向量,现在忽略这两个假设,表示为:hw.b(x)=g(wTx+b),这里的b相当于原来的θ0,w相当于原来θ除去θ0剩余部分,长度为n维。将截距b单提出来,方便引出支撑向量机。

函数间隔

一个超平面(w,b)和某个特定训练样本(x(i),y(i))对应的函数间隔定义为:

参数(w,b)定义了一个分类器,例如定义了一个线性分界线。

如果y(i)=1,为了获得较大的函数间隔,需要令wTx(i)+b >> 0;

如果y(i)=-1,为了获得较大的函数间隔,需要令wTx(i)+b << 0

如果y(i)(wTx(i)+b) > 0,意味着分类结果正确

一个超平面(w,b)和整个训练集的函数间隔定义为:

即相对于整个训练集的函数间隔定义为所有相对于样本的函数间隔的最坏情形(上述讲到,分界线距离样本越远效果越好)。

几何间隔:

几何距离定义为:一个训练样本对应的点到由超平面确定的分隔线的距离。如下图A到分隔线的距离AB就是几何距离。

和分隔线垂直的单位向量表示为:w/||w||,AB这段距离表示为γ(i),γ上有小三角表示函数间隔,没有表示几何间隔。若A点表示x(i),那么点B表示为:

由于点B在分隔线上,它应该还满足:

可以解出:

上式说明,对于一个训练样本x(i),到由参数w和b确定的分隔平面之间的距离,可以由上式得到。

由于上述一直假设对样本进行了正确的分类,所以更一般的,将几何间隔定义为:

这个定义和函数间隔很相似,不同点是对向量w进行了标准化。同样,希望几何间隔也是越大越好。

结论:如果||w||=1,函数间隔等于几何间隔。更一般的,几何间隔等于函数间隔除以||w||。

一个超平面(w,b)和整个训练集的几何间隔定义为:

和函数间隔类似,取样本中最小的几何间隔。

最大间隔分类器可以看做是支撑向量机的前身,是一种学习算法,选择特定的w和b,使几何间隔最大化。最大分类间隔是下述这样的优化问题:

即选择γ,w,b是γ最大,同时满足条件:所选取的最大几何间隔必须保证每个样本的结合间隔至少为γ。

最大间隔分类器的效果和logistic回归结果差不多好,深入研究这个分分类器,可以用一种更巧妙的方法让其支持无限维的特征空间,得到有效的非线性分类器。

时间: 2024-08-23 18:28:15

机器学习-斯坦福:学习笔记6-朴素贝叶斯的相关文章

机器学习笔记:朴素贝叶斯方法(Naive Bayes)原理和实现

本文主要描述了朴素贝叶斯分类方法,包括模型导出和学习描述.实例部分总结了<machine learning in action>一书中展示的一个该方法用于句子感情色彩分类的程序. 方法概述 学习(参数估计) 实现:朴素贝叶斯下的文本分类 模型概述 朴素贝叶斯方法,是指 朴素:特征条件独立 贝叶斯:基于贝叶斯定理 根据贝叶斯定理,对一个分类问题,给定样本特征x,样本属于类别y的概率是 p(y|x)=p(x|y)p(y)p(x)......(1) 在这里,x是一个特征向量,将设x维度为M.因为朴素

机器学习笔记之朴素贝叶斯(Naive Bayes)原理

为什么叫朴素贝叶斯? 朴素是指特征条件独立:贝叶斯是指基于贝叶斯定理. $x=\frac{{-b}\pm\sqrt{b^2-4ac}}{2a}$ $p(y=c_k|x)=\dfrac{\prod_{i=1}^{M}p(x^i|y=c_k)p(y=c_k)}{\sum_kp(y=c_k)\prod_{i=1}^{M}P(x^i|y=c_k)}$....(2) $$ % MathType!MTEF!2!1!+-% feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2

机器学习基础——带你实战朴素贝叶斯模型文本分类

本文始发于个人公众号:TechFlow 上一篇文章当中我们介绍了朴素贝叶斯模型的基本原理. 朴素贝叶斯的核心本质是假设样本当中的变量服从某个分布,从而利用条件概率计算出样本属于某个类别的概率.一般来说一个样本往往会含有许多特征,这些特征之间很有可能是有相关性的.为了简化模型,朴素贝叶斯模型假设这些变量是独立的.这样我们就可以很简单地计算出样本的概率. 想要回顾其中细节的同学,可以点击链接回到之前的文章: 机器学习基础--让你一文学会朴素贝叶斯模型 在我们学习算法的过程中,如果只看模型的原理以及理

【资源分享】今日学习打卡--朴素贝叶斯法 (naive bayes classifier)

今日学习打卡,是一个非常简单的模型,朴素贝叶斯法(naive bayes classifier) 总得来说就是贝叶斯 + naive 通过,贝叶斯来计算事件发生概率: 然后,naive就是假设各个因素之间相互独立,互不影响. 在现实生活中,因素经常是有内在联系的.如:是否今天下雨,考虑因素有:气压,湿度,温度.实际上这些因素是有内在联系的,但是模型中假设它们相互独立,所以称为naive.这样,在计算中相当简单,且往往预测结果还算不错的. 链接: https://pan.baidu.com/s/1

《机器学习实战》学习笔记:基于朴素贝叶斯的分类方法

概率是许多机器学习算法的基础,在前面生成决策树的过程中使用了一小部分关于概率的知识,即统计特征在数据集中取某个特定值的次数,然后除以数据集的实例总数,得到特征取该值的概率. 目录: 一.基于贝叶斯理论的分类方法 二.关于朴素贝叶斯的应用场景 三.基于Python和朴素贝叶斯的文本分类 1.准备数据 2.训练算法 3.测试算法 四.小结 以下进入正文: 一.基于贝叶斯理论的分类方法 假设有两类数据组成的数据集如下: 其中,假设两个概率分布的参数已知,并用p1(x,y)表示当前数据点(x,y)属于类

斯坦福CS229机器学习课程笔记四:GDA、朴素贝叶斯、多项事件模型

生成学习与判别学习 像逻辑回归,用hθ(x) = g(θTx) 直接地来建模 p(y|x; θ) :或者像感知机,直接从输入空间映射到输出空间(0或1),它们都被称作判别学习(discriminative learning).与之相对的是生成学习(generative learning),先对 p(x|y) 与 p(y) 建模,然后通过贝叶斯法则导出后验条件概率分布分母的计算规则为全概率公式:p(x) = p(x|y = 1)p(y = 1) + p(x|y =0)p(y = 0).这一节介绍的

《机器学习实战》学习笔记:基于朴素贝叶斯的垃圾邮件过滤

概率是许多机器学习算法的基础,在前面生成决策树的过程中使用了一小部分关于概率的知识,即统计特征在数据集中取某个特定值的次数,然后除以数据集的实例总数,得到特征取该值的概率. 之前的基础实验中简单实现了朴素贝叶斯分类器,并正确执行了文本分类,这一节将贝叶斯运用到实际场景,垃圾邮件过滤这一实际应用. 实例:使用朴素贝叶斯过滤垃圾邮件 在上一节:http://blog.csdn.net/liyuefeilong/article/details/48383175中,使用了简单的文本文件,并从中提取了字符

(笔记)斯坦福机器学习第六讲--朴素贝叶斯

本讲内容 1. Naive Bayes(朴素贝叶斯) 2.Event models(朴素贝叶斯的事件模型) 3.Neural network (神经网络) 4.Support vector machines(支持向量机) 1.朴素贝叶斯 上讲中的垃圾邮件问题有几个需要注意的地方: (1)  一个单词只有出现和不出现两种可能,因此每个特征x只有两个取值 (2) 特征向量x的个数应该等于词典的长度,比如  将该算法一般化: (1) 让 可以取更多的值 此时  服从多项式分布,而不再是伯努利分布.一种

Stanford大学机器学习公开课(五):生成学习算法、高斯判别、朴素贝叶斯

(一)生成学习算法 在线性回归和Logistic回归这种类型的学习算法中我们探讨的模型都是p(y|x;θ),即给定x的情况探讨y的条件概率分布.如二分类问题,不管是感知器算法还是逻辑回归算法,都是在解空间中寻找一条直线从而把两种类别的样例分开,对于新的样例,只要判断在直线的哪一侧即可:这种直接对问题求解的方法可以称为判别学习方法. 而生成学习算法则是对两个类别分别进行建模,用新的样例去匹配两个模板,匹配度较高的作为新样例的类别,比如分辨大象(y=1)和狗(y=0),首先,观察大象,然后建立一个大