2011-08-05 131 views
3

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

其实我需要开发字符识别软件。 在那里,我需要确定给定的字符是什么。 看来贝叶斯分类器可以用来识别 是否给出的字符是特定字符, 但它不能给出任何其他建议。例如,如果给出'3'的图像(我们认为它是'3'),则如果系统不能将其识别为'3',则为 。如果系统看起来像 '2',则系统应该返回'2'。

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

我还注意到KNN(k近邻)给出了多重决定。 赋予该字符的一个字符,它决定训练数据中给出的最接近的兼容 字符。

非常感谢,如果有人能解释我是否 朴素贝叶斯分类器可以用来作出多个 决定,如上述。

回答

2

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

下面是您必须遵循的步骤来实现朴素贝叶斯分类器:
1.使用生成模型(例如高斯分布)为您的数据建模。每个类都有自己的高斯。在幼稚模型中,您可以为每个数据维度使用高斯的产品。在更完整的模型中,高斯的维数等于数据的维数。
2.找出每个类的先验词(例如,分配给每个类的单一概率的分类分布);
3.通过将Gaussians拟合到您的数据来学习参数;
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

1

贝叶斯分类器应该给出一个项目属于几个类别的概率。绝对有可能有两个以上的课程。

有了这些类的概率,您通常需要做出决定,例如可以通过选择最可能的类来做出决定。这可能就是为什么你认为它只提供一种可能性。

+0

谢谢@Michael。这有助于我了解如何使用它。我必须进一步研究细节才能使用它。 – chandimak