Naive Bayes、KNN、Softmax分类器的比较研究(附代码地址)
来源:互联网 发布:javascript 执行顺序 编辑:程序博客网 时间:2024/06/06 02:42
1. 算法介绍
1.1 Naïve Bayes
朴素贝叶斯分类器主要基于贝叶斯公式:
P(c|x)=P(c)*p(x|c)/p(x) (1)
其中P(c)是类”先验”概率;P(x|c)是样本x相对于类标记c的类条件概率;P(x)是用于归一化的”证据”因子。对给定样本x,证据因子P(x)与类标记无关,因此估计P(c|x)的问题就转化为如何基于训练数据D来估计先验P(c)和条件概率P(x|c)。朴素贝叶斯分类器采用了”属性条件独立性假设”:对已知类别,假设所有属性相互独立,换言之,假设每个特征属性独立地对分类结果发生影响。
基于”属性条件独立性假设”,上述公式可重写为:
P(c|x)=P(c)P(x|c)/P(x)=P(c)/P(x)*mult{P(xi|c)} (2)
其中1<=i<=d,d为特征属性个数,xi为x在第i个属性上的取值。
1.2 KNN
K近邻(k-NearestNeighbor,简称KNN)学习是一种常用的监督学习方法,其工作机制非常简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个”邻居”的信息进行预测。通常,在分类任务中可使用”投票法”,即选择这k个样本中出现最多的类别标记作为预测结果;在回归任务中可以使用”平均法”,即将这k个样本的实值输出标记的平均值作为预测结果;还可基于距离远近进行加权平均或加权投票,距离越近的样本权重越大。
1.3 Softmax
Softmax分类器又称多元逻辑回归,是逻辑回归的扩展,众所周知逻辑回归仅二值分类不可对多值分类,为解决此问题,诞生了softmax分类器。
Logisticregression中:
P(y=1|x)=exp(wx+b)/(1+exp(wx+b)) (3)
P(y=0|x)=1/(1+exp(wx+b)) (4)
Softmax中:
P(yi=c|xi;w)=exp(wxi+b)/sum{exp(wxi+b)} (5)
2. 实验分析
通过使用UCI数据集中的iris和wine对以上三种分类模型进行实验对比,使用的评价指标为准确率。
表1三种分类模型分类结果
data
iris
wine
Softmax
97.53%
68.89%
KNN
90.24%
62.22%
Baive Bayes
90.12%
60%
通过实验结果可以看出softmax相对于其他两种分类器效果更好,通过KNN与Naïve Bayes对比,发现尽管KNN算法相对简单,但效果还不错。
代码地址:
https://github.com/Emmitte/ClassificationModel
http://download.csdn.net/detail/u013473512/9684562
- Naive Bayes、KNN、Softmax分类器的比较研究(附代码地址)
- matlab中的分类器使用小结(SVM、KNN、RF、AdaBoost、Naive Bayes、DAC)
- 朴素贝叶斯分类器(Naive Bayes)
- Naive Bayes分类器详解
- 朴素贝叶斯分类器的应用 Naive Bayes classifier
- 朴素贝叶斯分类器(Naive Bayes Classifiers)
- 基于naive bayes的文本分类算法
- 基于naive bayes的文本分类算法
- 朴素贝叶斯分类器 Naive Bayes Classifier
- 分类:朴素贝叶斯(Naive Bayes)
- Python 朴素贝叶斯(Naive Bayes)分类
- Naive Bayes分类示例
- 分类器模型1:朴素贝叶斯分类器 Naive Bayes(转载)
- 文本分类—Naive Bayes
- 数据菜鸟的挖掘之旅(一)分类简介+Naive Bayes
- Spark MLlib实现的中文文本分类–Naive Bayes
- Spark MLlib实现的中文文本分类–Naive Bayes
- Spark MLlib实现的中文文本分类–Naive Bayes
- java 递归的理解
- Shark Machine Learning Library 安装配置运行
- 提醒System Error的解决方法(个人笔记)
- Android PKMS深入分析安装应用
- mysql批量插入定时器
- Naive Bayes、KNN、Softmax分类器的比较研究(附代码地址)
- 大数据征信如何为一个人建立数据肖像?
- arm linux 调试记录
- H5选择器
- 【.Net码农】【PropertyInfo】C# list导出Excel
- [LeetCode]Same Tree
- AOJ.592 神奇的叶子
- Linux开发工具之工程管理器make
- B-树的操作总结