文档过滤(集体智慧编程第6章)

集体智慧编程2种语言(中英)完整源代码pdf 集体智慧编程2种语言(中文,英文)完整pdf,和完整源代码。 立即下载

    文档分类是机器智能(machine intelligence)的一个应用,很有实用价值,而且越来越普及。关于文档过滤,最有价值也是人们所熟知的应用,恐怕要数垃圾邮件过滤了。本章中介绍的算法不是专门针对垃圾信息的。由于这些算法可以解决更为一般的问题,即学习并鉴别文档所属的分类,因此我们还可以将其应用于一些相比垃圾信息而言不那么令人生厌的问题。一种可能的应用就是根据邮件的征文自动将收件箱中的邮件划分为社交类邮件和工作类邮件。

      过滤垃圾信息

      早期使用的是基于规则的分类器,使用时会有人事先设计好一组规则,用以指明某条信息是否属于垃圾信息。垃圾信息制造者知道了这些规则后,就会避开这些规则。,其行为变得更加隐蔽。也就是垃圾信息事先我们是不能100%确定的,为了解决这一问题,本章所要考察的程序会在开始阶段和逐渐收到更多信息之后,根据人们提供给它的有关哪些是垃圾邮件,哪些不是垃圾邮件的信息,不断地进行学习。通过这种方法我们可以分别为不同的用户、群组或网站建立起各自的应用实例和数据集,它们对垃圾信息的界定将逐步形成自己的观点。

     文档和单词

     即将构造的分类器须要利用某些特征来对不同的内容项进行分类。所谓特征,是指任何可以用来判断内容中具备或缺失的东西。当考虑对文档进行分类时,所谓的内容就是文档,而特征就是文档中的单词。当将单词作为特征时,其假设是:某些单词相对而言更有可能会出现在垃圾信息中。这一假设是大多数垃圾信息过滤器背后所依赖的基本前提。不过,特征未必一定是一个个单词;它们也可以是词组或短语;或者任何可以归为文档中缺失或存在的其他东西。

    编写一些函数来从文档中提取特征。

    对分类器进行训练

    本章中讨论的分类器可以通过接受训练的方式来学习如何对文档进行分类。如果分类器掌握的文档及其正确分类的样本越多,其预测的效果也就越好。人们专门设计分类器,其目的也就是在此,即:从极为不确定的状态开始,随着分类器不断了解到那些特征对于分类而言更为重要,其确定性也在不断地增加。

     针对不同的用户、群组或查询,建立起多个分类器实例,并分别对它们进行训练,以响应特定群组的需求。

    计算概率

     既然我们已经对一封邮件在每个分类中的出现次数进行了统计,那么接下来的工作就是要将其转化为概率了。所谓概率就是一个0~1之间的数字,用以指示某一事件发生的可能性。在本例中,可以使用一个单词在一篇属于某分类的文档中出现的次数,除以该分类的文档总数,计算出单词在分类中出项的概率。这个概率为条件概率,通常标记为Pr(A|B),在给定B的条件下A的概率,在本例中,求的值为Pr(word|classification),即:对于一个给定的分类,某个单词出现的概率。比如,在三篇归类为"good"的文档中,有两篇出现了单词"quick",即:一篇"good"分类的文档中包含该单词的概率为:pr(quick|good)=0.666。

     从一个合理的推测开始

      以上的训练数据有个问题-----只根据以往见过的信息,会令其在训练的初期阶段,对于那些极少出现的单词变得异常敏感。在训练用的样本数据中,单词"money"只在一篇文档中出现过,并且由于这是一则设计赌博的广告,因此文档被归为了"bad"类,由于单词"money"在一篇'bad'中出现过,而任何‘good’类得文档中都没有该单词,所以使用上述方法计算出的‘money’在‘good’分类中出现的概率为0.这样做完全有点偏激,因为‘money’可能完全是一个中性词,只是恰好先出现在了一篇‘bad’类得文档而已。伴随着单词越来越多地出现在同一个分类的文档中,其对应的概率值也逐渐接近于0,恐怕这样才能更合理些。

      为了解决上述问题,在我们手头掌握的有关当前特征的信息极为有限时,我们还需要根据一个假设的概率来做出判断。一个推荐的初始值为0.5.我们还需要为假设的概率赋予以多大的权重----权重为1代表假设概率的权重与一个单词相当,返回一个加权的概率。

     在单词'money'的例子中,针对‘money’的加权概率对于所有的分类而言均是从0.5开始的。待到在classifier训练期间接受一篇'bad'分类的文档时,并且范闲‘money’适合于‘bad’分类时,其针对‘bad’分类的概率就会变成0.75,这是因为:

    (weight * assumedprob + count*fprob)/(count + weight)

    = (1*1.0 + 1 * 0.5)/(1.0 + 1.0) = 0.75

 

   选择0.5作为假设的概率初试值仅仅是因为它介于0和1的正中间。不过,也有可能我们已经掌握了更多的背景信息,从而使假设更加有据可依,这一点即便对于一个完全没有经过训练的分类器而言,也是可能的。不管咋样,对于一个过滤器而言,它最好应该有能力处理极少会出现的单词。

      朴素分类器

       一旦我们求出了指定单词在一篇属于某个分类中出现的概率,就需要有一种方法将各个单词的概率进行组合,从而得出整篇文档属于该分类的概率。本章将考虑两种不同的分类方法。这两种方法在大多数场合下都是可以使用的,只不过它们在面对特定任务时,在算法的性能级别上有些微的不同,本节中要讨论朴素贝叶斯分类器。它假设将要被组合的各个概率是彼此独立的,事实上这个假设是不成立的。这意味着,我们无法将采用朴素贝叶斯所求的的结果实际用作一篇文档属于某个分类的概率,因为这种独立性的假设会使其得到错误的结果。不过,我们还是可以对各个分类的计算结果进行比较,再看哪个分类的概率最大。在现实中,若不考虑假设的潜在缺陷,朴素贝叶斯分类器将被证明是一种非常优秀的文档分类方法。

   计算整篇文档的概率

  贝叶斯定理:

     pr(A|B) = Pr(B|A)*Pr(A)/Pr(B)

  在本例中,即为:

