机器学习(三):概率学习——朴素贝叶斯分类
来源:互联网 发布:c语言 函数调用 编辑:程序博客网 时间:2024/06/16 22:30
理解:基于贝叶斯方法的分类器是利用训练数据并根据特征的取值来计算每个类别被观察到的概率。当分类器被应用于无标签数据时,分类器就会根据观测到的概率来预测新的特征最可能属于哪一类。
重要概念:
- 事件:可能的结果。晴天或者雨天
- 试验:事件发生一次的机会(概率)
- 概率:事件发生的实验次数除以试验的总次数。
- 联合概率:两个事件同时发生的概率
- 基于贝叶斯定理的条件概率:事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为P(A|B),读作“在B条件下A的概率”。若只有两个事件A,B,那么, P(A|B)=P(AB)/P(B)。
朴素贝叶斯算法:
之所以朴素是因为朴素贝叶斯假设数据集的所有特征都具有相同的重要性和独立性,而实际应用时,这些假设难以成立。然而,在大多数情况下,当违背这些假设,朴素贝叶斯仍旧能够很好应用,一种解释是:只要预测的分类是正确的,那么获得正确的概率估计并不重要。(比如预测51%天会下雨和预测99%天会下雨,是没有太大区别的,预测都是天会下雨。)
具体来说,朴素贝叶斯假设类条件独立,只要事件在相同类取值条件下,这些事件就是相互独立的。这样的假设能够让我们简化条件概率公式(转换为独立事件相乘)例如:(以垃圾邮件是否会出现w1,w2,w3,w4四种单词为例)
转化为:
更正:第一个公式分子上P(w3垃圾邮件)应该改为:P(非w3垃圾邮件)
拉普拉斯估计
如果出现了这样的情况,上面相乘的概率中有一个恰好为0,这样预测的结果就变成了垃圾邮件概率和非垃圾邮件的概率一个是0 一个是100%,如果正好这个消息被错误归类,那么结果就很不理想。
对于一个类中,一个事件从来没有发生,就可能出现这样的问题。由于概率是相乘的,一个概率为0的值就会抵消或否决其他的证据。
解决办法:拉普拉斯估计。
本质:给概率表上的 每一个计数都加上一个较小的数,保证每个特征的概率是非0的,通常情况下,加上的数值设定为1,即每一类特征的组合至少在数据中出现了一次。
在朴素贝叶斯算法中使用数值特征
背景:刚才我们所举垃圾邮件分类的例子,每个特征都必须是分类变量(是否含有某个单词,是否在白天发送等,结果是yes or no),现在我们来介绍特征是数值型的情况(比如单词的数量),如何进行朴素贝叶斯算法。
方法(其中之一):
离散化——将数值分到不同的分段中。通常由大量训练数据时,分段方法比较理想。分段的方法多样,比如发送邮件的时间分为0-6,6-12,12-18,18-24。如果没有很明显的分割点,可以利用分位数(比如三分位数划分到三个分段中)。但是分段过多使朴素贝叶斯频率表中计数值过小,分段过少使重要趋势被掩盖——关键要平衡啊!
例子:基于贝叶斯算法的手机垃圾短信过滤
- 机器学习(三):概率学习——朴素贝叶斯分类
- 机器学习实战(三)——NaiveBayes朴素贝叶斯算法邮件分类
- 机器学习笔记(三) 朴素贝叶斯分类
- 应用机器学习(三):朴素贝叶斯分类器
- 机器学习笔记(五)——朴素贝叶斯分类
- 机器学习算法(分类算法)—朴素贝叶斯
- 机器学习实战学习笔记(三)分类—朴素贝叶斯(python3实现)
- 机器学习(十二)朴素贝叶斯分类
- 机器学习(十二)朴素贝叶斯分类
- 机器学习(八):朴素贝叶斯分类
- 机器学习--朴素贝叶斯分类
- 【机器学习】朴素贝叶斯分类
- 机器学习--朴素贝叶斯分类
- 机器学习-朴素贝叶斯分类
- 机器学习-朴素贝叶斯分类
- 【机器学习】文本分类——朴素贝叶斯Bayes
- 朴素贝叶斯分类器——机器学习
- 机器学习——朴素贝叶斯分类器
- 字符串水题(substr的使用+简单优化)
- mysql中对order by的函数substring_index() , find_in_set()使用
- 版本中Alpha、Beta以及RC等代表的含义
- 单例模式应用场景
- 【秒懂设计模式】单例设计模式
- 机器学习(三):概率学习——朴素贝叶斯分类
- python:BeautifulSoup 模块使用指南
- 百度2017春季招聘笔试题
- C语言测试大小端模式
- 判断奇偶
- 解决:eclipse——新建package或者点击package时报错问题!
- sourceTree merge分支
- 5天玩转C#并行和多线程编程 —— 第二天 并行集合和PLinq
- 在VS C++下实现动态链表的创、输、删、插