classification - 朴素贝叶斯分类器——多重决策

标签 classification knn naivebayes

我需要知道朴素贝叶斯分类器是否 可用于生成多个决策。我不能 找到任何有证据支持的例子 多项决定。我是这个领域的新手。所以,我有点 困惑。

其实我需要开发字符识别软件。 在那里我需要确定给定的字符是什么。 看来贝叶斯分类器可以用来识别 给定的字符是否是特定字符, 但不能给出任何其他建议。

例如,如果给定“3”的图像(我们认为它是“3”), 如果系统无法将其识别为“3”。如果看起来像 '2'为系统,系统应返回'2'。

我对朴素贝叶斯分类器的想法 是,一旦我们训练了数据,我们就可以问 系统给定字符是否为特定字符 或不。例如。我们画一个特定数字的图像并询问 系统是否为“2”。

我进一步注意到 KNN(k 最近邻)给出了多个决策。 给它一个字符,它决定一个最近的兼容 训练数据中给出的字符。

如果有人能解释一下是否 朴素贝叶斯分类器可用于制作多个 类似上述的决定。

最佳答案

朴素贝叶斯分类器的假设是数据维度是独立的(朴素部分)并且模型是生成的(贝叶斯部分)。换句话说,您对如何从世界状态生成数据进行建模 - P(data|world_state),其中 world_state 可以是连续变量或分类变量(具有多个类别)。这与忽略数据生成并通过直接“破解”数据来描述世界状态的后验概率的判别模型形成对比:P(world_state|data)

以下是实现朴素贝叶斯分类器必须遵循的步骤:
1. 使用生成模型(例如高斯分布)对数据建模。每个类(class)都有自己的高斯。在朴素模型中,您为每个数据维度取高斯的乘积。在更完整的模型中,高斯的维数等于数据的维数。
2. 计算出每个类别的先验(例如,一个分类分布,每个类别都分配了一个概率);
3. 通过对数据进行高斯拟合来学习参数;
4. 通过贝叶斯公式评估测试数据类:

P(class|data) = P(data|class) * P(class)/P(data);           [1]
P(data) = sum_over_classes[P(data|class) * P(class)];       [2]

公式 1 中的第一项称为后验,第二项是似然,最后一项是先验。当您计算后验 (MAP) 的最大值时,[2] 中显示的分母通常会被忽略,后者是负责数据生成的最可能类。但是,分母对于理解类模型如何协同工作非常重要。

例如,您可以为每个类创建一个非常复杂的生成模型,但由于在归一化过程中其中一个可能性被降低为 0,您的后验概率看起来非常简单。在这种情况下,最好放弃贝叶斯方法并创建一个具有比生成模型更少参数的判别模型。在下图中,纵轴是世界状态(类)的概率,而横轴代表数据。 enter image description here

关于classification - 朴素贝叶斯分类器——多重决策,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6953217/

相关文章:

machine-learning - 朴素贝叶斯模型

python - sklearn KNeighborsClassifier 评分方法如何工作?

r - 插入符号中 KNN 的自定义参数调整

nlp - Unigram 在语言识别方面比 Ngram 提供更好的结果

python - 垃圾邮件过滤器 - Python 新手

matlab - MATLAB 中的特征选择方法?

python - Tensorflow 估计器 : Cache bottlenecks

machine-learning - Scikit-learn 标签编码后进行一种热编码,从而为训练数据集和测试数据集产生不同的特征集。如何解决这个问题?

python - 用一些不在训练集中的词预测分类(朴素贝叶斯)

python - 如何根据sklearn中的预测概率对实例进行排名