Pr(Category|Document) = Pr(Document|Category)*Pr(Category)/Pr(Document)

 Pr(Document|Category)计算方法已经介绍过,Pr(Category)是随机选择一篇文档属于该分类的概率,因此就是属于该分类的文档数除以文档的总数。

 至于Pr(Document),我们也可以计算它,但是这将会是一项不必要的工作。请记住,我们不会将这一计算结果当做真实的概率值。相反,我们会分别计算每个分类的概率值,然后对所有的计算结果进行比较。由于不论计算的是哪个分类,Pr(Document)的值都是一样的,其对结果所产生的影响也完全是一样的,因此我们完全可以忽略这一项。

     选择分类

    构造朴素贝叶斯分类器的最后一步是实际判定某个内容项所属的分类。此处最简单的方法,是计算被考察内容在每个不同分类中的概率,然后选择一个最大的分类。但是在一些应用中,对于分类器而言,承认不知道答案,要好过判断答案就是概率值稍大一些的分类。垃圾邮件过滤就是这情况。所以定义一个最小阈值,也就是对于一封将要被划归到某个分类的新邮件而言,其概率与针对所有其他分类的概率相比,必须大于某个指定的数值才行。

       费舍尔方法

      是前面介绍的朴素贝叶斯方法的以风格替代方案,它可以给出非常精确的结果,尤其适合来及信息过滤。与朴素贝叶斯过滤器利用特征来计算整篇文档的概率不同,费舍尔方法为文档的每个特征都求得了分类的概率,然后又将这些概率组合起来,并判断其是否有可能构成一个随机集合。该方法还会返回每个分类的概率,这些概率彼此间可以进行比较。尽管这种方法更为复杂,但是因为她在为分类选择临界值时允许更大的灵活性,所以还值得一学的。

     针对特征的分类概率

      计算Pr(category|feature)的常见方法为:

    (具有指定特征的属于某分类的文档数)/(具有指定特征的文档总数)

    上述计算公式并没有考虑我们收到某一分类的文档可能比其他分类更多的情况。所以也应该初始化一个固定概率,加权。

   将各概率值组合起来

   现在我们须要对应各个特征的概率值组合起来,形成一个总的概率值。理论上我们可以将它们连乘起来,利用相乘的结果在不同的分类间进行比较。当然由于特征不是彼此独立的,所以不能代表正式的概率,但是比贝叶斯分类要好不少了。

    对内容项进行分类

    在这可以每个分类设定下限,然后分类。

    将经过训练的分类器持久化

    在任何真实世界的应用中,所有的训练和分类工作都不太可能完全在一次会话中完成,所以将训练的结果保存在数据库中。

    与本章所介绍的分类器相比,神经网络和支持向量机的一个很大的优势:它们可以捕获到输入特征之间更为复杂的关系。

