【NLP冲吖~】一、朴素贝叶斯(Naive Bayes)

0、朴素贝叶斯法

朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入输出的联合概率分布,然后基于此模型,对给定的输入 x x x,利用贝叶斯定理求出后验概率最大的输出 y y y

朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。

从数学角度,定义分类问题如下:
已知集合 C = y 1 , y 2 , . . . , y n C = {y_1,y_2,...,y_n} C=y1,y2,...,yn I = x 1 , x 2 , . . . , x n I = {x_1,x_2,...,x_n} I=x1,x2,...,xn,确定一个函数映射 y = f ( x ) y = f(x) y=f(x),使得任意 x i ∈ I x_i∈I xiI有且仅有一个 y i ∈ C y_i∈C yiC,使得 y i ∈ f ( x i ) y_i∈f(x_i) yif(xi)成立。

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

1、贝叶斯公式

P ( B ∣ A ) = P ( A ∣ B ) P ( B ) / P ( A ) P(B|A) = P(A|B)P(B) / P(A) P(BA)=P(AB)P(B)/P(A)
我们将B看作类别,A看作特征。即:
P ( 类别 ∣ 特征 ) = P ( 特征 ∣ 类别 ) P ( 类别 ) / P ( 特征 ) P(类别|特征) = P(特征|类别)P(类别) / P(特征) P(类别特征)=P(特征类别)P(类别)/P(特征)
求得 P(类别|特征),我们就可以通过贝叶斯公式进行分类!

2、 贝叶斯公式的本质

贝叶斯公式主要是描述了两种条件概率之间的关系,即P(AIB)与P(BIA)的关系。
P(A) 指事件A的先验概率,即在没有任何条件的情况下吗,对事件的基本判断。
P(AIB) 指后验概率,是在条件B之下事件A发生的概率。
P(BIA)/P(B) 相当于一个调整因子,使得先验概率经过调整得到后验概率,当这部分等于1,说明事件B的加入对于判断A的可能性没有帮助,先验等于后验。当它大于1,说明A发生的概率由于B的加入增大了。

3、分类案例

已知数据:

长毛/短毛粘人/不粘人攻击性强/弱胆子大/小是否纯种是否好养
长毛粘人纯种不好养
短毛粘人纯种不好养
长毛不粘人纯种不好养
长毛粘人纯种不好养
长毛粘人非纯种不好养
短毛不粘人纯种好养
短毛粘人纯种好养
长毛不粘人非纯种好养
短毛粘人纯种好养
长毛粘人非纯种好养

根据已知数据,判断 短毛、粘人、攻击性弱、胆子大的非纯种猫是否好养。

P(好养|短毛、粘人、攻击性弱、胆子大、非纯种) = P(短毛、粘人、攻击性弱、胆子大、非纯种|好养)*P(好养) / P(短毛、粘人、攻击性弱、胆子大、非纯种)

P(短毛|好养) = 3 / 5
P(粘人|好养) = 3 / 5
P(攻击性弱|好养) = 4 / 5
P(胆子大|好养) = 3 / 5
P(非纯种|好养) = 2 / 5
P(好养) = 1 / 2
P(短毛) = 4 / 10 = 2 / 5
P(粘人) = 7 / 10
P(攻击性弱) = 5 / 10 = 1 / 2
P(胆子大) = 7 / 10
P(非纯种) = 3 / 10

同理:
P(短毛|不好养) = 1 / 5
P(粘人|不好养) = 4 / 5
P(攻击性弱|不好养) = 1 / 5
P(胆子大|不好养) = 4 / 5
P(非纯种|不好养) = 1 / 5
P(不好养) = 1 / 2
P(短毛) = 4 / 10 = 2 / 5
P(粘人) = 7 / 10
P(攻击性弱) = 5 / 10 = 1 / 2
P(胆子大) = 7 / 10
P(非纯种) = 3 / 10

可得:P(好养|短毛、粘人、攻击性弱、胆子大、非纯种) > P(不好养|短毛、粘人、攻击性弱、胆子大、非纯种)【只比较分子即可】

因此,可得 短毛、粘人、攻击性弱、胆子大的非纯种猫 好养。

4、 朴素贝叶斯为什么朴素?

其实朴素贝叶斯算法假设每个特征之间是相互独立的,这是算法的使用前提。朴素指的就是这一前提。

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

优点:算法逻辑简单,易于实现;分类时,消耗时间空间资源少。

缺点:朴素贝叶斯算法的前提条件是特征相互独立,但是在实际情况中,特征之间往往不会那么理想,特征数较多或者特征之间相关性较大时,分类效果不会很好。

因此,**当特征之间的相关性较小是,我们可以忽略其相关性而使用朴素贝叶斯算法进行分类,分类效果会好很多。**当然,也有后续算法会对其改进。

6、 朴素贝叶斯在NLP中的应用

垃圾邮件分类:参考https://zhuanlan.zhihu.com/p/155632712
文本分类:参考https://blog.csdn.net/qiaowu898/article/details/107634195
。。。

  • 16
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
朴素叶斯是一种常用的机器学习算法,特别适用于自然语言处理任务。它基于叶斯定理和特征条件独立假设,通过计算给定特征条件下的类别概率来进行分类。 在自然语言处理中,朴素叶斯可以用于文本分类、情感分析、垃圾邮件过滤等任务。它将文本表示为特征向量,其中每个特征表示一个词汇或其他语言相关的属性。然后,通过计算每个类别下的特征概率,可以预测新文本属于哪个类别。 下面是一个使用朴素叶斯进行文本分类的示例: ```python from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayes import MultinomialNB # 准备训练数据 train_texts = ['I love this movie', 'This movie is great', 'I hate this movie'] train_labels = ['positive', 'positive', 'negative'] # 特征提取 vectorizer = CountVectorizer() train_features = vectorizer.fit_transform(train_texts) # 训练朴素叶斯分类器 classifier = MultinomialNB() classifier.fit(train_features, train_labels) # 预测新文本的类别 test_text = 'This movie is amazing' test_feature = vectorizer.transform([test_text]) predicted_label = classifier.predict(test_feature) print('Predicted label:', predicted_label) # 输出:Predicted label: ['positive'] ``` 在上面的示例中,我们首先准备了一些训练数据,包括文本和对应的类别标签。然后,使用`CountVectorizer`将文本转换为特征向量。接下来,使用`MultinomialNB`训练一个朴素叶斯分类器,并使用训练好的模型对新文本进行分类预测。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值