朴素Bayes组合-集成分类器

源码和论文:

Github源码

论文已经发表。请多多指教。

Markdown手稿

基于朴素 Bayes 组合的集成分类器

摘要

朴素Bayes分类器是一种简单有效的机器学习工具。本文用朴素Bayes分类器的原理推导出“朴素Bayes组合”公式,并构造相应的分类器。经过测试,该分类器有较好的分类性能,克服了朴素Bayes分类器精确度差的缺点。

关键字 朴素 Bayes 公式

导言

朴素Bayes分类器是一种简单易用的分类器,在文本分类方面表现出色。垃圾邮件过滤是它最为成功的商业应用。朴素Bayes分类器建立在条件独立假设的基础上,
c ( x ) = arg ⁡ max ⁡ c p ( c ∣ x ) , p ( c ∣ x ) ∼ ∏ i p ( x i ∣ c ) p ( c ) . c(x)=\arg\max_c p(c|x), p(c|x)\sim \prod_ip(x_i|c)p(c). c(x)=argcmaxp(cx),p(cx)ip(xic)p(c).
而这个假设比较强,通常无法被满足;计算出的后验概率和实际值也相差较大。不过,朴素Bayes分类器却不会因此而受太大影响。实际上,朴素Bayes分类器是一种可加模型,即有下述分解
f ( x ) = ∑ i = 1 n f i ( x i ) , x = ( x 1 , x 2 , … , x n ) . f(x)=\sum_{i=1}^nf_i(x_i), x=(x_1,x_2,\dots,x_n). f(x)=i=1nfi(xi),x=(x1,x2,,xn).
和其他的机器学习方法一样,人们在原来的基础上提出了各种改进版本。本文提出的改进方法解决了朴素Bayes分类器的两个问题。

  1. 通常朴素Bayes分类器要么解决连续型的,要么解决离散型的,即 p ( x i ∣ c ) p(x_i|c) p(xic)的分布类型是同一的。而本文的方法不受此限制。
  2. 在很多方面神经网络等机器学习算法和Bayes分类器是互补的。本文方法可以以非常简单的方式将两者结合起来。

符号约定:若求和范围不会引起歧义,累加符号就简单写作 ∑ i \sum_i i,累乘符号写作 ∏ i \prod_i i p ( x i ∣ c ) p(x_i|c) p(xic)表示 X X X i i i个分量 X i X_i Xi x i x_i xi是的条件概率,严格的写法是 P ( X i = x i ∣ c ) P(X_i=x_i|c) P(Xi=xic)

朴素 Bayes 组合分类器

本节主要推导朴素 Bayes 组合公式,并简述分类器的构造。

朴素 Bayes 组合公式

x = ( x 1 , x 2 , ⋯   , x m ) x=(x_1,x_2,\cdots,x_m) x=(x1,x2,,xm),即输入变量被分解成 m m m部分,在条件独立假设的基础上,通过简单变形即可得

p ( c ∣ x ) ∼ ∏ i p ( x i ∣ c ) p ( c ) ∼ ∏ i p ( c ∣ x i ) p ( c ) 1 − m . p(c|x)\sim \prod_ip(x_i|c)p(c)\sim \prod_ip(c|x_i)p(c)^{1-m}.\\ p(cx)ip(xic)p(c)ip(cxi)p(c)1m.

在算法设计上,下面的等价公式会比较好用
ln ⁡ p ( c ∣ x ) ∼ ∑ i ln ⁡ p ( c ∣ x i ) + ( 1 − m ) ln ⁡ p ( c ) . \ln p(c|x)\sim \sum_i\ln p(c|x_i) + (1-m)\ln p(c). lnp(cx)ilnp(cxi)+(1m)lnp(c).
作为分量, x i x_i xi不必是1维; p ( c ∣ x i ) p(c|x_i) p(cxi)都是独立计算的,互不干扰,而且也不是每一个都必须用Bayes估计。如果第 i i i项使用分类器 f i f_i fi进行估计的,那么
ln ⁡ p ( c ∣ x ) ∼ ∑ i f i , c ( x i ) + ( 1 − m ) ln ⁡ p ( c ) , \ln p(c|x)\sim \sum_i f_{i,c}(x_i) + (1-m)\ln p(c), lnp(cx)ifi,c(xi)+(1m)lnp(c),
其中 f i , c f_{i,c} fi,c表示 f i f_i fi c c c上的分量。这就是说,我们只要用不同部分的数据独立训练多个训练分类器,然后简单求和就可以得到一个不错的分类器。这些分类器被称为基分类器(相当于线性代数中的基向量)。这是一种特殊的可加模型,也可以看成一种简单的集成机器学习,即把 f i ( x i ) f_i(x_i) fi(xi)看成是 f i ( P i x ) f_i(P_ix) fi(Pix),其中 P i P_i Pi x x x x i x_i xi的投影。我们把这个公式叫做朴素Bayes组合公式,对应的分类器为朴素Bayes组合分类器。

