机器学习算法在学习很生活中有很多使用,比如对网页进行分类、模式识别等等,有些算法使用的范围比较广,需要有基本的认识和掌握。
首先介绍一个基本概念:监督学习和无监督学习。区别就在于是否先王机器中输入一定数量的训练集,对机器进行训练。然后将未知数据输入机器,得到输出结果。
监督学习(supervised learning)是需要的,而无监督学习(unsupervised learning)是不需要的。
朴素贝叶斯分类器(native bayes classifier)属于监督学习算法。本质上是一种最大似然估计(maximum likelihood estimation)。(最大似然估计简单来说就是:
已知一个未知数据具有特征F1、F2、F3....情况下,判断这个数据属于分类C1还是C2,只需计算 P(C1 | F1、F2、F3)和 P(C2 | F1、F2、F3),选择概率较大
的一个作为我们的估计。)
朴素贝叶斯一个最常见的使用是文本分类,我们用这个例子来说明它的基本思想。
样本训练:我们要将文本分为几大类,分别为C1、C2、C3....。先找一系列文本,并给这些文本贴上所属类别的标签。机器读入这些训练样本,根据它们计算不同类
别中各个单词出现的概率概率:
对于C1类别,我们计算:P(w1|C1)、P(w2|C1)、P(w3|C1)、P(w4|C1).....
对于C2类别,我们计算:P(w1|C2)、P(w2|C2)、P(w3|C2)、P(w4|C2).....
对于C3类别,我们计算:P(w1|C3)、P(w2|C3)、P(w3|C3)、P(w4|C3).....
........
然后计算出各个不同类别的文本出现的概率,即P(C1)、P(C2)、P(C3).....
样本训练结束。
对某一段文本进行分类,基本过程如下:
我们假设这段文本由单词w1、w2、w3....构成,根据最大似然估计的思想,计算出P(C1 | w1、w2、w3....)、P(C2 | w1、w2、w3....)、P(C3| w1、w2、w3....),
然后选择概率最大的一项对应的类别作为最终结果,输出。关键是对P(C | w1、w2、w3....)的处理。
根据公式,P(C | w1、w2、w3....)=[ P( w1、w2、w3.... | C ) * P ( C ) ]/P(w1、w2、w3.....)
由于计算不同的P的时候,文本都是相同的,都是w1、w2、w3......,所以分母P(w1、w2、w3......)是同一个值,可以忽略不计,只需比较分子的大小即可。
分子中P(C)已知,刚刚已经算出来了。而另一项
P(w1、w2、w3....wn | C )=P(w1|C)*P(w2|C、w1)*P(w3|C、w1、w2)*....*P(wn|C、w1、w2、w3......w(n-1))
=P(w1|C)*P(w2|C)*P(w3|C)*....*P(wn|C) //关键一步,假定各个单词之间相互独立,前提条件中的单词变量可以省去
上式分解之后,各个子项已经知道,可以很方便的计算出来。从而可以计算出各个类别对应的 P( w1、w2、w3.... | C ) * P ( C ) 值的大小,进行比较,选择最大者进行分类。
补充说明:
输入文本进行测试的时候,可能出现某些单词在训练样本中根本没出现过,即P(w|C)= 0 ,这时如果直接进行计算,可能各个类别得到的概率值都是0,无法比较,所以要对
没有出现过的单词作特殊处理,避免这种情况的出现。可以给他们赋一个很小的值。如P(w|C)=1/m,m是训练样本中单词的总数。网易的机器学习在线课程中,提到一个拉普拉斯平滑(Laplace smoothing),作用也是这个。
关于贝叶斯分类器有下面这些文档可以参考:
朴素贝叶斯分类器:
最大似然估计:
http://zh.wikipedia.org/wiki/%E6%9C%80%E5%A4%A7%E4%BC%BC%E7%84%B6%E4%BC%B0%E8%AE%A1
监督学习:
http://zh.wikipedia.org/wiki/%E7%9B%A3%E7%9D%A3%E5%BC%8F%E5%AD%B8%E7%BF%92