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

本文介绍了朴素贝叶斯算法,包括其基本原理、两种实现方式(伯努利模型和多项式模型)、一般过程、优缺点。详细阐述了条件概率的计算,讨论了词集模型和词袋模型,并提供了文档处理为词条列表的代码示例。此外,文章还提到了朴素贝叶斯在电子邮件分类中的应用及其注意事项,如下溢出问题的解决和停用词表的使用。
摘要由CSDN通过智能技术生成

本文总结于《Machine Learning in Action》一书


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


一. 朴素贝叶斯介绍:

     1. 简介

       朴素贝叶斯是贝叶斯分类器的一个扩展,是用于文档分类的常用算法。朴素贝叶斯中,朴素一词是指整个形式化

过程只作最原始、最简单的假设。这里的假设有两个:

       (1) 假设特征之间相互独立。指统计意义上的独立,即一个特征或单词出现的可能性与它与其他单词是否相邻没有

关系。

       (2) 假设每个特征都同等重要。

       尽管上述两个假设有很大瑕疵,但是朴素贝叶斯的实际效果却很好。

      2. 朴素贝叶斯分类器的两种实现方式:

        (1) 基于伯努利模型的实现:该实现方式并不考虑词在文档中出现的次数,只考虑是否出现。与上述假设二中每

个特征同等重要等同。

        (2) 基于多项式模型的实现:它考虑词在文档中出现的次数。

      朴素贝叶斯分类器主要是基于贝叶斯决策理论,其核心思想就是选择最高概率对应的决策,理解贝叶斯公式以及

条件概率。


二. 朴素贝叶斯的一般过程:

     1. 收集数据:可以使用任何方法。本文使用RSS源

     2. 准备数据:需要数值型或者布尔型数据

     3. 分析数据:有大量特征时,绘制特征作用不大,此时使用直方图更好

     4. 训练算法:计算不同的独立特征的条件概率

     5. 测试算法:计算错误率

     6. 使用算法:一个常见的朴素贝叶斯应用是文档分类。可以在任意的分类场景中使用朴素贝叶斯分类器,不一定

非要是文本。


三. 朴素贝叶斯的优缺点

    优点:在数据较少的情况下仍然有效,可以处理多分类问题

    缺点:对数据较为敏感

    适应数据类型:标称型数据


四. 训练算法——条件概率计算的伪代码

    计算每个类别(例如侮辱性、非侮辱性)中的文档数目

    对每篇训练文档:

           对每个类别:

                  如果词条出现在文档中====》增加该词条的计数值

                  增加所有词条的计数值

           对每个类别:

                  对每个词条:

                         将该词条的数目除以总词条数目得到条件概率

           返回每个类别的条件概率


五. 词集模型与词袋模型:

    词集模型(set-of-words model): 只考虑词是否出现,而不考虑词条(token)出现的次数。

    词袋模型(bag-of-words model): 需要考虑词条出现的次数,即统计每个词条出现的次数


六. 将文档处理为词条(token)列表的常用代码:

     import re   # 正则表达式模块

     text = open(fileName)         # fileName: 文档名

     listOfTokens = re.split(r'\W*', text)

     wordList = [tok.lower() for tok in listOfTokens if len(tok) > 0]          # 列表推导


七. 留存交叉验证(hold-out cross validation)

     即随机选择数据的一部分作为训练集,而剩余部分作为测试集的过程称为留存交叉验证


八. 朴素贝叶斯对电子邮件进行分类

     1. 收集数据:提供文本文件

     2. 准备数据:将文本文件解析成词条向量

     3. 分析数据:检查词条确保解析的正确性

     4. 训练算法:使用之间书中的训练算法

     5. 测试算法:使用书中测试函数,并且构建一个新的测试函数来计算文档集的错误率

     6. 使用算法:构建一个完整的程序对一组文档进行分类,将错分的文档输出到屏幕上。


九. 注意事项:

    (1)直接使用贝叶斯公式,往往会出现下溢出问题,这是由于太多小概率相乘造成的。因此,可以使用对数贝叶斯公

式来解决这一问题。另外,为了防止概率值为0时造成的计算问题,算法实现中常常将所有词的出现数初始化为1,并

将分母初始化为2。

    (2)词袋模型(bag-of-words model)在解决文档分类问题上比词集模型(set-of-words model)有所提高。

    (3)在有些文档处理上,常常会采用剔除高频词操作。因为词汇表中的一小部分但词会占据所有文本用词的一大部

分。产生这种现象的原因是因为语言中大部分都是冗余和结构辅助性内容。所以可以采用剔除高频词,同时从某个预

定表中移除结构上的辅助词,这种词表称之为停用词表(stop word list)。停用词表网址:http://www.ranks.nl/resources/stopwords.html


十. 应用:

    本文的应用:朴素贝叶斯对电子邮件进行分类(过滤垃圾邮件),过滤留言版上的侮辱性言论,利用朴素贝叶斯分类

器从个人广告中获取区域倾向。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值