机器学习-朴素贝叶斯

时间:2024-10-02 07:37:28

分类是机器学习最常见的任务。

定义:给定一个对象 X,将其划分到预定义好的某一个类别 yi中

–输入 X

–输出Y (取值于有限集 {y1,y 2,…yn }) 

应用:

–人群,新闻分类,Query分类,商品分类,网页分类,垃圾邮件过滤,网页排序 

不同类型的分类

类别数量:

  1. 二値分类:Y 的取值只有两种,如:email 是否垃圾邮件

  2. 多值分类:Y 的取值大于两种,如:网页分类{政治,经济,体育}

类别关系

  1. 水平分类:类别之间无包含关系

  2. 层级分类:类别形成等级关系

分类器的分类:

  1. 概率分类器:Naive Bayes(NB,朴素贝叶斯) ,EM(Expectation–Maximization)最大化期望

    1. 计算待分类对象属于每个类别的概率,选择概率最大的类别作为最终输出

  2. 空间:Perceptron(感知机), SVM( Support Vector Machine 支持向量机)

  3. 其他:KNN

以新闻分类为例子说明机器学习的流程。

  1. 特征表示:x={昨日,是,国内,投资,市场...}

  2. 特征选择:x={国内,投资,市场...}

  3. 模型选择:朴素贝叶斯分类器

  4. 训练数据:(x,y)1,(x,y)2,(x,y)3,...

  5. 模型训练:learn.exe trainingDataFile model

  6. 测试(分类):classify.exe model newDataFile

  7. 评测:Accuracy:90%

其中选择朴素贝叶斯分类器的原因:

  1. 数据量大

  2. 需要快速,高效

  3. 可以分布式

朴素贝叶斯分类(Naive Bayes,NB)

基于贝叶斯原理

  1. P(X):待分类对象自身的概率,可忽略(我们主要是比较同一个对象分别属于不同分类的概率大小关系,没必要求出概率的具体值)

  2. :每个类别的先验概率,如P(军事)

  3. :每个类别产生该对象的概率

  4. :每个类别产生该特征的概率,如P(苹果|科技)

注意 X 属于yi概率,我将其表示表示每个单词的联合概率,单词联合概率不好求,所以我们假设文档中每个词是独立,由联合概率的独立性推出第三个式子。

  随机变量X,Y是相互独立。

注意:

     由于每个单词的乘积,如果某个词在某个类型出现零次,那么就会造成概率为0的情况,这样造成文章属于该分类的概率为0.我们要进行平滑处理(打土豪分田地),这里就用加一平滑(拉普拉斯平滑),就是给每一个单词加一个默认个数:可以是0.1或者其他数据,这要需要给单词总数添加一个词表的个数。这个平滑是加在训练阶段,在分类时,如果新数据出现整个训练词表中都没有出现的词,我目前做法是丢弃。

     数据稀疏:是机器学习中很大的问题,比拉普拉斯平滑更好的解决数据稀疏的方法是:通过聚类将未出现的词找出系统相关词,根据相关词的概率求一个平均值。如果:系统有“苹果”,“葡萄”等词,但是没有“榴莲”,我们可以根据“苹果”,“葡萄”等平均值作为“榴莲”的概率,这样跟合理。

     在计算机中运算,概率为(0,1)之间的小数,连续乘积容易造成溢出。又因为我们是比较文章与分类概率大小,所以我们可以log(xy)=log(x)+log(y) 将连乘改成连加。log 函数单调递增。如果 x>y 则 log(x)>log(y)

参数估计

也就如何求各个概率。

策略:最大似然估计(maximum likelihoodestimation,MLE)

先验概率:

Count(yi):类别为yi 的对象在训练数据中出现的次数。

:所有文档数

Count(xj,yi):特征 xj 和类别 yi 在训练数据中同时出现的次数

Count(yi):类别 yi 总词数。

预测

给定 x,计算所有的p(yi|x),选择概率值最大的yi 作为输出。

评测

  1. 准确度 Accuracy:(C11+C22)/(C11+C12+C21+C22)

  2. 精确率Precision(y1):C11/(C11+C21)

  3. 召回率Recall(y1):C11/(C11+C12)

准确度只能从整体上评测分类器。

如果想知道某个分别上的分类精准情况,可以用精准率。

精准率:是分类器认为某一类中,实际是这一类的比例。

          召回率对于某些情况很重要。像垃圾邮件分类器。如果我们将一份正常邮件分成垃圾邮件,和将垃圾邮件分成正常邮件,哪个危害大?当然是将正常邮件分成垃圾邮件,因为一旦误分成垃圾邮件,客户就丢失这封邮件的信息,但是将垃圾邮件误分成正常邮件,只不过浪费客服几秒种,删除就行了。所以这是正常召回率就相当重要,我们要看有多少正常邮件被召回,我们尽量要让正常邮件的召回率为100%。

朴素贝叶斯分类特点

优点

  1. 简单有效

  2. 结果是概率(软性分类),对二值和多值同样适用。

  3. 数据量大、

  4. 需要快速,高效

  5. 可以分布式

缺点

  1. 独立性假设有时不合理。(如果需要不假设独立性,可以用最大熵分类)