机器学习 - 朴素贝叶斯分类器的意见和文本挖掘

时间:2022-04-26
本文章向大家介绍机器学习 - 朴素贝叶斯分类器的意见和文本挖掘,主要内容包括情绪分析、贝叶斯理论、代码、朴素贝叶斯分类器的Python实现、结论、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

要求掌握:机器学习

情绪分析

人们倾向于知道他人是如何看待他们和他们的业务的,不管是什么东西,不管是汽车,饭店等产品还是服务本身。如果你知道你的客户如何看待你,那么你可以保持或改善甚至改变你的策略,以提高客户满意度。你可以借助收集他们发送给你的电子邮件,并使用一些方法根据他们使用的文字来分类他们的意见。此外,情绪分析还有在工业上的其他研究应用。

  1. 重新启动营销。
  2. 分类办公文件。
  3. 为客户或您的公司提供建议清单。

在下图中,在训练集上有关于特定句子的样本,并根据其内容分配正面或负面的标志。然后,我们在右部分放上测试数据集,其正面性或负面性对于我们来说是有意义的,并且应该通过如朴素贝叶斯分类器的一些方法来计算得到。

科学研究中的文本挖掘:

曼彻斯特大学的一个项目分析了15000个小鼠样本,却没有他们的性别和年龄信息,这对研究结果已经产生不良影响,而且得出了模棱两可的结论。但借助文本挖掘工具和扫描文档技术,现在可以填补这一空白,并根据基于小鼠性别和年龄的新信息改进研究​​。[*]

意见挖掘:

不同的人对同一个主题有不同的反应,你可以衡量对于一个具体的主体,有多少人在何种程度上对其表示同意。这个问题可以用自然语言处理解决。但是还有另一种用朴素贝叶斯分类器解决的方法。

朴素贝叶斯

朴素贝叶斯是分类和解释数据最适用的数据挖掘算法之一。该算法通过给出每个事件的概率来帮助统计并给出解释。

简单定义:根据比特定的C.发生的更早的一些条件(x 1,x 2, x 3,..., x n),找出事件(C 1,C 2, ...,C n)发生的概率

如图,给出了训练数据集,并根据一些因素对这些数据进行分类。在上面的例子中,有文字确定他们的内容是正面的还是负面的。作为一个测试数据集,有两个句子,其内容方向正负面性是模棱两可的。我们的目标是通过学习训练集找到他们的方向。使用最适用于文本和意见挖掘的朴素贝叶斯分类器是问题的适当的解决方案。

由朴素贝叶斯分类器进行正负性判断的计算过程

为了达到我们的目的,我们应该知道或回顾关于统计和概率科学的一些概念。对于一些基本的定义,解释如下:

可能性

当一个事件发生时,我们仔细考察,统计发生在特定的事件上所有可能性,并称之为Sample Space(样本空间),然后计算可能发生多少次。如果我们扔一枚硬币,我们的样本空间是两个,因为我们有S = {正面,反面},当我们扔硬币时,正常状态下只有一个事件,硬币只可能是正面或反面。但是投掷骰子时则有六种可能性作为样本空间。S = {1,2,3,4,5,6},也是在骰子中,只有一个发生。概率将通过事件总数除以总采样空间来计算,例如1号落骰的概率是1/6。还有其他事件不止一次发生。从上表可以看出,有8个样本空间。发生事件“正面”的概率是4/8 = 0.5,因为8次共发生4次正面事件;对于“负面”事件也是一样的。

条件概率

发生一个事件时发生的另一个事件P(A | B)的概率称为条件概率,读作“B条件下A的概率”。例如,一名患者首先有高血糖,即“B”,然后测量发生糖尿病的概率为“A”,因此我们测量P(A = 糖尿病| B = 葡萄糖)。在上面的例子中,(体现为)在“正面”条件下发生“好”的概率有多少。

在好事件的那一列中,有三个以蓝色表示的正面事件,它们是好事件和正面事件的组合,而在最后一栏中正面事件发生了四次,所以条件概率为三比上四得0.75。

贝叶斯理论

