【问题标题】:Model in Naive Bayes朴素贝叶斯模型
【发布时间】:2013-09-09 03:25:09
【问题描述】:
当我们使用决策树分类器训练一个训练集时,我们会得到一个树模型。并且这个模型可以转换为规则并且可以合并到java代码中。
现在如果我使用朴素贝叶斯训练训练集,模型是什么形式的?以及如何将模型合并到我的 java 代码中?
如果训练没有模型,那么朴素贝叶斯和惰性学习器(例如kNN)有什么区别?
提前致谢。
【问题讨论】:
标签:
machine-learning
artificial-intelligence
classification
naivebayes
【解决方案1】:
朴素贝叶斯将构建/估计生成训练样本的概率分布。
现在,给定所有输出类的概率分布,您获取一个测试样本,然后根据哪个类生成该样本的概率最高,将测试样本分配给该类。
简而言之,您获取测试样本并通过所有概率分布(每个类别一个)运行它并计算针对该特定分布生成此测试样本的概率。
【解决方案2】:
朴素贝叶斯构造条件概率估计P(f_1,...,f_n|C_j),其中f_i 是特征,C_j 是类,使用贝叶斯规则和先验估计 (P(C_j)) 和证据 (P(f_i)) 可以翻译成x=P(C_j|f_1,...,f_n),大致可以理解为“给定功能f_i我认为,他们描述类C_j的对象,我确定是x”。事实上,NB 假设活动是独立的,所以它实际上使用了x=P(f_i|C_j) 形式的简单概率,所以“给定 f_i 我认为它是概率 x 的 C_j”。
所以模型的形式是一组概率:
- 每个特征
f_i 和每个类C_j 的条件概率P(f_i|C_j)
- 每个班级的先验
P(C_j)
另一方面,KNN 则完全不同。它实际上不是严格意义上的“学习模型”,因为您不调整任何参数。它是一种分类算法,给定训练集和编号k 只需回答问题“对于给定点x,训练集中k 最近点的主要 类是什么? ”。
主要区别在于输入数据 - 朴素贝叶斯适用于“观察”对象,因此您只需要分类对象中存在或不存在的一些特征。无论是颜色、照片上的对象、句子中的单词还是高度复杂的拓扑对象中的抽象概念,都没有关系。而 KNN 是一个基于距离的分类器,它要求您对可以测量之间距离的对象进行分类。因此,为了对抽象对象进行分类,您必须首先提出一些度量、距离度量,它描述了它们的相似性,结果将高度依赖于这些定义。另一方面,朴素贝叶斯是一个简单的概率模型,根本不使用距离的概念。它以相同的方式处理所有对象 - 它们存在或不存在,故事结束(当然它可以推广到具有给定密度函数的连续变量,但这不是重点)。