半朴素贝叶斯算法

前置知识:

贝叶斯公式:https://blog.csdn.net/qq_32172681/article/details/98032205

朴素贝叶斯算法:https://blog.csdn.net/qq_32172681/article/details/101112211

 

1.、半朴素贝叶斯的“半”

前面说到,朴素贝叶斯(NB)的‘朴素’就体现在它假设各属性之间没有相互依赖,可以简化贝叶斯公式中P(x|c)的计算。但事实上,属性直接完全没有依赖的情况是非常少的。如果简单粗暴用朴素贝叶斯建模,泛化能力和鲁棒性都难以达到令人满意。

这就可以引出主角半朴素贝叶斯了,它假定每个属性最多只依赖一个(或k个)其他属性。它考虑属性间的相互依赖,但假定依赖只有一个(ODE)或k个(kDE)其他属性。这就是半朴素贝叶斯的’半’所体现之处。半朴素贝叶斯分类器适当考虑一部分属性之间的相互依赖信息,从而既不需要进行联合概率计算,又不至于彻底忽略比较强的属性依赖关系。

"独依赖估计" (One-Dependent Estimator,简称ODE)是半朴素贝叶斯分类器最常用的一种策略。所谓"独依赖"就是假设每个属性在类别之外最多仅依赖于一个其他属性。

于是半朴素贝叶斯分类器的公式为:

其中为属性所依赖的属性,称为的父属性。

问题的关键就转化为如何确定每个属性的父属性,不同的做法产生不同的独依赖分类器。

 

2、 常见的半朴素贝叶斯算法SPODE和TAN

SPODE算法:假设所有属性都依赖同一个属性,这个属性称为“超父”属性。

TAN算法:通过最大带权生成树算法确定属性之间的依赖关系,简单点说,就是每个属性找到跟自己最相关的属性,然后形成一个有向边(只能往一个方向)。

下面的图借自周志华老师西瓜书:

è¿éåå¾çæè¿°

 

3、详解TAN算法

步骤如下:

(1)计算任意两个属性之间的条件互信息(CMI,即相互依赖程度)

è¿éåå¾çæè¿°

(2)以每个属性为节点(nodenode),CMI为边(edgeedge)形成一张图。找到这张图的最大带权生成树。即找到一个节点之间的连接规则,这个规则满足三个条件:

  • 能够连接所有节点;
  • 使用最少数目的边;
  • 边长(CMI)总和最大

(3)再把节点连接关系设置为有向,即从父节点指向子节点。在这里把最先出现的属性设置为根节点,再由根节点出发来确定边的方向。在代码中把第2步和第3步一起执行。

(4)求  

 

 

参考:http://www.luyixian.cn/news_show_3477.aspx

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值