别再乱点U盘里的.exe了!手把手教你彻底清除那个伪装成Usb Disk的蠕虫病毒 本文详细介绍了如何识别、清除和预防伪装成Usb Disk的蠕虫病毒。从识别感染迹象到安全备份文件,再到深度清理病毒残留和构建防护策略,提供了一套完整的U盘病毒解决方案。特别提醒用户注意U盘病毒的风险,并养成良好的使用习惯。 阅读详情

相关推荐

kali设置安装burpsuite中文版

工具:通过网盘分享的文件:Burpsuite 链接:提取码: jay1。

m0_74786138的博客 5202

python机器学习案例系列教程——文档分类器,朴素贝叶斯分类器,费舍尔分类器

全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 贝叶斯分类过程概述:首先有一批已知分类的数据集。对每个输入对象提取特征,根据输入对象的特征属性和输入对象的所属分类,计算分类与特征属性之间的概率关系,以此来实现样本的训练。当对新的输入对象进行预测所属分类时,提取新输入对象的特征,根据训练好的概率,判断输入对象属于每个分类的概率。 先验概率和后验概率 教科书...

6538

手把手教你用STM32CubeMX配置WS2812的PWM+DMA驱动(附完整代码)

本文详细介绍了如何使用STM32CubeMX配置PWM+DMA驱动WS2812全彩灯带,包括硬件选型、STM32F103C8T6的时钟配置、定时器与PWM设置、DMA传输优化等关键步骤,并提供了完整的代码实现和常见问题解决方案,帮助开发者高效控制WS2812灯带。

weixin_30859423的博客 440

我是这样入侵 Hacking Team 的

在意大利间谍软件厂商 Hacking Team 的内部邮件和文档被曝光将近一年后,黑掉这家黑客公司的黑客公开了他如何入侵HT的完整细节。该文档于上周六在网上发布,本意是为了给黑客活动人士的一份指南。但对于安全从业人员来说,则意味着当任何企业或机构面对一个技能娴熟而又目标确定的黑客而言,安全防护工作是多么的困难。入侵HT的黑客在推特上的账户是“@GammaGroupPR”,该账户于2014年建立,当

dotNET跨平台 663

OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写)

ModbusTCP通信是采用直接方式进行通信,用OPC的方式如何去做呢?PLC作为ModbusTCP服务器,用KepServer作为ModbusTCP客户端,同时作为OPC服务器,PC作为OPC客户端新建项目,加载dll库(利用COM技术写的)添加引用,查看到其中包含了众多方法其中OPCGroups继承于IOPCGroups接口。

分享学习成长历程,Winter is coming! 1万+

SIMULINK开发项目实例 1000 例专栏之第960例--基于电力系统稳定性的建模与仿真场景:-含分布式电源的配电网电压稳定性研究

间歇性与随机性:例如,太阳能依赖于日照强度,风能依赖于风速,这使得它们的输出功率具有不确定性。逆变器接口:大多数分布式电源通过逆变器接入电网,这对电网的动态响应特性产生了影响。位置分散:通常分布在用户侧或靠近负荷中心的位置。本文详细介绍了如何使用Simulink结合Simscape Electrical 构建一个用于研究含分布式电源配电网电压稳定性的模型,并提供了详细的仿真流程说明。

xiaoheshang_123的博客 153

读书笔记:“集体智慧编程”之第六章:文档过滤的基础和朴素贝叶斯分类器

