机器学习-朴素贝叶斯-10-灵析社区

搜不鸟了

1、概念

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

朴素贝叶斯算法的核心思想是通过考虑特征概率来预测分类,即对于给出的待分类样本,求解在此样本出现的条件下各个类别出现的概率,哪个最大,就认为此待分类样本属于哪个类别。

贝叶斯定理中很重要的概念是先验概率后验概率条件概率

先验概率事件发生前的预判概率。可以是基于历史数据的统计,可以由背景常识得出,也可以是人的主观观点给出。一般都是单独事件概率。

举个例子:如果我们对西瓜的色泽、根蒂和纹理等特征一无所知,按照常理来说,西瓜是好瓜的概率是 。那么这个概率 就被称为先验概率。

后验概率事件发生后求的反向条件概率。或者说,基于先验概率求得的反向条件概率。概率形式与条件概率相同。

举个例子:假如我们了解到判断西瓜是否好瓜的一个指标是纹理。一般来说,纹理清晰的西瓜是好瓜的概率大一些,大概是75% 。如果把纹理清晰当作一种结果,然后去推测好瓜的概率,那么这个概率 P(好瓜|纹理清晰) 就被称为后验概率。

2、朴素贝叶斯公式

叶斯定理(Bayes Theorem,也称贝叶斯公式)是基于假设的先验概率、给定假设下观察到不同数据的概率,提供了一种计算后验概率的方法,朴素贝叶斯公式:

notion image

  • P(A)是先验概率,一般都是人主观给出的。贝叶斯中的先验概率一般特指它。
  • P(B)是先验概率,在贝叶斯的很多应用中不重要(因为只要最大后验不求绝对值),需要时往往用全概率公式计算得到。
  • P(B|A)是条件概率,又叫似然概率,一般是通过历史数据统计得到。
  • P(A|B)是后验概率,一般是我们求解的目标。
  • 换个表达形式就会明朗很多,如下:

notion image

  • 们最终求的p(类别|特征)即可!就相当于完成了我们的任务。

2.1、条件独立假设与朴素贝叶斯

朴素贝叶斯处理过程

notion image

3、朴素贝叶斯分类实例

给定数据如下:

notion image

问题是:如果一对男女朋友,男生想女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,请你判断一下女生是嫁还是不嫁?

通过问题我们转换为朴素贝叶斯求解:

notion image

3.1、求解后验概率p(不帅、性格不好、身高矮、不上进|嫁)

因为我们用的是朴素贝叶斯方法,因此我们假定事件之间相互独立,互不影响,那么:

P(不帅、性格不好、身高矮、不上进|嫁) = P(不帅|嫁)*P(性格不好|嫁)*P(身高矮|嫁)*P(不上进|嫁)

因此,我们需要先求出 P(不帅|嫁)、P(性格不好|嫁)、P(身高矮|嫁)、P(不上进|嫁)的后验概率。

notion image

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

同理可求得:

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

p(身高矮|嫁)=1/6

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

P(不帅、性格不好、身高矮、不上进|嫁) =1/2 * 1/6 * 1/6 * 1/6 = 1/432

3.2、求得p(嫁)先验概率

通过统计样本可得:

p(嫁)=6/12 = 1/2

然后可以求解分母:

P(不帅、性格不好、身高矮、不上进) = P(不帅)*P(性格不好)*P(身高矮)*P(不上进)

因此我们可以通过样本统计得出:

P(不帅)=4/12=1/3

P(性格不好)=4/12=1/3

P(身高矮)=7/12

P(不上进)=4/12=1/3

P(不帅、性格不好、身高矮、不上进)=1/3 * 1/3 * 7/12 * 1/3 = 7/324

最后我们将先验概率代入:

P(嫁|不帅、性格不好、身高矮、不上进) =  (1/432 * 1/2)/ (7/324) = 324/6048 =3/56

P(不嫁|不帅、性格不好、身高矮、不上进)  = 1-P(嫁|不帅、性格不好、身高矮、不上进) = 53/56

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

4、平滑处理

1)为什么需要平滑处理

使用朴素贝叶斯,有时候会面临零概率问题。零概率问题,指的是在计算实例的概率时,如果某个量x,在观察样本库(训练集)中没有出现过,会导致整个实例的概率结果是0。

在文本分类的问题中,当「一个词语没有在训练样本中出现」时,这个词基于公式统计计算得到的条件概率为 0,使用连乘计算文本出现概率时也为 0。这是不合理的,不能因为一个事件没有观察到就武断的认为该事件的概率是 0。

2)拉普拉斯平滑及依据

假定训练样本很大时,每个分量 x 的计数加 1 造成的估计概率变化可以忽略不计,但可以方便有效的避免零概率问题。

对应到文本分类的场景中,如果使用多项式朴素贝叶斯,假定特征 xi​表示某个词在样本中出现的次数(当然用TF-IDF表示也可以)。拉普拉斯平滑处理后的条件概率计算公式为:

notion image

5、朴素贝叶斯分类的优缺点

优点:

(1) 算法逻辑简单,易于实现

(2)分类过程中时空开销小

缺点:

理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。

但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。

6、代码演示-朴素贝叶斯分类

  • sklearn
  • data iris
# load the iris dataset
from sklearn.datasets import load_iris
iris = load_iris()

# store the feature matrix (X) and response vector (y)
X = iris.data
y = iris.target

# splitting X and y into training and testing sets
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=1)

# training the model on training set
from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB()
gnb.fit(X_train, y_train)

# making predictions on the testing set
y_pred = gnb.predict(X_test)

# comparing actual response values (y_test) with predicted response values (y_pred)
from sklearn import metrics
print("Gaussian Naive Bayes model accuracy(in %):", metrics.accuracy_score(y_test, y_pred)*


阅读量:1206

点赞量:0

收藏量:0