机器学习十大经典算法之朴素贝叶斯分类

简介: 机器学习十大经典算法之朴素贝叶斯分类

贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而「朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法」

「分类问题


image.png

其中C叫做类别集合,其中每一个元素是一个类别,而I叫做项集合(「特征集合」),其中每一个元素是一个待分类项,f叫做分类器。「分类算法的任务就是构造分类器f。」

下面以一个实例来讲解:

「朴素贝叶斯分类」


那么既然是朴素贝叶斯「分类算法」,它的核心算法是下面这个贝叶斯公式:

52eb72a4b8291b79b8dc294f8df4ef0d.png

也可以换成如下表达式:

4ae0f55d1e2c8fe0e38d14b1a716f386.png

所以我们最终只要求出p(类别|特征)就可以。

「例题分析」


给定数据如下:

4932c7bf26a6a23e40f93a05a673eb91.png

如上表所示,假设一对男女朋友,男生想跟女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,请你判断一下女生是嫁还是不嫁?

这是一个典型的分类问题,「转为数学问题就是比较p(嫁|(不帅、性格不好、身高矮、不上进))与p(不嫁|(不帅、性格不好、身高矮、不上进))的概率」,假设结果是嫁的概率大,那就选嫁,反之就选择不嫁!

由上面的朴素贝叶斯公式公式可知:

934d75a9e95c68f53df9f5b7790d4861.png

要求出p(嫁|(不帅、性格不好、身高矮、不上进),这是比较难的,但是通过朴素贝叶斯公式可以转化为简单好求的三个量,即p(不帅、性格不好、身高矮、不上进|嫁)、p(不帅、性格不好、身高矮、不上进)、p(嫁)。后面解释为什么只要求出这三个量就行。

「那么这三个量是如何求的?」

因为我们要求的公式如下:

934d75a9e95c68f53df9f5b7790d4861.png

那么我只要求得p(不帅、性格不好、身高矮、不上进|嫁)、p(不帅、性格不好、身高矮、不上进)、p(嫁)即可。

「p(不帅、性格不好、身高矮、不上进|嫁) = p(不帅|嫁)*p(性格不好|嫁)*p(身高矮|嫁)*p(不上进|嫁),那么我就要分别计算出后面几个概率,也就得到p(不帅、性格不好、身高矮、不上进|嫁) 的概率!」

「要使上面的等式成立,需要各个特征互相独立。朴素贝叶斯分类有朴素一词的来源,就是假设各个特征之间相互独立,那么这个等式就成立了!」

把上面公式变形得到:

5976d1b09d63f9461695be65486ec771.png

下面分别进行统计计算(「在数据量很大的时候,根据中心极限定理,频率是等于概率的,这里只是一个例子,所以我就进行统计即可」)。

首先我们整理训练数据中,嫁的样本数如下:

f75292d6596e82ba37aacc347cf8c797.png

「则 p(嫁) = 6/12(总样本数) = 1/2」

06b9ba384ff14c6baffba18c4f7e96f0.png

「则p(不帅|嫁) = 3/6 = 1/2」

9be550b41a0db0b102f53cff89040a78.png

「则p(性格不好|嫁)= 1/6」

70893cbea7b0b17c4e63b44003cbed0b.png

「则p(不上进|嫁) = 1/6」

47231fa3b81af6f38b8de2d0d032623e.png

「不帅统计如上红色所示,占4个,那么p(不帅) = 4/12 = 1/3」

93d43a85250985943460a1d19018bd85.png

性格不好统计如上红色所示,那么p(性格不好) = 4/12 = 1/3

3c25128c3b73150a3b2f4f646cf51f5a.png

身高矮统计如上红色所示,那么p(身高矮) = 7/12

bb283b095738c4fb6817b8ba379a34ed.png

不上进统计如上红色所示,那么p(不上进) = 4/12 = 1/3

「到这里,要求p(不帅、性格不好、身高矮、不上进|嫁)的所需项全部求出来了,下面我带入进去即可,」

5976d1b09d63f9461695be65486ec771.png

= (1/2*1/6*1/6*1/6*1/2)/(1/3*1/3*7/12*1/3)

「下面我们根据同样的方法来求p(不嫁|不帅,性格不好,身高矮,不上进),完全一样的做法,公式如下:」

4e2d0bdd4e86545858f1cfba99991cdb.png

最终算得:

p (不嫁|不帅、性格不好、身高矮、不上进) = ((1/6*1/2*1*1/2)*1/2)/(1/3*1/3*7/12*1/3)

「很显然(1/6*1/2*1*1/2) > (1/2*1/6*1/6*1/6*1/2)」

「于是有p (不嫁|不帅、性格不好、身高矮、不上进)>p (嫁|不帅、性格不好、身高矮、不上进)」

「所以我们根据朴素贝叶斯算法可以给这个女生答案,是不嫁!!!!」

算法流程


87b7e6da8ad237047524fedf1df056a7.png

实际应用方式:

  • 若任务对预测速度要求较高,则对给定的训练集,可将朴素贝叶斯分类器涉及的所有概率估值事先计算好存储起来,这样在进行预测时只需要 “查表” 即可进行判别;
  • 若任务数据更替频繁,则可采用 “懒惰学习” (lazy learning) 方式,先不进行任何训练,待收到预测请求时再根据当前数据集进行概率估值;
  • 若数据不断增加,则可在现有估值的基础上,仅对新增样本的属性值所涉及的概率估值进行计数修正即可实现增量学习。

朴素贝叶斯分类算法优缺点


优点:

1)朴素贝叶斯模型有稳定的分类效率。
2)对小规模的数据表现很好,能处理多分类任务,适合增量式训练,尤其是数据量超出内存时,可以一批批的去增量训练。
3)对缺失数据不太敏感,算法也比较简单,常用于文本分类。

