机器学习——朴素贝叶斯算法

一. 朴素贝叶斯的原理

贝叶斯定理是概率论中的一个重要定理,用于计算在已知某个条件下的事件的概率。

概念:
贝叶斯定理是基于条件概率的一种计算方法。它描述了在已知事件B发生的条件下,事件A发生的概率。贝叶斯定理的核心思想是通过已知的条件信息,来更新我们对事件的概率估计。

数学表达式:
贝叶斯定理的数学表达式如下:
                P(A|B) = (P(B|A) * P(A)) / P(B)

其中,P(A|B)表示在事件B发生的条件下,事件A发生的概率;P(B|A)表示在事件A发生的条件下,事件B发生的概率;P(A)和P(B)分别表示事件A和事件B的独立概率。

贝叶斯定理的计算过程如下:
1. 根据已知条件,计算事件A和事件B的独立概率P(A)和P(B)。
2. 根据已知条件,计算在事件A发生的条件下,事件B发生的概率P(B|A)。
3. 根据贝叶斯定理的数学表达式,计算在事件B发生的条件下,事件A发生的概率P(A|B)。

朴素贝叶斯是贝叶斯分类算法中最简单的一个,一般用于处理二分类或多分类任务,此算法围绕的核心是:贝叶斯定理。“朴素”二字体现的是特征与特征相互独立。

二. 朴素贝叶斯算法原理

朴素贝叶斯的基本思想:如果一个事物在一些属性条件发生的情况下,事物属于A的概率>属于B的概率,则判定事物属于A。

假设我们有一个数据集,它是由两类数据构成,数据分布如下图所示:

p1(x,y)表示数据点(x,y)属于类别1(图中用圆点表示的类别)的概率

p2(x,y)表示数据点(x,y)属于类别2(图中用三角形表示的类别)的概率

那么对于一个新数据点(x,y),可以用下面的规则来判断它的类别:

如果 p1(x,y) > p2(x,y),那么类别为1。 
如果 p2(x,y) > p1(x,y),那么类别为2。

也就是说,我们会选择高概率对应的类别。这就是贝叶斯决策理论的核心思想,即选择具有 最高概率的决策。

2.1条件概率

条件概率是指在已知某个事件已经发生的情况下,另一个事件发生的概率。条件概率的计算公式如下:
对于两个事件A和B,条件概率P(A|B)(读作:在B发生的条件下A发生的概率)的计算公式是:
P(A|B) = P(A ∩ B) / P(B)

1.P(A|B) 表示事件B发生的条件下事件A发生的概率,也称为A在B条件下的后验概率。
2.P(A ∩ B) 表示事件A和事件B同时发生的概率,也称为A与B的交集的概率。
3.P(B) 表示事件B发生的概率,也称为B的先验概率。

2.2 朴素贝叶斯公式

朴素贝叶斯算法是一种基于贝叶斯定理的分类算法。它假设特征之间是条件独立的(朴素条件独立性假设),根据给定特征的条件概率来计算后验概率,从而进行分类。下面是朴素贝叶斯算法的公式表示:
假设有n个特征(或属性)x1, x2, …, xn,以及目标变量(类别)y。

1.计算先验概率(Prior Probability)P(y),即目标变量y在整个数据集中的概率分布。
2.对于给定的样本数据x = (x1, x2, …, xn),计算后验概率(Posterior Probability)P(y | x),即在给定特征变量x的情况下,目标变量y的概率分布。

根据贝叶斯定理,后验概率可以如下计算:
P(y | x) = (P(x | y) * P(y)) / P(x)
其中:

3.P(y | x) 是后验概率,表示在给定特征x的条件下,目标变量y的概率分布;
4.P(x | y) 是似然概率,表示目标变量y下给定特征x的条件概率;
5.P(y) 是先验概率,表示目标变量y的概率分布;
6.P(x) 是边缘概率,表示特征x的概率分布。
7.判定规则(Decision Rule):根据后验概率,选择具有最高概率的目标变量作为预测结果。即:

y_hat = argmax(P(y | x))
其中,y_hat 表示预测的目标变量值。
需要注意的是,朴素贝叶斯算法中的上述公式假设特征之间是条件独立的,这是朴素贝叶斯算法的一个简化假设。在实际应用中,这个假设可能不完全成立,但朴素贝叶斯算法仍然被广泛应用,并在许多领域取得不错的分类效果。

三. 朴素贝叶斯算法流程

1. 数据预处理:
   · 收集训练数据集,包括特征和对应的类别标签。
   · 对数据进行清洗和预处理,包括去除噪声、处理缺失值、归一化等。

2. 计算先验概率:
   · 统计训练数据集中每个类别的样本数量,计算每个类别的先验概率P(C)。

3. 计算似然度:
   · 对于每个特征,统计在每个类别下的特征值出现的次数或概率。
   · 根据特征值的类型(离散或连续),计算似然度P(X|C)。

4. 计算后验概率:
   · 对于给定的测试样本,根据先验概率和似然度计算后验概率P(C|X)。
   · 根据贝叶斯定理,后验概率可以通过先验概率和似然度的乘积来计算。

5. 分类决策:
   · 根据后验概率,选择具有最高后验概率的类别作为分类结果。

6. 模型评估:
   · 使用测试数据集对模型进行评估,计算分类的准确率、精确率、召回率等指标。

四.代码实现

import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve, auc
from sklearn.naive_bayes import GaussianNB
import numpy as np
import pandas as pd
shopping = pd.read_csv('D:\数据分析\机器学习\数据\\bayes.csv')
def change_csv(df):
    df1 = df.apply(lambda x: x.replace('Yes', 1))
    df2 = df1.apply(lambda x: x.replace('No', 0))
    df3 = df2.apply(lambda x: x.replace('Male', 1))
    df4 = df3.apply(lambda x: x.replace('Female', 0))
    return df4
df = change_csv(shopping)
train = df.drop('sex', axis=1)
target = df['sex']
nb_clf = GaussianNB()  # 高斯朴素贝叶斯,特征变量是连续变量,符合高斯分布
nb_clf.fit(train, target)
y_test = nb_clf.predict(train)
#绘制roc曲线
# 计算
fpr, tpr, thread = roc_curve(y_test, target)
roc_auc = auc(fpr, tpr)
# 绘制ROC曲线
plt.figure()
lw = 2
plt.plot(fpr, tpr, color='darkorange',
         lw=lw, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.show()

 运行结果:

五. 算法优缺点

朴素贝叶斯算法是机器学习中常用的分类算法,它有以下优点和缺点:

优点:
1. 算法简单且易于实现:朴素贝叶斯算法基于简单的概率统计原理,模型参数估计简单,算法实现相对容易。
2. 高效性:朴素贝叶斯算法具有高效的训练和预测速度,适用于大规模数据集。
3. 对小样本数据有效:朴素贝叶斯算法在处理小样本数据时表现良好,因为它通过特征条件独立假设来估计参数,减少了参数估计的不确定性。
4. 对缺失数据友好:朴素贝叶斯算法能够处理缺失数据,通过忽略缺失特征的条件概率来进行分类预测。

缺点:
1. 特征条件独立假设过于简单:朴素贝叶斯算法假设特征之间相互独立,这在实际应用中并不总是成立。特征之间的相关性可能会导致分类结果的偏差。
2. 对输入数据分布的假设:朴素贝叶斯算法假设特征的分布满足条件独立性,但在实际情况中,特征之间的关系可能是复杂的,导致模型的偏差。
3. 处理连续特征困难:朴素贝叶斯算法对连续特征的处理相对困难,通常需要进行离散化处理,这可能会导致信息损失。
4. 类别之间的类别比例影响结果:朴素贝叶斯算法对类别之间的类别比例敏感,如果训练样本中某个类别的样本数量远大于其他类别,可能会导致分类结果的偏差。

需要注意的是,朴素贝叶斯算法在很多实际问题中仍然表现出色,并且可以通过一些技巧和改进来克服其缺点。在具体应用中,需要根据问题的特点和数据的特征来选择合适的分类算法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值