分类算法之——KNN朴素贝叶斯

Posted 小小新说数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分类算法之——KNN朴素贝叶斯相关的知识,希望对你有一定的参考价值。

 分类问题属于机器学习中的监督学习方法,它主要解决的问题是:被告知数据集的标签之后,将数据集中的样本与标签进行匹配从而训练出一个函数,当新的数据到来时,可根据学到的函数对新数据进行分类。接下来将介绍两种常见的分类方法。







01



KNN



      KNN算法也叫K—最近邻算法,其基本思想是:若某样本在特征空间中与其相邻的k个样本大多数属于某一个类别,则该样本也属于这个类别,与“近朱者赤,近墨者黑”一个道理。如图1所示,与待测样本距离最近的6各点中,类别为1的最多,将待测样本的类别标为1.显而易见,KNN中所选择的邻居都是已经正确分类的样本。

图1:KNN算法示例图

KNN的基本步骤如下:

1:计算待分类样本与各训练集数据之间的距离

2:对距离进行排序

3:选取距离最小的k个样本

4:计算k个样本的类别出现的频率

5:将k个样本中出现频率最高的类别作为待测样本的类别


那么问题来了,怎么确定k的值和怎么计算各样本之间的距离呢?


k的值:交叉验证法,从K=1开始,逐个计算预测准确率,取准确率最高时的K值。K值一般低于训练样本数的平方根。


各样本之间的距离:可由距离计算方式和相似性度量方式计算出,以下介绍几种常见的相似性度量方法:

设有向量:

                                       分类算法之——KNN、朴素贝叶斯

                                       分类算法之——KNN、朴素贝叶斯

则它们距离的计算方式:

  1. L1范式(曼哈顿距离)

                                    分类算法之——KNN、朴素贝叶斯

  2. L2范式(欧式距离)

                                  分类算法之——KNN、朴素贝叶斯

  3. 切比雪夫距离

                              分类算法之——KNN、朴素贝叶斯

以上距离方法值越小,越相似。
接下来介绍相似性度量方法:

  1. 皮尔逊相关系数

    即相关分析中的相关系数r,分别对X和Y基于自身总体标准化后计算空间向量的余弦夹角。

                            分类算法之——KNN、朴素贝叶斯

  2. 向量空间余弦夹角相似度

                            分类算法之——KNN、朴素贝叶斯

  3. Jaccard相似度

                               分类算法之——KNN、朴素贝叶斯

KNN算法优点:

1. 简单,无需训练,无需参数估计;

2. 适合对稀有事件进行分类;

3. 对多分类问题结果更好,比SVM要好些。

KNN算法缺点:

1. 对测试样本分类需全遍历,计算量大;

2. 当正负样本不平衡时,如一个类的样本量很大,而其他类样本量很小时,待测样本K个邻居中大样本量的类别中的样本占多数,导致分类错误。





02





朴素贝叶斯



朴素贝叶斯算法以贝叶斯定理为基础,而“朴素”是因为该算法以各特征之间相互独立为前提。其分类的基本思想是对于待分类的数据,求出该数据属于某类别的概率,以最大概率对应的类别作为它的标签。

贝叶斯公式:

                                       

转换为问题中的场景:

   

我们只需要根据上面的公式算出p(类别|特征)就可以了。


以下为朴素贝叶斯算法过程:

1):对于待分类x={a1,a2,...an}其中a为x的属性

2):有类别集合c = (c1,c2,....,cm)

3):计算p(c1|x).....p(cm|x),并取其中最大值确定x的类别


在步骤3中,每一个p(ci|x),p(ci|x)=  p(x|ci)p(ci)/p(x) 在集合中p(x)都是确定的,因此我们只需要关注分子就可以了。由于每个特征是相互独立的,p(x|ci)p(ci) = p(a1|ci)p(a2|ci)...p(an|ci)*p(ci) 其中p(ci)可由训练集中类别ci出现的概率确定。


那么p(a1|ci)怎么求出呢?这需要根据x的分布来确定,常见的贝叶斯模型的分布有:


高斯分布型用于classification问题,假定属性/特征服从正态分布的。

多项式型:用于离散值模型里。比如文本分类问题里面我们提到过,我们不光看词语是否在文本中出现,也得看出现次数。如果总词数为n,出现词数为m的话,有点像掷骰子n次出现m次这个词的场景。

伯努利型:最后得到的特征只有0(没出现)和1(出现过)。

最后,总结朴素贝叶斯的优缺点如下:

优点:
  (1) 算法逻辑简单,易于实现(算法思路很简单,只要使用贝叶斯公式转化即可!
(2)分类过程中时空开销小(假设特征相互独立,只会涉及到二维存储

缺点:
      朴素贝叶斯假设属性之间相互独立,这种假设在实际过程中往往是不成立的。在属性之间相关性越大,分类误差也就越大。








以上是关于分类算法之——KNN朴素贝叶斯的主要内容,如果未能解决你的问题,请参考以下文章

朴素贝叶斯

概率 kNN 和朴素贝叶斯之间的区别

阿旭机器学习实战33中文文本分类之情感分析--朴素贝叶斯KNN逻辑回归

数据挖掘十大经典算法之朴素贝叶斯

基于贝叶斯定理的算法——朴素贝叶斯分类

SparkMLib分类算法之朴素贝叶斯分类