缺点:

1) 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型给定输出类别的情况下,假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。

2)需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。

3)由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率。

4)对输入数据的表达形式很敏感。


朴素贝叶斯分类算法实现


https://github.com/Asia-Lee/Naive_Bayes

参考文献


李航博士《统计学习方法》

知乎专栏:https://zhuanlan.zhihu.com/p/26262151

相关文章
|
4天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
19 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
25天前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
1月前
|
机器学习/深度学习 算法 决策智能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
|
1月前
|
机器学习/深度学习 算法 Python
探索机器学习中的决策树算法:从理论到实践
【10月更文挑战第5天】本文旨在通过浅显易懂的语言,带领读者了解并实现一个基础的决策树模型。我们将从决策树的基本概念出发,逐步深入其构建过程,包括特征选择、树的生成与剪枝等关键技术点,并以一个简单的例子演示如何用Python代码实现一个决策树分类器。文章不仅注重理论阐述,更侧重于实际操作,以期帮助初学者快速入门并在真实数据上应用这一算法。
|
13天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的决策树算法
【10月更文挑战第29天】本文将深入浅出地介绍决策树算法,一种在机器学习中广泛使用的分类和回归方法。我们将从基础概念出发,逐步深入到算法的实际应用,最后通过一个代码示例来直观展示如何利用决策树解决实际问题。无论你是机器学习的初学者还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和指导。
|
1月前
|
机器学习/深度学习
如何用贝叶斯方法来解决机器学习中的分类问题?
【10月更文挑战第5天】如何用贝叶斯方法来解决机器学习中的分类问题?
|
1月前
|
存储 缓存 分布式计算
数据结构与算法学习一:学习前的准备,数据结构的分类,数据结构与算法的关系,实际编程中遇到的问题,几个经典算法问题
这篇文章是关于数据结构与算法的学习指南,涵盖了数据结构的分类、数据结构与算法的关系、实际编程中遇到的问题以及几个经典的算法面试题。
29 0
数据结构与算法学习一:学习前的准备,数据结构的分类,数据结构与算法的关系,实际编程中遇到的问题,几个经典算法问题
|
1月前
|
机器学习/深度学习 算法 大数据
机器学习入门:梯度下降算法(下)
机器学习入门:梯度下降算法(下)
|
30天前
|
移动开发 算法 前端开发
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
21 0
|
30天前
|
机器学习/深度学习 算法 数据可视化
机器学习的核心功能:分类、回归、聚类与降维
机器学习领域的基本功能类型通常按照学习模式、预测目标和算法适用性来分类。这些类型包括监督学习、无监督学习、半监督学习和强化学习。
24 0