分类算法之朴素贝叶斯
==============================================
朴素贝叶斯算法是一种基于贝叶斯公式的分类算法。原理相对比较简单。
贝叶斯公式:
朴素贝叶斯就是围绕着这个公式产生的。
一个简单分类问题Class{
c1
,
c2
}
对于一条数据X其包含若干属性设为
a1
,
a2
,
a3
(简单起见这里只列举三个)。
则朴素贝叶斯就是要计算x属于
c1
和
c1
两类的概率,然后择优选取。
这两个概率都由贝叶斯公式导出,这里只列举x属于C1的情况。
P(x属于C1)的概率可以表述为:
这里我们假设各属性之间独立。
则公式可以进一步简化为:
其中
至此基本概念已经结束。
这里先给一个例子:
比如要预测一个房子的价格(
≥
50K 或者
<
50K)为了方便起见,我们用0表示前一类,1表示后一类。
房子的价格受很多因素影响,比如是否有阳台,是否在市区,是否在6层以下等等。简单起见,这里取三个属性,房间个数{1,2,3}, 房子面积(60,140),是否有阳台(0,1)。分别设为
a1
,
a2
,
a3
。
朴素贝叶斯是一种监督式学习算法。故需要通过训练数据来学习得到一个模型,接着通过该模型来预测。
首先选择一个些待分类数据作为训练数据。计算其中各标签的比例。即可得到上述所有的
p(ci)
值这里对应
p(0)和p(1)
。之后同理可以计算各个属性在某个具体类别中的比例。比如计算价格为
≥
50K的房子中房间个数为1的比例,等等。对应到上面的
P(aicj)
。至此模型就可以构建完全。
有人可能会问到之前关于房子面积是连续型数据应该怎么处理。这里提供两种思路。
- 将连续型数据分成若干小区间,将每个区间看做一个点,即可与离散型数据统一起来。
- 利用概率分布计算分布曲线上对应的值。一般来说使高斯分布模型。