企业行业分类-贝叶斯算法解决方案
1 公式的理论基础
朴素贝叶斯分类是一种十分简单的分类算法,叫它朴素贝叶斯分类是因为这种方
法的思想真的很朴素,朴素贝叶斯的思想基础是这样的:对于给出的待分类 项,
求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属
于哪个类别。通俗来说,就好比这么个道理,你在街上看到一个黑人,我问你你
猜这哥们哪里来的,你十有八九猜非洲。为什么呢?因为黑人中非洲人的比率最
高,当然人家也可能是美洲人或亚洲人,但在没有其它可用信息下,我们会选择
条件 概率最大的类别,这就是朴素贝叶斯的思想基础。
贝叶斯定理由英国数学家贝叶斯 ( Thomas Bayes 1702-1761 ) 发展,用来描述
两个条件概率之间的关系,比如 P(A|B) 和 P(B|A)。按照乘法法则,可以立刻
导出:P(A∩B) = P(A)*P(B|A)=P(B)*P(A|B)。如上公式也可变形为:P(B|A) =
P(A|B)*P(B) / P(A)。
2 贝叶斯分类器描述
朴素贝叶斯分类的正式定义如下:
1、设
为一个待分类项,而每个 a 为 x 的一个特征属性。
2、有类别集合
。
3、计算
4、如果
。
,则
。
那么现在的关键就是如何计算第 3 步中的各个条件概率。我们可以这么做:
1、找到一个已知分类的待分类项集合,这个集合叫做训练样本集。
2、统计得到在各类别下各个特征属性的条件概率估计。即
。
3、如果各个特征属性是条件独立的,则根据贝叶斯定理有如下推导:
因为分母对于所有类别为常数,因为我们只要将分子最大化皆可。又因为各特征
属性是条件独立的,所以有:
根据上述分析,朴素贝叶斯分类的流程可以由下图表示(暂时不考虑验证):
可以看到,整个朴素贝叶斯分类分为三个阶段:
第一阶段——准备工作阶段,这个阶段的任务是为朴素贝叶斯分类做必要的准备,
主要工作是根据具体情况确定特征属性,并对每个特征属性进行适当划分, 然
后由人工对一部分待分类项进行分类,形成训练样本集合。这一阶段的输入是所
有待分类数据,输出是特征属性和训练样本。这一阶段是整个朴素贝叶斯分类中
唯 一需要人工完成的阶段,其质量对整个过程将有重要影响,分类器的质量很
大程度上由特征属性、特征属性划分及训练样本质量决定。
第二阶段——分类器训练阶段,这个阶段的任务就是生成分类器,主要工作是计
算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概
率估计,并将结果记录。其输入是特征属性和训练样本,输出是分类器。这一阶
段是机械性阶段,根据前面讨论的公式可以由程序自动计算完成。
第三阶段——应用阶段。这个阶段的任务是使用分类器对待分类项进行分类,其
输入是分类器和待分类项,输出是待分类项与类别的映射关系。这一阶段也是机
械性阶段,由程序完成。
3 贝叶斯企业行业分类器
1、 给定特征向量
,具体我们可以将企业的营业范围(广告设计;影
视制作)划分为属性集合 x={广告,设计,影视,制作}的 4 维属性向量
2、 给定行业分类集合
,简单期间我们假设行业为 3 类
C={行业 1,广告服务,行业其他}
3、 计算
。
及:P(行业 1|x),p(广告服务|x),P(行业其他|x)
解释:
P(行业 1|x):为当 x 集合中“广告,设计,影视,制作”同时出现时为行业 1 的概率;
P(广告服务|x):为当 x 集合中“广告,设计,影视,制作”同时出现时为广告服务的概
率;
P(行业其他|x):为当 x 集合中“广告,设计,影视,制作”同时出现时为行业其他的概
率;
4、如果
,则
。
找到最大的 P(某个行业|x),企业就是属于这个行业。
5、 根据计算公式
例如:计算 P(广告行业|x)= p(广告|广告行业)* p(设计|广告行业) *p(影视|广告行业) *p(制作
|广告行业) *P(广告行业)
其中 P(广告行业)值为,是广告行业的概率=1/一般为行业总数,如 36 个行业的话,概率为 1/36
其中:p(广告|广告行业) ,p(设计|广告行业) ,p(影视|广告行业), p(制作|广告行业) ,
P(广告行业)….这个是我们要做的基础工作,统计当为某个行业是,这个词出现的概率,见
“行业语义分词概率表”
4 下一步就是建立语义库
建立语义库,统计某种行业下面,分词出现的概率
建立分词语义概率表如下:
表格1 行业语义分词概率表
关键字
广告
行业代码
行业 1
行业 1
行业 1
行业 1
影视行业
影视行业
影视行业
影视行业
其他行业
其他行业
其他行业
其他行业
设计
影视
制作
广告
设计
影视
制作
广告
设计
影视
制作
概率
1
1
9
8
80
6
30
4
3
2
1
1
5 扩展
可以应用到我们的行业分类,垃圾邮件分类,情感分类,任意分类器-》行业,产品,规模,
国企
6 附录
6.1 别墅和狗
一座别墅在过去的 20 年里一共发生过 2 次被盗,别墅的主人有一条狗,狗平
均每周晚上叫 3 次,在盗贼入侵时狗叫的概率被估计为 0.9,问题是:在狗叫
的时候发生入侵的概率是多少?
我们假设 A 事件为狗在晚上叫,B 为盗贼入侵,则 P(A) = 3 / 7,
P(B)=2/(20·365)=2/7300,P(A | B) = 0.9,按照公式很容易得出结果:
P(B|A)=0.9*(2/7300)/(3/7)=0.00058
6.2 容器里的球
另一个例子,现分别有 A,B 两个容器,在容器 A 里分别有 7 个红球和 3 个
白球,在容器 B 里有 1 个红球和 9 个白球,现已知从这两个容器里任意抽出
了一个球,且是红球,问这个红球是来自容器 A 的概率是多少?
假设已经抽出红球为事件 B,从容器 A 里抽出球为事件 A,则有:P(B) = 8 / 20,
P(A) = 1 / 2,P(B | A) = 7 / 10,按照公式,则有:P(A|B)=(7 / 10)*(1 /
2)/(8/20)=0.875
贝叶斯公式为利用搜集到的信息对原有判断进行修正提供了有效手段。在采样之
前,经济主体对各种假设有一个判断(先验概率),关于先验概率的分布,通 常
可根据经济主体的经验判断确定(当无任何信息时,一般假设各先验概率相同),
较复杂精确的可利用包括最大熵技术或边际分布密度以及相互信息原理等方法
来 确定先验概率分布。
贝叶斯定理的推广
对于变量有二个以上的情况,贝式定理亦成立。例如:
P(A|B,C)=P(B|A)*P(A)*P(C|A,B)/(P(B)*P(C|B))
这个式子可以由套用多次二个变量的贝式定理及条件机率的定义导出:
6.3 贝叶斯过滤器
垃圾邮件是一种令人头痛的顽症,困扰着所有的互联网用户。
正确识别垃圾邮件的技术难度非常大。传统的垃圾邮件过滤方法,主要有"关键
词法"和"校验码法"等。前者的过滤依据是特定的词语;后者则是计算邮件文本
的校验码,再与已知的垃圾邮件进行对比。它们的识别效果都不理想,而且很容
易规避。
2002 年,Paul Graham 提出使用"贝叶斯推断"过滤垃圾邮件。他说,这样做的效
果,好得不可思议。1000 封垃圾邮件可以过滤掉 995 封,且没有一个误判。
另外,这种过滤器还具有自我学习的功能,会根据新收到的邮件,不断调整。收
到的垃圾邮件越多,它的准确率就越高。
贝叶斯过滤器是一种统计学过滤器,建立在已有的统计结果之上。所以,我们必
须预先提供两组已经识别好的邮件,一组是正常邮件,另一组是垃圾邮件。
我们用这两组邮件,对过滤器进行"训练"。这两组邮件的规模越大,训练效果就
越好。Paul Graham 使用的邮件规模,是正常邮件和垃圾邮件各 4000 封。
"训练"过程很简单。首先,解析所有邮件,提取每一个词。然后,计算每个词语
在正常邮件和垃圾邮件中的出现频率。比如,我们假定"sex"这个词, 在 4000
封垃圾邮件中,有 200 封包含这个词,那么它的出现频率就是 5%;而在 4000 封
正常邮件中,只有 2 封包含这个词,那么出现频率就是 0.05%。(【注释】如果
某个词只出现在垃圾邮件中,Paul Graham 就假定,它在正常邮件的出现频率是
1%,反之亦然。这样做是为了避免概率为 0。随着邮件数量的增加,计算结果会
自动调整。)
有了这个初步的统计结果,过滤器就可以投入使用了。
现在,我们收到了一封新邮件。在未经统计分析之前,我们假定它是垃圾邮件的
概率为 50%。(【注释】有研究表明,用户收到的电子邮件中,80%是垃圾邮件。
但是,这里仍然假定垃圾邮件的"先验概率"为 50%。)
我们用 S 表示垃圾邮件(spam),H 表示正常邮件(healthy)。因此,P(S)和
P(H)的先验概率,都是 50%。