开篇 一听名字就很觉得意思明白了很多了吧。文档过滤是机器智能应用的一个方面。 主要使用在: 过滤垃圾邮件过滤论坛内垃圾帖子博客和维基的垃圾内容 书中提示:本章所讲算法更具有一般性,也就是说不一定只能用来做垃圾过滤,还可以用来完成对邮件分类等等。 早期用于过滤的分类器 早期过滤垃圾的信息非常简单,使用:基于规则的分类器,规则就是人为事先设定好的,比如 英文字母大写与医药品有

zy825316的专栏 1622

关于“为爱发电”的一些说明~~

专栏教学资料+工程文件

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 2674

《集体智慧编程》第6章 文档过滤 个人笔记

第6章 文档过滤1、前期准备 2、朴素分类器 3、费舍尔方法 4、补充

Amber07的笔记本 579

RDkit入门

今天开始写RDkit的入门教程,每天学习和写一小点,相信一句话“不积跬步无以至千里,不积小流无以成江海”,所以就慢慢来,一点一滴积累叭,从最简单的开始喽希望自己每天都能保持写博客的好习惯,把自己的代码笔记就极在这里,RDkit一块啃了很久的骨头,今天终于要下定决心,好好总结一波了,希望保持这个更新的频率,每天都能有所学。............

博客而已 6682

强化学习(Q-learning、DQN) —— 理论、案例与交互式 GUI 实现

本文详细介绍了强化学习中基于值函数的 Q-learning 算法及深度强化学习的 DQN 方法,从基本理论、数学模型到算法流程均进行了全面阐述。通过迷宫导航、股票交易策略和机器人控制等典型案例,展示了强化学习在处理高维、非线性和时变问题中的强大适应性。为了帮助工程师和研究者更直观地理解强化学习的训练过程,本文还提供了一份基于 Python 与 PyQt6 实现的交互式 GUI 演示系统代码示例,用户可以在线调整参数,实时观察累计奖励和 Q 值的变化,从而更深入地理解算法收敛和策略演化的过程。

闲人编程的博客 1475

集体智慧编程_6文档过滤

