朴素Bayes分类器是一种简单易用的分类器, 在文本分类方面表现出色[1-4]. 垃圾邮件过滤是它最为成功的商业应用[5]. 到现在一直有人尝试把它应用于各种领域[6-9].
朴素Bayes分类器建立在条件独立假设的基础上:
$c\left( x \right) = \mathop {\arg \max }\limits_c p(c|x),p\left( {c{\rm{|}}x} \right) \sim \mathop \prod \limits_i p\left( {{x_i}{\rm{|}}c} \right)p\left( c \right)$ | (1) |
其中, 一个只和
$f\left( x \right) = \mathop \sum \limits_i {f_i}\left( {{x_i}} \right),x = \left( {{x_1},{x_2}, \cdots ,{x_n}} \right)$ | (2) |
历史上人们提出了不少改进方案了[3,8]. 本文提出的改进方法解决了朴素Bayes分类器的两个问题.
(1) 通常朴素Bayes分类器要么解决连续型的分类问题, 要么解决离散型的分类问题, 总之
(2) 在很多方面神经网络等机器学习算法和Bayes分类器是互补的. 本文方法可以以非常简单的方式将两者结合起来.
符号约定: 若求和范围不会引起歧义, 则累加符号被简单写作
本节主要推导朴素Bayes组合公式, 并简述分类器的构造.
1.1 朴素Bayes组合公式设
$p\left( {c{\rm{|}}x} \right) \sim \mathop \prod \limits_i p\left( {{x_i}{\rm{|}}c} \right)p\left( c \right) \sim \mathop \prod \limits_i p\left( {c{\rm{|}}{x_i}} \right)p{\left( c \right)^{1 - m}}$ | (3) |
在算法设计上, 下面的等价公式会比较好用:
$\ln p\left( {c{\rm{|}}x} \right) \sim \mathop \sum \limits_i \ln p\left( {c{\rm{|}}{x_i}} \right) + \left( {1 - m} \right)\ln p\left( c \right)$ | (4) |
作为分量,
$\ln p\left( {c{\rm{|}}x} \right) \sim \mathop \sum \limits_i {f_{i,c}}\left( {{x_i}} \right) + \left( {1 - m} \right)\ln p\left( c \right),$ | (5) |
其中,
本文的方法最初是为了改进朴素Bayes分类器而提出的, 允许任意组合不同的朴素Bayes分类器, 如当面对包含连续变量和连续变量的机器学习问题时, 可以组合基于Gauss分布和基于多项式的朴素Bayes分类器. 但式(4)确实不是非要用朴素Bayes分类器计算
作为加性模型的特殊形式, 式(5)的一种简单推广是增加系数如下:
$\ln p\left( {c{\rm{|}}x} \right) \sim \mathop \sum \limits_i {\alpha _i}(c){f_{i,c}}\left( {{x_i}} \right) + \beta \left( c \right)$ | (6) |
这些系数可以通过遗传算法获得, 而初始种群可根据式(5)合理设置. 这个推广将在以后的研究中实现.
本文的分类器还可以对缺失型数据进行分类, 比如, 只知道
$\ln p\left( {c{\rm{|}}x} \right) \sim \mathop \sum \limits_{i = 1}^l {f_{i,c}}\left( {{x_i}} \right) + \left( {1 - l} \right)\ln p\left( c \right)$ | (7) |
即只用其中l个基分类器.
输入变量的每个分量的分布通常是很不相同的, 如果单纯采用单一分布下的朴素Bayes分类器, 效果会很差. 本文的分类器允许人们根据每个变量的分布情况设计更有效的朴素Bayes分类器, 从而提高分类精度.
2 算法设计与实现 2.1 算法算法基于式 (5), 输入变量X会被分解成m部分, 第i部分作为第i个基分类器的输入; 这些分类器的输出则是共同的. 根据分割后的样本, 分类器被独立训练. 具体的流程如算法1.
算法1. 朴素Bayes组合分类算法(准备数据集
(1) 选择一组基分类器, 构造朴素Bayes组合分类器;
(2)将输入数据X分割为
(3) 第i个基分类器拟合
(4) 利用朴素Bayes组合式(5), 对任意输入
(5) 根据概率值给出预测值.
其中第(3)步根据属性的数据类型进行分割, 基本原则是分离离散与连续变量; 第(4)步可以并行计算, 获得较快的速度.
算法1中离散型和连续型的分别通常是相对的. 一般多数观测值的频率都比较小时, 该变量就应被看作连续变量.
2.2 实现本文采用Python实现, 主要依赖scikit-learn机器学习库[12]. 本文算法基于和朴素Bayes分类器一样的公式, 因此它的实现只需继承scikit-learn提供的实现朴素Bayes算法的抽象类即可.
程序运行环境为MacOS10.15, Python3.7, scikit-learn0.23.1. 源代码、数据和实验结果已上传至GitHub (
实验数据来自CCF人工智能竞赛平台
根据数据, 输入变量被大致分为3个部分: 0-1型, 整数型, 实数型. 关键的原则依然是看数据的频数. 选取适合的基分类器. 集成的分类器将和这些基分类器(单独使用)进行比较.
所有模型都会被重复运行10遍, 计算两项指标(精确度与耗时)的均值; 每次运行可能有微小的偏差. 每种模型确实可以设置各项参数调整性能, 但并不显著. 除了神经网络设置了2000次迭代, 其隐层大小为8 (朴素Bayes组合中为5), 其他都采用默认值.
实验结果(见表1)符合预期. 无论耗时还是精确度, 朴素Bayes组合分类器都是介于朴素Bayes分类器和其他分类器之间. 该算法适用于那些允许牺牲一定精确度来节省时间的分类问题. 如果对数据的分布做更深入的观察, 设计更有针对性的基分类器, 是可以获得更好的结果的.
4 结论与展望
本文利用本朴素Bayes组合公式设计出一种新的分类器, 它是一种非常简便的集成机器学习方法. 实验结果表明, 算法在不要求高精确度的情况下, 可以提高算法性能. 如果需要在精确度和计算时间之间权衡, 那么可以使用本算法.
如果基分类器都是朴素Bayes分类器, 那么朴素Bayes组合的结果当然也是朴素Bayes分类器. 这样就可以轻易组合出能处理混合不同分布类型的数据集, 如本文中的实验数据, 存在至少3种类型的分布. 实验结果表明这种处理是成功的. 因为基分类器并不限于朴素Bayes分类器, 所以对条件独立性的假设的依赖也减轻了, 从而提高了精确度. 实验还表明基分类器采用决策树、神经网络等分类器能获得更好的结果.
由于, 本分类器以依然保留了不完全的条件独立假设, 因此精确度的提升也是有限的, 不能和某些成熟的算法竞争. 但是, 它的设计灵活简单, 并具有并行性, 和那些“成熟算法”相比, 适当的设置可以大大缩减计算时间, 而不会显著降低精确度. 因此, 这个算法适合那些对计算时间有较高要求的领域.
未来的研究主要沿着两个方向发展: 设计更好的基分类器, 如为那些含0较多的数据选择更合理的分布进而设计相应的朴素Bayes分类器; 优化朴素Bayes组合公式突破现有的性能瓶颈.
[1] |
Hastie T, Tibshirani R, Friedman J. The Elements of Statistical Learning: Data Mining, Inference, and Prediction. 2nd ed. New York: Springer, 2001.
|
[2] |
李航. 统计学习方法. 北京: 清华大学出版社, 2012.
|
[3] |
Chiong R, Theng LB. A hybrid naive Bayes approach for information filtering. 2008 3rd IEEE Conference on Industrial Electronics and Applications. Singapore. 2008. 1003–1007.
|
[4] |
Rish I. An empirical study of the naive Bayes classifier. Journal of Universal Computer Science, 2001, 1(2): 127. |
[5] |
Bin N, Wu JW, Hu F. Spam message classification based on the naïve Bayes classification algorithm. IAENG International Journal of Computer Science, 2019, 46(1): 46-53. |
[6] |
Liu SY, Xiao J, Xu XK. Sign prediction by motif naive Bayes model in social networks. Information Sciences, 2020, 541: 316-331. DOI:10.1016/j.ins.2020.05.128 |
[7] |
Sánchez-Franco MJ, Navarro-García A, Rondán-Cataluña FJ. A naive Bayes strategy for classifying customer satisfaction: A study based on online reviews of hospitality services. Journal of Business Research, 2019, 101: 499-506. DOI:10.1016/j.jbusres.2018.12.051 |
[8] |
Ma H, Yan WC, Yang ZY, et al. Real-time foot-ground contact detection for inertial motion capture based on an adaptive weighted naive Bayes model. IEEE Access, 2019, 7: 130312-130326. DOI:10.1109/ACCESS.2019.2939839 |
[9] |
Zeng F, Yao L, Wu BL, et al. Dynamic human contact prediction based on naive Bayes algorithm in mobile social networks. Software: Practice and Experience, 2020, 50(11): 2031-2045. DOI:10.1002/spe.2727 |
[10] |
Zhang H. The optimality of naive Bayes. Proceedings of the 17th International Florida Artificial Intelligence Research Society Conference. Miami, FL, USA. 2004. 562–567.
|
[11] |
Singh G, Kumar B, Gaur L, et al. Comparison between multinomial and Bernoulli naïve Bayes for text classification. 2019 International Conference on Automation, Computational and Technology Management. London, UK. 2019. 593–596.
|
[12] |
刘长龙. 从机器学习到深度学习: 基于Scikit-learn与TensorFlow的高效开发实战. 北京: 电子工业出版社, 2019. 101–106.
|