本文的方法最初是为了改进朴素Bayes分类器而提出的,允许任意组合不同的朴素Bayes分类器,如当面对包含连续变量和连续变量的机器学习问题时,可以组合基于Gauss分布和基于多项式的朴素Bayes分类器。但 (4) 式确实不是非要用朴素Bayes分类器计算 p ( c ∣ x i ) p(c|x_i) p(cxi),而且实验也支持用其他分类器能大大提高精确度。此时,严格地说它不再是朴素Bayes分类器。

分类器的推广

作为加性模型的特殊形式,(5) 的一种简单推广是增加系数:
ln ⁡ p ( c ∣ x ) ∼ ∑ i α i ( c ) ln ⁡ f i , c ( x i ) + β ( c ) , \ln p(c|x)\sim \sum_i\alpha_i(c)\ln f_{i,c}(x_i) + \beta(c), lnp(cx)iαi(c)lnfi,c(xi)+β(c),
这些系数可以通过遗传算法获得,而初始种群可根据(5)合理设置。这个推广将在以后的研究中实现。

该分类器还可以对缺失型数据进行分类,比如,只知道 x = ( x 1 , x 2 , ⋯   , x l ) x=(x_1,x_2,\cdots,x_l) x=(x1,x2,,xl),则只需
ln ⁡ p ( c ∣ x ) ∼ ∑ i = 1 l ln ⁡ f i , c ( x i ) + ( 1 − l ) ln ⁡ p ( c ) , \ln p(c|x)\sim \sum_{i=1}^{l}\ln f_{i,c}(x_i) + (1-l)\ln p(c), lnp(cx)i=1llnfi,c(xi)+(1l)lnp(c),

算法设计

算法基于公式 (5)。输入变量 X X X会被分解成 m m m部分,第 i i i部分作为第 i i i个基分类器的输入;这些分类器的输出则是共同的。根据分割后的样本,分类器被独立训练。具体的流程如下。

算法

  1. 读入样本集 X,Y
  2. 构造朴素Bayes组合分类器,即选取一组基分类器
  3. 对输入进行分割,X1, X2,…,Xm
  4. 模型i拟合Xi,Y,i=1,2,…,m;
  5. 利用朴素Bayes组合公式(5),对任意输入 x x x计算概率值 p ( c ∣ x ) p(c|x) p(cx)
  6. 根据概率值给出预测值

其中第3步根据属性的数据类型进行分割,基本原则是分离离散与连续变量;第4步可以并行计算,可获得较快的速度。

离散型和连续型的分别通常是相对的。一般多数观测值的频率都比较小时,就应该被看作连续变量。

实现

算法的实现也非常简便。本文采用Python实现。主要依赖scikit-learn机器学习库。本文算法基于和朴素Bayes分类器一样的公式,因此它的实现只需继承scikit-learn提供的实现朴素Bayes算法的抽象类即可。

源码上传到GitHub

实验

实验数据来自CCF人工智能竞赛平台https://www.datafountain.cn/competitions/337。为了使它成为一个分类问题,已经把输出变量分成三类。总共5000条数据,抽出30%作为测试数据。

根据数据,输入变量被大致分为三个部分:0-1型,整数型,实数型。关键的原则依然是看数据的频数。选取适合的基分类器。集成的分类器将和这些基分类器(单独使用)进行比较。

实验结果复合预期。无论耗时还是精确度,朴素Bayes组合分类器都是介于朴素Bayes分类器和其他分类器之间。该算法适用于那些允许牺牲一定精确度来节省时间的分类问题。

结语

本文利用本朴素Bayes组合公式设计出一种新的分类器,它是一种非常简便的集成机器学习方法。实验结果表明,算法在不是去太多精确度的情况下,可以提高算法性能。如果需要在精确度和计算时间之间权衡,那么可以使用本算法。

如果基分类器都是朴素Bayes分类器,那么朴素Bayes组合的结果当然也是朴素Bayes分类器。这样就可以轻易组合出能处理混合不同分布类型的数据集,如本文中的实验数据,存在至少三种类型的分布。因为基分类器并不限于朴素Bayes分类器,所以对条件独立性的假设的依赖也减轻了,从而提高了精确度。

由于,本分类器以依然保留了不完全的条件独立假设,因此精确度的提升也是有限的,不能和某些成熟的算法的竞争。但是,它的设计灵活而简单,并具有并行性,和那些“成熟算法”相比,适当的设置可以大大缩减计算时间,而不会显著降低精确度。因此,这个算法适合那些对计算时间有较高要求的领域。

文献

[1]Hastie, Trevor, Tibshirani. THE ELEMENTS OF STATISTICAL LEARNING: DATA MINING, INFERENCE, AND PREDICTION, SECOND EDITION[M]. Springer, 2001.

[2] 李航. 统计学习方法[M]. 清华大学出版社, 北京, 2012.

[3] 刘长龙. 从机器学习到深度学习 基于scikit-learn与TensorFlow的高效开发实战[M], 电子工业出版社,2019.

Zhang H . The Optimality of Naive Bayes[C]// Seventeenth International Florida Artificial Intelligence Research Society Conference. 2004.

I Rish, An Empirical Study of the Naïve Bayes Classifier[J], IJCAI 2001 Work Empir Methods Artif Intell, 2001,1(3).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值