0 简述     早期的垃圾分类都是基于规则的分类器,缺点 :1)垃圾信息制造者知道规则后,可以轻松避开 ;2)是否为垃圾信息很大程度上因其所面对的读者和张贴位置的不同而不同。1 文档和单词     将构造的分类器须利用某些特征来对不同的内容项进行分类。所谓特征,是指任何可以用来判断内容中具有或是缺失的东西。当考虑对文档分类时,内容则是文档,特征则是文档中的单词。 python中的re包来处理(正...

u013187969的博客 330

uniapp - [全端兼容] 高性能 tabbar 底部菜单凸起效果,原生系统自定义底部菜单不卡顿、切换页面不闪烁、自动缓存页面(底部菜单中间自定义一个图片并悬浮起来)

uniapp如何实现底部凸起按钮,uniapptabbar底部菜单怎么自定义,uniapp怎么让底部菜单中间突出来,uniapp自定义底部tabbar,uniapp高性能好用的底部菜单,uniapp自定义底部导航栏并解决闪烁问题,uniapp怎么设置凸起的底部tabbar,uniapp怎么用系统的底部菜单还想让中间的按钮凸起来,uniapp自定义tabbar性能不好怎么办,uni-app自定义导航栏实现中间凸起效果,uniapp底部导航栏中间圆形按钮凸起效果详细代码,uni-app自定义中间图标突起的

🏆 前端领域优质创作者 1万+

集体智慧编程学习笔记--文档过滤

文档分类是机器智能的一个应用,很有使用价值,大家所熟知的应用,

huanruiqi的专栏 1296

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

集体智慧编程_第六章文档过滤

文档和单词 将单词作为特征。将任何非字母类字符为分隔符对文本进行划分,将文本拆分为一个个单词,并转化成小写形式。 import re import math def getwords(doc): splitter.re.compile('\\W*') words=[s.lower() for s in splitter.split(doc) if len(s)>2 and l...

qq_37356854的博客 255

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

浅析集体智慧的实用性

注:转载请注明原作者及链接,谢谢。我们知道Web2.0是相对Web1.0的一类新的互联网应用的统称。Web2.0注重用户的交互作用,用户既是网站内容的浏览者,也是网站内容的制造者。比较有代表性的两个例子是维基百科和Google。维基百科是一个在线的百科全书,它完全是由用户维护的。任何人都可以新建或者编辑网站上的任何一个页面,同时会有为数不多的几名管理员进行监控。而Google则是世界上最为流行

竹子的信仰-set 1916

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

文档过滤

算法来自于《集体智慧编程》-第六章 原书代码用 Python 实现,这两天看这章书,改用 Java 实现。   package ch6DocumentFiltering; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Set;

积篑石榭 732

集体编程智慧(2)

随机搜索:         该方法接受两个参数,Domain和costf,其中Domain是一个由二元组构成的列表,指定了每个变量的最大最小值。而costf胃成本函数,为其他优化问题所重用,它会跟踪最佳猜测(即具有最低成本的题解)并将结果返回。        本质:随机选择出一些题解,并进行尝试,比较得出尝试解中的最佳值,但不一定是问题的全局最优值。   爬山法:以一个随机解开始,然后在其

Kikim的地盘 1739

《集体智慧编程》

在这个重视实践的行业一直是一个理论者,书呆子发现现在的书越来好了。 找了一本《集体智慧编程》,用这个博客做记录学习datamining和python,我会常来的 ...

戴某点滴 155

集体智慧编程(二)发现群组

博客地址:http://andyheart.me,首先会更新本人自己的博客,然后更新优快云。有错误之处,请私信或者评论,多谢。概念数据聚类:一种用以寻找紧密相关的事、人或观点,并将其可视化的方法。目的是采集数据,然后从中找出不同的群组。 监督学习:利用样本输入和期望输出来学习如何预测的技术。例如,神经网络,决策树,支持向量机,贝叶斯过滤。 无监督学习:在一组数据中找寻某种结构,数据本身不是我们

jie310300215的专栏 2205

集体智慧编程 简介

Netflix 是一家在线租片儿的公司, 并且更具用户过去租片的行为来进行推荐, 他悬赏100万美元去奖励第一个把租片成功率提高10%的团队,以及5 万美元给这个团队的leader,通过提供用户以前租片的纪录给团队们进行推荐,现在做的最牛屄的团队是提高了 7%。    google 是意见搜索公司,创立当时有很多其他的公司, 但是google 通过其他网页对他的外链来进行排...

slow is fast 334

集体智慧编程学习笔记之文档过滤

如何进行文档过滤

poxiaozhuimeng的专栏 759

探索编程集体智慧:深入源代码分析

探索编程集体智慧:深入源代码分析 去发现同类优质开源项目:https://gitcode.com/ 提供了一个独特的学习平台,它基于著名书籍《Programming Collective Intelligence》的源代码实现。这本书由 Toby Segaran 编著,旨在教读者如何利用人工智能和机器学习算法在互联网上挖掘和利用大量数据。项目的目标是为开发者提供一个实践这些概念的场所,以增强对群体...

gitblog_00051的博客 388

《集体智慧编程》第一章

前言 1、中文对照 2、开放的WEB API接口 del.icio.us   一个社会型书签应用系统,其开放的API允许你根据tag或者特定的用户来下载链接 Kayak   一个提供API的旅游网站,可以利用API在自己的程序中集成针对航班和旅馆的搜索 eBay   一个提供API的在线交易站点,允许查询当前正在出售的货品 Hot or Not   一个评分与交友的网站...

weixin_30247307的博客 232

集体编程智慧读书笔记——第一章

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34209406的博客 216

集体编程智慧(1)

人:非凡能力,不管对错,对未来有一定的预判(我觉得也是受限于人的知识储备,否则对新的信息进行决策时,仍然不能从中识别出相似的信息); 机器:受限于大量模式之上的归纳能力。因此若出现不同于算法先前所曾见到过的任何其他模式,就可能被“误解”。   1.生物工艺学:测序技术和筛选技术(算法导论中的动态规划算法来实现LCS计算)——DNA序列、蛋白质结构; 2.金融欺诈侦测:信用卡公司侦测交易是否

Kikim的地盘 1394
上一篇: 递归和动态规划
下一篇: 正则表达式的学习
DeepIT
博客等级 码龄16年 27粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值