开发者社区> 玄学酱> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

关于贝叶斯分类问题的一些思考和实践

简介:
+关注继续查看

这几天的时间里看了一下关于分类算法的一些知识,趁热打铁写下博客来拯救下记忆力不好的自己,话不读多说,马上开始!

先说一下前提的题设条件.假设我们现在有了一封邮件,那么我们应该怎么根据这个邮件里的一些关键的词语来给这个邮件进行分类呢?

首先我们先想可以用贝叶斯公式来进行处理:

关于贝叶斯分类问题的一些思考和实践

c是一个详细的类别,比如”朋友的邮件”,”工作邮件”等等,而d就是一些关键的词语(注意:关键词可能会有多个),上边等式的左边是指:在给出当前的关键词的条件下,类型为C的概率,更多的情况就不详细说了,有兴趣的可以翻一下数理统计书。

接下来利用相关的统计学的知识对邮件进行处理(水平太菜了,就一切简化着来)

关于贝叶斯分类问题的一些思考和实践

上面的这个 NB 的公式,就是最简化的参数公式了,下面给出相关参数的计算方法:

关于贝叶斯分类问题的一些思考和实践

但是上边的第二个公式有以下缺点:

What if we have seen no training documents with the word “fantastic”  and classified in the topic positive(thumbs-up)?

关于贝叶斯分类问题的一些思考和实践

为了避免这一种情况,我们特地的给加上一些数

关于贝叶斯分类问题的一些思考和实践

所以上述的这个问题就解决了。

现在我们举一个例子吧,这样可以加深理解

关于贝叶斯分类问题的一些思考和实践

这个部分我也在继续学习,会将陆续更新!

以下是实践部分:

现在用实际的代码来实现这个分类的问题吧.在这里我们会使用TensorFlow来解决分类的问题,以前的时候我写过关于线性回归的问题.相信看过的小伙伴可能在这里就会想这个回归的问题.那么这个回归和分类有什么区别可以值得说道说道.分类和回归的区别在我看来是在于输出变量的类型上.通俗理解上定量输出是回归,或者是连续变量的预测.定性的输出是一个分类,或者说是离散变量的预测,比如说是预测我们北京的放假会是一个回归的任务,但是把一堆水果分为苹果,桃,梨子这些区别,这其实就是一个分类的任务.

在这个例子中我们会使用的是MINIST数据库,MINIST是一个手写字体的数字库,长得大概是下边这个样子

关于贝叶斯分类问题的一些思考和实践

现在我们导入MNIST数字库:

关于贝叶斯分类问题的一些思考和实践

这个数据中大概是包含了55000张训练的图片,每个图片的分辨率大概是28*28,所以我们训练网络的输入实际上是一个784个的像素数据。

关于贝叶斯分类问题的一些思考和实践

每张图片都表示一个数字,所以我们的输出是数字0到9,共10类。

prediction = add_layer(xs,784,10,activation_function=tf.nn.softmax)

调用add_layer函数构建一个只有输入输出层的简单的训练神经网络,其中输入的数据是784个特征,输出的是10个特征,激励的是使用softmax函数,大致结构类似这样:

关于贝叶斯分类问题的一些思考和实践

loss函数(即最优化目标函数)选用交叉熵函数。交叉熵用来衡量预测值和真实值的相似程度,如果完全相同,它们的交叉熵等于零。

关于贝叶斯分类问题的一些思考和实践

train方法这里使用的是梯度下降法:

关于贝叶斯分类问题的一些思考和实践

现在开始train,每次只取100张图片,免得数据太多训练太慢。每训练50次输出一下预测精度

关于贝叶斯分类问题的一些思考和实践

在经过10000次计算后我们得到结果:

关于贝叶斯分类问题的一些思考和实践




====================================分割线================================


本文作者:AI研习社

本文转自雷锋网禁止二次转载,原文链接

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
关于高可用系统建设的一些思考——面向职场新兵的指南
高可用对于软件系统来说是很重要的一环,搭建一个高可用系统主要有哪些步骤呢?在参与公司几个多数据中心项目的容灾架构设计和落地后,积累了一些高可用和多数据中心容灾的实践经验和一些思考,希望总结和分享出来和大家一起学习。
75 0
Java 关于split 的一些思考和应用(常见数据处理情况)
Java 关于split 的一些思考和应用(常见数据处理情况)
80 0
《贝叶斯思维:统计建模的Python学习法》一导读
本书中多数章节的灵感都是由真实世界里的问题所激发的,所以涉及了一些建模知识,在应用贝叶斯方法(或者其他的分析方法)前,我们必须决定真实世界中的哪些部分可以被包括进模型,而哪些细节可以被抽象掉。
1860 0
我的Java开发学习之旅------>Base64的编码思想以及Java实现
Base64是一种用64个字符来表示任意二进制数据的方法。 用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制到字符串的转换方法。
1287 0
[体感游戏]关于体感游戏的一些思考(三) --- 射击
 终于来了...大家一直在期待的部分 --- 射击!       出于某种原因,人们总是被射击弹丸的能力,而引入暴力,则是爆炸的能力所吸引。抛开那些蹩脚的哲学,射击是hard core游戏体验必不可少的,所以让我们加以探索。
984 0
+关注
玄学酱
这个时候,玄酱是不是应该说点什么...
20683
文章
438
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载