版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章概论西华大学机器学习第五章朴素贝叶斯XXX学校XXX2022目录Contents模型介绍社区留言板文本分类旧金山犯罪分类预测
知识引入3序号症状职业疾病1打喷嚏护士感冒2打喷嚏农夫过敏3头疼建筑工人脑震荡4头疼建筑工人感冒5打喷嚏教师感冒6头疼教师脑震荡某个医院早上收了六个门诊病人,这六个病人的症状和最终诊断的疾病如下表所示:现在又来了一个打喷嚏的建筑工人,请问他有可能患上了什么疾病?
本章知识图谱4模型介绍一1.1贝叶斯决策理论基础6朴素贝叶斯的理论基础是概率与条件概率。1、概率
概率有很多种定义,简言之就是表征随机事件发生可能性大小的量,是事件本身所固有的、不随人的主观意愿而改变的一种属性。事件A发生的概率通常记为P(A)。2、条件概率
条件概率就是在另外一个事件B已经发生的条件下,事件A发生的概率,表示为P(A|B),读作“在B条件下A的概率”。条件概率可由下式计算:1.1贝叶斯决策理论基础73、先验概率和后验概率
先验概率是在缺乏某个事实的情况下描述一个事件发生的可能性,而后验概率是在考虑了一个事实之后的条件概率。
4、全概率公式
概率论中经常要从已知的简单事件的概率去求未知的复杂事件的概率,即将复杂事件分解为若干个简单事件,通过这些简单事件的概率来求复杂事件的概率。形成定理就是经常用到的全概率公式。1.1贝叶斯决策理论基础85、贝叶斯公式
通常,事件A在事件B发生的条件下发生的概率,与事件B在事件A发生的条件下发生的概率是不一样的,但这两者是有确定关系的,贝叶斯法则就是对这种关系的描述。1.1贝叶斯决策理论基础95、贝叶斯公式AB
现在假设“抽出黑球”为事件X,“选择容器A”为事件Y,那么可以计算出:P(X)=(3+4)/10=0.7,P(Y)=0.5,P(X|Y)=3/5=0.6,根据贝叶斯公式可以求出P(Y|X)=P(X|Y)*P(Y)/P(X)=0.43,因此该球来自于容器A的概率为0.43。从这两个容器中任意抽取出一个球,结果发现是一个黑球,我们想知道这个球来自于容器A的概率是多少?1.2使用朴素贝叶斯进行分类10将贝叶斯公式换成分类任务表达式为:
1.2使用朴素贝叶斯进行分类11从已知的六个病人数据中,我们可以得到以下几个数据:P(打喷嚏|感冒)=2/3=0.66,P(建筑工人|感冒)=1/3=0.33,P(感冒)=3/6=0.5,P(打喷嚏)=3/6=0.5,P(建筑工人)=2/6=0.33根据贝叶斯公式有:P(感冒|打喷嚏*建筑工人)=P(打喷嚏*建筑工人|感冒)*P(感冒)/P(打喷嚏*建筑工人)在这个实际案例中,病人的症状和职业显然是独立的,因此:P(打喷嚏*建筑工人)=P(打喷嚏)*P(建筑工人),因此:P(感冒|打喷嚏*建筑工人)=P(打喷嚏|感冒)*P(建筑工人|感冒)*P(感冒)/P(打喷嚏)*P(建筑工人)可以得到:P(感冒|打喷嚏*建筑工人)=0.66*0.33*0.5/(0.5*0.33)=0.661.3朴素贝叶斯分类特点12朴素贝叶斯分类器理论基础明确且简单,容易用代码实现,适用性广,具体来说具有以下一些特点:主要优点:拥有稳定的分类效率。对小规模的数据表现很好,能处理多分类任务,适合增量式训练,尤其是数据量超出内存时,可以分批进行增量训练。对缺失数据不太敏感,算法也比较简单,常用于文本分类。1.3朴素贝叶斯分类特点13主要缺点:理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但实际上并非总是如此。因为朴素贝叶斯模型在给定输出类别的情况下,会自动假设属性之间相互独立,但这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,这会造成分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法能通过考虑部分关联性进行算法改进。需要知道先验概率,且先验概率很多时候取决于假设。假设的模型可以有很多种,因此在某些时候由于假设的先验模型不够准确,可能导致预测效果不佳。因为是通过先验的概率和数据来决定后验的概率,再用后验的概率决定分类,所以分类决策将存在一定的错误率。对输入数据的表达形式很敏感。案例:社区留言板文本分类二2.1案例介绍15
对此案例中的留言建立两个类别:侮辱类和非侮辱类,分别用1和0来表示。在文本分类问题中:
(1)样本为整个文档
(2)样本特征由文档的某些元素构成
(3)需要根据特征来判断样本所属分类
在针对文档进行特征提取的时候,通常有两种表示特征的方法,分别是词集模型(set-of-wordsmodel)和词袋模型(bag-of-wordsmodel)。
2.2数据准备161.实验样本数据创建defloadDataSet():
"""
:return:单词列表postingList,所属类别classVec
"""
postingList=[['my','dog','has','flea','problem','help','please'],
['maybe','not','take','him','to','dog','park','stupid'],
['my','dalmation','is','so','cute','I','love','him'],
['stop','posting','ate','my','steak','how','to','stop','him'],
['mr','licks','ate','my','steak','how','to','stop','him'],
['quit','buying','worthless','dog','food','stupid']
]
classVec=[0,1,0,1,0,1]#分类标签集合,0表示非侮辱类,1表示侮辱类
returnpostingList,classVec
2.2数据准备172.词条集合创建defcreateVocabList(dataSet):
"""
:return:所有单词的集合
"""
vocabSet=set([])
fordocumentindataSet:
vocabSet=vocabSet|set(document)
returnlist(vocabSet)
如图所示代码是将数据中的所有单词不重复得创建一个元素集。2.2数据准备183.创建词集defsetOfWords2Vec(vocabList,inputSet):
“”“
:paramvocabList:已有的单词数据集
:paraminputSet:输入的需要检测的单词数据列表
:return:匹配列表
”“”
returnVec=[0]*len(vocabList)#创建与已有的单词数据列表等长的向量
forwordininputSet:#将输入的文档单词一一与已有的单词数据集进行比对
ifwordinvocabList:
returnVec[vocabList.index(word)]=1#在已有的单词列表中存在,找到该单词的索引值,赋值1
else:
print("该词:%s不在我的单词列表中"%word)
returnreturnVec
如下代码所示是将输入的检测数据集与已有的单词集比对,并生成匹配列表2.2数据准备194.创建词袋defbagOfWords2Vec(vocabList,inputSet):
“”“
:paramvocabList:已有的单词数据集
:paraminputSet:输入的需要检测的单词数据列表
:return:匹配列表
”“”
returnVec=[0]*len(vocabList)#创建与已有的单词数据列表等长的向量
forwordininputSet:#将输入的单词一一与已有的单词数据集进行比对
ifwordinvocabList:
returnVec[vocabList.index(word)]+=1#在已有的单词列表中存在,找到该单词的索引值,累加1
else:
print("该词:%s不在我的单词列表中"%word)
returnreturnVec如图所示代码是将文档中单词出现次数统计出来。2.3概率计算
训练函数trainNB(trainMatrix,trainCategory),输入参数分别为文档矩阵和每篇文档类别构成的向量。
首先该函数计算文档属于侮辱性言论的(类别为1)的概率,即P(1)。由于只有2个分类,可知非侮辱性言论的概率为:P(0)=1-P(1)。遍历文档判断是否是侮辱性文档是否p1Num和P1Denom分别进行累加处理p0Num和P0Denom分别进行累加处理2.3概率计算计算出在1类别下,每个单词出现的概率p1Vect,用p1Num和p1Denom分别表示侮辱性文件中各词条出现的次数(结果为向量)和所有出现的单词总数(结果为数)。
计算出在0类别下,每个单词出现的概率p0Vect,用p0Num和p0Denom分别表示非侮辱性文件中各词条出现的次数(结果为向量)和所有出现的单词总数(结果为数)。
计算出侮辱性文件出现的概率pAbusive即侮辱性文档个数除以文档总数。
函数返回值:2.4算法改进1、初始化值修改
利用贝叶斯分类器对文档进行分类时,要计算多个概率的乘积以获得文档属于哪个类别的概率。如果其中一个概率值为0,那么最后乘积也为0,显然这样的结果不正确。为了降低这种影响,可以将所有词出现次数的初始化值设为1,并将分母初始化值设为2。2、数据下溢问题
当计算多个概率的乘积以获得文档属于哪个类别的概率时,由于大部分数据都非常小,所以程序会下溢或者得不出正确答案(四舍五入为0)。针对这种情况,可以采取对乘积取自然对数的方法。通过求对数可以避免下溢出或者浮点数四舍五入导致的错误,且不会有任何损失。2.5改进后的朴素贝叶斯分类器应用1、创建贝叶斯分类器函数
p1=sum(vec2classify*p1Vec)+log(pClass1)p0=sum(vec2classify*p0Vec)+log(1.0-pClass1)
函数classifyNB(vec2classify,p0Vec,p1Vec,pClass1)参数分别为分类向量及函数trainNB()返回的三个结果。
函数classifyNB返回值由p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省成都市石室天府中学2025-2026学年高中毕业班质量检查(Ⅱ)化学试题含解析
- 京冀首条跨省域地铁22号线2026年开通条件与同城化通勤效能分析
- 云南省保山市施甸县重点达标名校2025-2026学年初三下-期中统一考试生物试题试卷含解析
- 2026年社区嵌入式养老机构建设标准与服务功能配置指南
- 2026年快堆乏燃料干法后处理技术与发展思考熔盐电解技术路线深度解析
- 2025年临床执业医师《儿科学》强化训练试卷
- 2025年临床医学模拟试卷
- 虚拟现实产品经理的工作计划概览
- 项目策划岗位面试常见问题
- 医药研发企业实验室建设规划及安排
- 人教版初中化学总复习
- 家庭教育指导师国家职业标准(2024版)
- 2025年度民办非企业单位工作计划
- 《游园》课件统编版高中语文必修下册
- 人教版小学五年级美术下册全册教案
- HG∕T 2059-2014 不透性石墨管技术条件
- 英语专业四级听力50篇
- 液气分离器教材
- HG/T 22820-2024 化工安全仪表系统工程设计规范(正式版)
- 西方社会思想两千年智慧树知到期末考试答案章节答案2024年复旦大学
- 基于人工智能的文化遗产保护与传承策略
评论
0/150
提交评论