贝叶斯决策理论
朴素贝叶斯是贝叶斯决策理论的一部分,所以讲述朴素贝叶斯之前有必要快速了解一下贝叶斯决策理论。
贝叶斯决策理论的核心思想,即选择具有最高概率的决策。
贝叶斯准则告诉我们如何交换条件概率中
的条件与结果,即如果已知P(x|c),要求P(c|x),那么可以使用下面的计算方法:
P(c∣x)=P(x∣c)P©P(x)
P(c|x)=\frac{P(x|c)P©}{P(x)}
P(c∣x)= P(x)P(x∣c)P©
则同理可得,若给定某个由x、y表示的数据点,那么该数据点来自类别c1的概率可通过如下公式计算:
P(ci∣x,y)=P(x,y∣ci)P(ci)P(x,y)
P(c_{i}|x,y)=\frac{P(x,y|c_{i})P(c_{i})}{P(x,y)}
P(c i∣x,y)= P(x,y)P(x,y∣c i)P(ci )
由此,定义贝叶斯分类准则为:
如果P(c1|x, y) > P(c2|x, y),那么属于类别c1。
如果P(c1|x, y) < P(c2|x, y),那么属于类别c2。
二、朴素贝叶斯算法简介
我们称之为“朴素”,是因为整个形式化过程只做最原始、最简单的假设。
优缺点:
优点:在数据较少的情况下仍然有效,可以处理多类别问题。
缺点:对于输入数据的准备方式较为敏感;由于朴素贝叶斯的**“朴素”特点**,所以会带来一些准确率上的损失。
适用数据类型:
标称型数据
朴素贝叶斯的一般过程:
收集数据:可以使用任何方法。本章使用RSS源。
准备数据:需要数值型或者布尔型数据。
分析数据:有大量特征时,绘制特征作用不大,此时使用直方图效果更好。
训练算法:计算不同的独立特征的条件概率。
测试算法:计算错误率。
使用算法:一个常见的朴素贝叶斯应用是文档分类。可以在任意的分类场景中使用朴素贝叶斯分类器,不一定非要是文本。
三、代码实现(python3)
使用 Python 进行文本分类:
我们可以观察文档中出现的词,并把每个词的出现或者不出现作为一个特征,这样得到的特征数目就会跟词汇表中的词目一样多。
如果特征之间相互独立,那么样本数就可以从N1000减少到1000×N。
所谓独立(independence)指的是统计意义上的独立,即一个特征或者单词出现的可能性与它和其他单词相邻没有关系。
1.准备数据:从文本中构建词向量
2.训练算法:从词向量计算概率
3.测试算法:根据现实情况修改分类器
4.准备数据:文档词袋模型
四、实战:使用朴素贝叶斯过滤垃圾邮件
1.准备数据:切分文本
2.测试算法:使用朴素贝叶斯进行交叉验证
本例中共有50封电子邮件,并不是很多,其中的10封电子邮件被随机选择为测试集,同时也将其从训练集中剔除。分类器所需要的概率计算只利用训练集中的文档来完成。
这种随机选择数据的一部分作为训练集,而剩余部分作为测试集的过程称为留存交叉验证(hold-out
cross validation)。
假定现在只完成了一次迭代,那么为了更精确地估计分类器的错误率,就应该进行多次迭代后求出平均错误率。
五、朴素贝叶斯小结
对于分类而言,使用概率有时要比使用硬规则更为有效。贝叶斯概率及贝叶斯准则提供了一种利用已知值来估计未知概率的有效方法。
可以通过特征之间的条件独立性假设,降低对数据量的需求。独立性假设是指一个词的出现概率并不依赖于文档中的其他词。
当然我们也知道这个假设过于简单。这就是之所以称为朴素贝叶斯的原因。尽管条件独立性假设并不正确,但是朴素贝叶斯仍然是一种有效的分类器。
利用现代编程语言来实现朴素贝叶斯时需要考虑很多实际因素。下溢出就是其中一个问题,它可以通过对概率取对数来解决
词袋模型在解决文档分类问题上比词集模型有所提高。
还有其他一些方面的改进,比如说移除停用词,当然也可以花大量时间对切分器进行优化。
逻辑回归
主要思想:根据现有数据对分类边界线建立回归公式,以此进行分类。
sigmoid函数
计算公式如下:
f(z)=1/(1+e^(-z)),它的特点在于当z为0时,Sigmoid函数值为0.5。 随着z的增大,对应的Sigmoid值将逼近于1;而随着z的减小,Sigmoid值将逼近于0,当横坐标足够大时,它看起来像一个单位阶跃函数。
实现Logistic回归分类器思路:
在每个特征上都乘以一个回归系数,然后把 所有的结果值相加,将这个总和代入Sigmoid函数中,进而得到一个范围在0~1之间的数值。任 何大于0.5的数据被分入1类,小于0.5即被归入0类。
logistic回归
logistic回归是一种二分类算法,直接为样本估计出它属于正负样本的概率。先将向量进行线性加权,然后计算logistic函数,可以得到[0,1]之间的概率值,它表示样本x属于正样本的概率:
正样本标签值为1,负样本为0。使用logistic函数的原因是它单调增,并且值域在(0, 1)之间,刚好符合概率的要求。
Logistic回归是一种二分类算法,虽然使用了概率,但它是一种判别模型!另外要注意的是,logistic回归是一种线性模型,这从它的预测函数就可以看出。它本身不能支持多分类问题,它的扩展版本softmax回归可以解决多分类问题。
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC
语法后生成一个完美的目录。
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' |
‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" |
“Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash |
– is en-dash, — is em-dash |
一个具有注脚的文本。2
Markdown将文本转换为 HTML。
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:
这将产生一个流程图。:
我们依旧会支持flowchart的流程图:
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
mermaid语法说明 ↩︎
注脚的解释 ↩︎