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

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

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

「分类问题


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

相关文章
|
23天前
|
机器学习/深度学习 算法 数据挖掘
8个常见的机器学习算法的计算复杂度总结
8个常见的机器学习算法的计算复杂度总结
8个常见的机器学习算法的计算复杂度总结
|
8天前
|
机器学习/深度学习 算法 数据挖掘
决策树算法大揭秘:Python让你秒懂分支逻辑,精准分类不再难
【9月更文挑战第12天】决策树算法作为机器学习领域的一颗明珠,凭借其直观易懂和强大的解释能力,在分类与回归任务中表现出色。相比传统统计方法,决策树通过简单的分支逻辑实现了数据的精准分类。本文将借助Python和scikit-learn库,以鸢尾花数据集为例,展示如何使用决策树进行分类,并探讨其优势与局限。通过构建一系列条件判断,决策树不仅模拟了人类决策过程,还确保了结果的可追溯性和可解释性。无论您是新手还是专家,都能轻松上手,享受机器学习的乐趣。
24 9
|
1天前
|
机器学习/深度学习 存储 人工智能
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
使用Python作为开发语言,基于文本数据集(一个积极的xls文本格式和一个消极的xls文本格式文件),使用Word2vec对文本进行处理。通过支持向量机SVM算法训练情绪分类模型。实现对文本消极情感和文本积极情感的识别。并基于Django框架开发网页平台实现对用户的可视化操作和数据存储。
11 0
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
|
14天前
|
机器学习/深度学习 数据采集 算法
数据挖掘和机器学习算法
数据挖掘和机器学习算法
|
17天前
|
机器学习/深度学习 数据采集 存储
一文读懂蒙特卡洛算法:从概率模拟到机器学习模型优化的全方位解析
蒙特卡洛方法起源于1945年科学家斯坦尼斯劳·乌拉姆对纸牌游戏中概率问题的思考,与约翰·冯·诺依曼共同奠定了该方法的理论基础。该方法通过模拟大量随机场景来近似复杂问题的解,因命名灵感源自蒙特卡洛赌场。如今,蒙特卡洛方法广泛应用于机器学习领域,尤其在超参数调优、贝叶斯滤波等方面表现出色。通过随机采样超参数空间,蒙特卡洛方法能够高效地找到优质组合,适用于处理高维度、非线性问题。本文通过实例展示了蒙特卡洛方法在估算圆周率π和优化机器学习模型中的应用,并对比了其与网格搜索方法的性能。
113 1
|
23天前
|
机器学习/深度学习 算法 数据挖掘
机器学习必知必会10大算法
机器学习必知必会10大算法
|
24天前
|
机器学习/深度学习 算法 数据挖掘
【白话机器学习】算法理论+实战之决策树
【白话机器学习】算法理论+实战之决策树
|
1月前
|
机器学习/深度学习 算法 搜索推荐
【机器学习】机器学习的基本概念、算法的工作原理、实际应用案例
机器学习是人工智能的一个分支,它使计算机能够在没有明确编程的情况下从数据中学习并改进其性能。机器学习的目标是让计算机自动学习模式和规律,从而能够对未知数据做出预测或决策。
44 2
|
22天前
|
机器学习/深度学习 存储 算法
图解最常用的 10 个机器学习算法!
图解最常用的 10 个机器学习算法!
|
28天前
|
存储 算法 安全
密码算法的分类
【8月更文挑战第23天】
23 0