码迷,mamicode.com
首页 > 其他好文 > 详细

机器学习——朴素贝叶斯分类器

时间:2015-08-02 20:10:29      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:机器学习   贝叶斯   

假设现在要构建一个网络图书馆,我们可以给新进来的书贴上若干个标签,没有机器学习算法的情况下,我们需要给这些书手动分类,是计算机类的呀,还是非计算机类的呀,是小说类的呀,还是非小说类的云云。
那么,我们可以通过让程序自己学习如何通过一本书上的若干标签来进行图书类别的区分,这样就可以节省很多人力,这也是机器学习的魅力体现。
机器学习的基本原理是通过开发者给出这个程序一个学习集进行学习,再通过用户给的用户数据集进行学习的过程,机器学习包含很多的算法,当然,有大量数据的前提下,机器学习就和统计学密不可分,学习的时候有很高的耦合。这个图书馆图书分类器就是用到了概率论中的贝叶斯公式。
很奇怪为什么图书分类能和一个概率论公式挂上关系对吧?下面就详细分析一下:
首先,先回顾一下用到的概率论知识,这里需要知道两个公式,一个是条件概率公式,另一个就是贝叶斯公式啦。
条件概率公式:设A,B是两个条件
P(A|B)=P(AB)/P(B)
什么意思呢?就是说,如果A发生的条件是B先发生,那么A发生的概率就是B发生的前提下A和B同时发生。这就是上面那个公式的意义了。举个栗子来说,小红进女厕所,分析一下,首先小红得是个女的,然后她才能进了女厕所。。。这就是小红是女的的前提下小红进了女厕所,如果小红是女的事件为A,小红进女厕所事件为B,那这个概率就是P(B|A)=P(AB)/P(A),就是这个意思(随便举个栗子不要介意。。。简单明了嘛)。
贝叶斯公式是基于条件概率的

P(A|B)=P(B|A)*P(A)/P(B)

简单推导一下就能得出来,首先,条件概率公式即P(A|B)=P(AB)/P(B),那么P(B|A)=P(AB)/P(A),P(B|A)*P(A) = P(AB),此时P(AB)/P(B)=P(A|B)了。非常简单对吧!
那么回到实际问题中来,假设我们先考虑新进来的书是不是计算机类的书,那我们先看这本书的标签(即tag),假设这本书是计算机类的前提是它的tag为“算法”,“数据结构”,“开发”,“java”,“C/C++”其中的3个时,即tag1、tag2 、tag3同时发生,简记为P(tag1,tag2,tag3)。那么我们再设当前我们手中所有书中出现计算机类书的概率为P(A),则这本新进的书是计算机类书籍的概率就是P(A|tag1,tag2,tag3)=P(A(tag1,tag2,tag3))/P(tag1,tag2,tag3) (条件概率公式嘛)
用人话翻译就是这本书是计算机类书,那么就是在这本书的标签为tag1,tag2,tag3前提下出现计算机类图书且图书标签为tag1,tag2,tag3的概率。不懂慢慢消化下。。。
再通过贝叶斯公式我们得到:
P(A|tag1,tag2,tag3)=P(tag1,tag2,tag3|A)*P(A)/P(tag1,tag2,gat3)。也就是说,我们只要知道这三项:P(tag1,tag2,tag3|A),P(A),P(tag1,tag2,gat3)就可以啦。
P(tag1,tag2,tag3)的意思是这本书的标签是从所有标签中选出这三个标签的概率,我们先不求,一会说为什么。
再看看P(tag1,tag2,tag3|A),由于tag1、tag2和tag3的出现与否是相互独立的,所以P(tag1,tag2,tag3|A)=P(tag1|A)*P(tag2|A)*P(tag3|A)。
P(A)就是我们现有书籍中出现计算机类书的概率(比如我们有10本书,3个计算机的书,那P(A)就是0.3,注意的事,这里我们现有书籍其实就是文章一开始所述“开发者给出这个程序一个学习集进行学习”,读到这里,相信您对于机器学习的原理有个大概的理解了^_^)
呐,上述P(A|tag1,tag2,tag3)是求这本新进的书(tag1,tag2,tag3)是计算机类的概率,那么和这本书不是计算机类书的概率相比较,概率更大的自然就代表正确结果。那么这本书不是计算机类书的概率当然就是P(非A|tag1,tag2,tag3)咯。根据上文推的公式,P(非A|tag1,tag2,tag3)=P(tag1,tag2,tag3|非A)*P(非A)/P(tag1,tag2,tag3)。看看这俩(这本书是否是计算机类)的公式展开,分母都是P(tag1,tag2,tag3),这就是上文为什么我没让大家费劲去求这个的原因,直接消掉了,只要比较这俩公式的分子sei大sei小就行啦!
原理就是这么简单。机器学习中使用也是比较广泛的朴素贝叶斯分类器的原理就是这样的,具体实现的时候当然不会这么轻松,一些边边角角的处理这里就不赘述了,当然,我们可以以此类推,垃圾邮件的分类啦,影片分类什么的,也都是这个原理。机器学习的原理也能比较清晰的从这个例子中体现。啰嗦一下上文机器学习的原理,通过开发者给出这个程序一个学习集进行学习,再通过用户给的用户数据集进行学习的过程。就是这个意思啦,这时候我首先联想到的是siri。。。用户量大这小玩意学的就是快,从前两年刚出来时大多驴唇不对马嘴,到现在机智的回答主银的问题(比如“我饿了”“前方20米处左转有厕所”。。。。。。)哈哈,开个玩笑啦,siri让我想起机器学习特有名的一句话机器学习界的名言:成功的机器学习应用不是拥有最好的算法,而是拥有最多的数据!机器学习的未来还是相当NB的,比如疯狂实验室——Google正在玩的自动驾驶汽车,通过模仿人的驾驶,自己学习,当然这玩意没眼睛是开不了车的啦,这车的车顶有个不断旋转的激光发射器来实时的探测周围物体的变化,所以人家机器的反应速度肯定比人是要快的,我也是看了那个丧心病狂的视频,驾驶技术还真不是普通司机能驾驭的呢~今天又看了一篇科普文章,终于是大致知道了机器学习和数据挖掘的关系,之前只是粗略认为是交集比较大,原来是数据挖掘=机器学习+数据库。只不过数据挖掘商业化后,大都用工具把机器学习中的算法进行封装,直接拿来用很方便,门槛也降低了。
最后,也不禁说一下自己的想法:感觉特斯拉CEO的言辞也不一定是杞人忧天,如果机器学习能力到了一个临界点,突然超过人类可控范围,那就是一个毫无人性的高智慧“生命体”,能消灭垃圾邮件的没有人性的机器有什么理由不能相信它有朝一日能消灭人类呢?
(这篇文章是我读了两个大牛的文章有感而发写的,机器学习入门还不算太难,虽然相对其它(android/ios之类的直接应用层开发或者网站开发)来说难了点,但是后续会更难,希望能坚持下去,多和大牛们交流交流,礼拜五遇到的北大神牛也不知道会不会带我,当然能带飞是我的幸运,没那运气只好回家自己搞啦~文章最后希望能对大家带来一点点的帮助也算是我没白码这些字啦)

版权声明:本文为博主原创文章,未经博主允许不得转载。

机器学习——朴素贝叶斯分类器

标签:机器学习   贝叶斯   

原文地址:http://blog.csdn.net/lhrsdl/article/details/47209411

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!