对于其他一些问题,我们有几种事件,也有几种(分类方法不同的)类别,某些特定种类的事件属于特定的类别。然后在研究过去的信息之后,我们要把新的条件分类。在上面的例子中,不同的句子有正面或负面的。然后我们要根据以前的分类对新的句子进行分类。P(新的句子 | 负面)或P(新的句子 | 正面)表示新句子是正面还是负面(的条件概率)。由于句子包含不同的单词,因此应该用朴素贝叶斯分类器来解决。

根据下面的十个公式,我证明了从条件概率公式中提取了多少朴素贝叶斯。首先,句子应该被不同的单词分开,然后依次根据正面和负面的状态来计算概率。最后把两个值从负值和正值进行比较,不管哪个值越大,句子就属于这个类别。在下面的例子中,“It is good”是大于0.047的0.28,因此是“正确”的句子。

在上面的方程中,c有很高的百分比发生,并且是全部假设的一个子集,因为P(x)与h无关,P(x)的存在将会减少,最终我们移除P(x)。

朴素贝叶斯分类器

该方法与神经网络和决策树一样实用,适用于文本分类和医学诊断。朴素贝叶斯是当我们有大量数据样本时的一种方法,但是他们从一组相互独立的特征中选取有限的值。假设f是目标函数,x将从中选取值的范围,我们的目标是计算最大概率。

计算说明

代码

下载Python:

如果你想免费使用一个舒适的IDE和专业编辑器,且不需要安装库,你可以使用Anaconda&Spider

官方Anaconda下载页面

然后从星号打开Anaconda Navigator(导航)并选择“Spyder”(编译器):

选择spyder

朴素贝叶斯分类器的Python实现

第一步:打开“Anaconda Prompt”(终端)

步骤2:安装“textblob”以获得必要的库

步骤3:下载语料库

第4步:导入重要的库,如textblob和textblob.classifiers

from textblob.classifiers import NaiveBayesClassifier
from textblob import TextBlob

第5步:导入教学和测试集并使用朴素贝叶斯

train = [
    ('It is good', 'positive'),
    ('I feel good about it', 'positive'),
    ('It is bad', 'negative'),
    ('It is good', 'positive'),
    ('It is bad', 'negative'),
     ('I feel bad about it', 'negative'),
     ('I feel it is not bad about', 'positive'),
     ('I feel not good about', 'negative')
 ]


test = [
     ('It is good', 'positive'),
     ('I feel bad about it', 'negative')
 ]


NB = NaiveBayesClassifier(train)

第6步:准确性计算

print("Accuracy: {0}".format(NB.accuracy(test)))

第七步:用不同的句子测试算法

print(NB.classify('I feel good about spring'))  # '正面的'
print(NB.classify('I feel bad about dark'))   # '负面的'

步骤8:将句子替换为一个文档进行意见挖掘或文本挖掘

#Put collect of text in one textblob
#and textblob gives the result by sum up wach result of sentence
#Classify a TextBlob
blob = TextBlob("I feel bad about dark."      # '负面的'
                "I feel good about spring. "  # '正面的'
                "finally darkness is bad."    # '负面的'
                , classifier=NB)        #sum up='负面的'
print(blob)
print(blob.classify())


for sentence in blob.sentences:
     print(sentence)
     print(sentence.classify())
     print(sentence.sentiment.polarity)

结论

贝叶斯方法

  • 收集有关数据集的特定知识数据
  • 为这些数据分配它们的情况种类,概率分布,独立假设
  • 我们在上面的步骤中没有实测这个未知参数,而是根据我们的判断决定
  • 从环境收集原始数据
  • 观察数据并与(先前得出的)数据集进行比较
  • 计算二次概率分布
  • 根据二次概率的平均值进行预测
  • 做出减少结论中错误的决定

优点

  • 每个样本的观察可以偏离我们的假设准确性
  • 通过结合先前的知识和新的样本获得新的假设
  • 贝叶斯方法能够以概率的方式预测情况
  • 将新样本按权重合成分为几个假设
  • 在一些情况下,如果贝叶斯方法不起作用,它们仍是是用于评估其他方法的良好标尺

缺点

  • 前提条件是几乎完整的数据集(数据量巨大)
  • 在没有训练数据集的情况下,我们必须估计概率
  • 上一条中的估计是基于以前的观察、经验等
  • 做这个近似估计是非常困难的