zoukankan      html  css  js  c++  java
  • 读书笔记《集体智慧编程》Chapter 6 : Document Filtering

    本章概要

    本章主要介绍了两种分类技术:

    • 朴素贝叶斯分类(Naive Bayesian Classification)
    • 费舍尔分类器(Fisher Classification)

    上面两种技术的共性都是基于条件概率计算不同分类的概率,然后通过设定一些阀值,找到最适合的分类。分类过程中,都使用了权重概率,用户避免极概率的发生。

    当然,上述两种分类器不仅仅局对邮件分类,还可以对其他实物,如文章,图像,商品等分类,关键是如何抽取特性。

    特性

    特性是根据不同实物而变化的。比如一般的文本,如新闻。可以将词语出现与否作为特性。比如邮件,可以将发送邮件的IP,发送者,发送时间,大写出现频率等均作为特性。

    训练

    人工将一系列特性集合分到特定的分类。后续的算法,根据这个人工分类,按照概率的方式自动计算出分类。

    权重概率

    weightPro = (weight*assumpProb + total*basicProb) / (total+weight),assumProb和weight认为给出,total是feature总数,basicProb是分类的概率。权重概率用于避免极端值,比如刚开始,“money”只在bad分类中出现,但是这并不意味着money只能是bad,

    加上权重,可以使这个过程渐变,避免“天下乌鸦一般黑”的现象发生。

    朴素贝叶斯分类

    训练后,可以得到概率p(feature | category),这个也就是特定分类下,特性出现的集合。朴素的意思是假设feature之间没有依赖,当然这个假设存在问题。但是实时证明,朴素贝叶斯分类器的效果还是可以接受的。

    贝叶斯定理:

    p(A|B) = p(B|A) * p(A) / p(B)

    应用贝叶斯

    将上面公司带入到实际问题中,就是

    p(Category | Document) = p(Docuemnt | Category) * p(Category) / p(Document)

    其中

    p(Document | Category) = p(feature 1|Category) * ... * p(feature N | Category)

    p(Category) = 人工分类的category的文本个数 / 总体人工分类的个数

    p(Document) = 不用计算,p(Category 1|Docuemnt)与p(Category 2  | Docuemnt)均要处理此值,绝度大小对分类没有多大意义,只要知道相对大小就OK了,当然也可以求出来,但是需要更多的二外信息,比如idf值

    选择分类

    根据上面的公式,算出一个文本中不同分类的概率,然后比较大小,确定最后分类。不能简单的比较不同分类的大小来决定分类,需要更具应用场景觉得策略。比如邮件分类,允许将少量垃圾邮件分类成正常邮件,但是不允许将许多正常邮件分类成垃圾邮件。所以,需要添加一个阀值,来控制程度。比如垃圾邮件的概率必须大于正常邮件的3备,才允许是垃圾邮件,否则不是。

    费舍尔分类

    该算法基于p(feature|category),该值表示特定分类的特性概率。比如词语“quick”出现在good文本中的概率。在本书的例子中,是2/3。这个值有一特性,它的大小与特定分类的绝对数量无关。举个例子,比如‘money’出现在坏的文本中1次,但是训练中的文本只有1个,那么p(money|bad)=1(但是这样是不行的,有些场景中,money出现不意味者垃圾邮件,所以需要上面的权重概率缓解此情况)。即使在good文本中出现10次,但good文档有1000个,那么p(money|good)=0.01。

    费舍尔分类的重要值

    p1 = p(feature 1|category)

    ...

    pn = p(feature n|category)

    cprof1 =p1/sum (p1, .. ,pn )

    cprof1可以描述feature 1出现时,他所代表的文本的概率的分类。

    合并概率

    选定一个分类,对所有词计算cprof1,然后相乘后为mcrpof。这里与朴素贝叶斯分类器一样,假设各个词语之间相互独立。计算完后,取自然对数,然后乘以-2(不知道为什么要这么做)。这个算法最重要的地方就是fisher证明了mcropof服从卡方分布(chi-square distribution),但是没有提到证明过程。通过卡方分布,可以计算概率。上面取自然对数,乘以-2是为了可以带入卡方分布公式,计算概率。(目前还不太明白卡方分布是个什么东东,google了一下,发现是正太分布演变过来,这个后续在追究,这里不得不再一次感态数学的奇妙。)

    选取分类

    最后,与朴素贝叶斯分类器一样,需要靠如何选取不同分类的结果。对所有分类设计一个下限,如果分类的概率低于这个下限,那么抛弃,主要是为了避免将好邮件误分类为坏邮件的场景。据实践证明,fisher分类器好于朴素贝叶斯分类器。

    其他可选的分类方法

    神经网络(neutral nework)和supprt vector machine也可以用作分类。贝叶斯分类器的优势在于计算量小,但是相比去前面两者,不够精确,因为没有考虑feather之间的依赖关系,而前者考虑了。

    声明:如有转载本博文章,请注明出处。您的支持是我的动力!文章部分内容来自互联网,本人不负任何法律责任。
  • 相关阅读:
    JS定时循环
    JS分组
    中位数 题解
    NOIP2017 D2T3 题解
    CF949E Binary Cards 题解
    友善的树形DP
    300英雄的危机(heroes)
    [北京省选集训2019]图的难题 题解
    洛谷 P1268 树的重量 题解
    洛谷 P2633 Count on a tree 题解
  • 原文地址:https://www.cnblogs.com/bourneli/p/2772252.html
Copyright © 2011-2022 走看看