数据挖掘算法之贝叶斯网络

Posted 汤高

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据挖掘算法之贝叶斯网络相关的知识,希望对你有一定的参考价值。

贝叶斯网络

上上周末写完上篇朴素贝叶斯分类后,连着上了七天班,而且有四天都是晚上九点下班,一直没有多少时间学习贝叶斯网络,所以更新慢了点,利用清明节两天假期,花了大概七八个小时,写了这篇博客,下面讲的例子有一个是上一篇朴素贝叶斯讲过的,还有其他的都是出自贝叶斯网络引论中。我会以通俗易懂的方式写出来,不会讲得很复杂,会介绍贝叶斯网络的绝大部分知识点,看完会让你对于贝叶斯网络有个大概的了解。但是对于比较深层次的东西,我先不打算写。比如训练贝叶斯网络因为涉及到比较加深入的数学知识,我自己暂时也不是理解得很透彻,所以先不写。

这几天利用闲暇时间,看了一部电视剧,stb超级教师,这部电视剧虽然没有什么明星,但是个人觉得还是挺好看的,比较有营养,算是一部喜剧和励志片。故事情节大概就是一个家庭贫困的孩子,在高中没有读完就去黑市打黑拳,十多年后,这个男主角和几个兄弟在黑道上打出了一片天,但是男主角后悔当初没读书,对于打打杀杀的日子感到腻了,就去一家高中当了一个班主任,但是这个班是全校的垃圾班,班上的班主任已经换了16个,有的还被学生整得去了精神病院。虽然刚开始也遭到了同学们的暗算,但是在他不懈的坚持下,感化了所有学生。因为男主角以前没受过什么正规教育,没有教师资格证,被一些老师排挤,要求他离校,最终在男主角不断的坚持和同学们的帮助下,考上了教师资格证。

里面有几句男主角说的话:共勉

成长就是让你一个人,踉踉跄跄的受伤,跌跌撞撞的坚强

你们生下来不是为了考试成绩而活,那证明不了什么,真正重要的,是你们要好好的活着,为自己找到一个真正的答案。

不管是什么样的人,只要肯用心,肯努力,都可以达到自己的目标


引子

前面讲了朴素贝叶斯,朴素贝叶斯有个前提,就是每个随机变量(特征属性)都是相互独立的
但是在现实生活中,我们遇到的情况不是所有随机变量都相互独立,他们之间相互关联、相互影响。

上一篇我们讲过一个通过朴素贝叶斯来检测真假账号的例子。

账号真假的判断根据三个特征属性来判断:

             

       F1: 日志数量/注册天数 

     F2: 好友数量/注册天数 
     F3: 是否使用真实头像(真实头像为1,非真实头像为0)

通过计算这个式子:P(F1|C)P(F2|C)P(F3|C)P(C) 来判断一个账号的真假。但是我们的前提是假设这三个特征相互独立。
现在发现三个特征属性具有如图所示的关联关系



1、真实账号比非真实账号平均具有更大的日志密度、各大的好友密度以及更多的使用真实头像
2、日志密度与好友密度、日志密度与是否使用真实头像在账号真实性给定的条件下是独立的
3、使用真实头像的用户比使用非真实头像的用户平均有更大的好友密度

 
 
由于特征属性间存在依赖关系,使得朴素贝叶斯分类不能解决这种问题了,看下面这种解决办法:
上图是一个有向无环图,其中每个节点代表一个随机变量,而弧则表示两个随机变量之间的联系,代表父节点影响子节点

不过上面这个图,只是定性地给出了随机变量(特征属性)之间的关系,如果要定量,还需要一些数据,这些数据就是每个节点对其直接前驱节点的条件概率,而没有前驱节点的节点则使用先验概率表示。而这些数据可以通过训练获得,如下,是通过训练获得的在已知账号为真或假地情况下,使用真实头像的概率分布





 纵向表头表示条件变量,横向表头表示随机变量。上表为真实账号和非真实账号的概率,而下表为头像真实性对于账号真实性的概率。这两张表分别为“账号是否真实”和“头像是否真实”的条件概率表。有了这些数据,不但能顺向推断,还能通过贝叶斯定理进行逆向推断。例如,现随机抽取一个账户,已知其头像为假,求其账号也为假的概率:

      

      也就是说,在仅知道头像为假的情况下,有大约35.7%的概率此账户也为假。

上面的计算式子中分母P(H=0)用到了全概率公式进行变形

看看百度百科上面全概率公式的定义

若事件B1,B2,…构成一个完备事件组且都有正概率,则对任意一个事件A,有如下公式成立:

以上是关于数据挖掘算法之贝叶斯网络的主要内容,如果未能解决你的问题,请参考以下文章

数据挖掘算法之贝叶斯网络

04 贝叶斯算法 - 贝叶斯网络

从朴素贝叶斯分类到贝叶斯网络

推荐数据挖掘十大算法之贝叶斯分类算法

朴素贝叶斯与贝叶斯网络

第七章 贝叶斯网络