1

我有一个寻找大写字母的朴素贝叶斯分类器(用 WEKA 实现)。

contains_A
contains_B
...
contains_Z

对于某个类别,LCD 一词几乎出现在训练数据的每个实例中。当我得到“LCD”属于该类的概率时,它类似于 0.988。赢。

当我得到“L”的概率时,我得到一个普通的 0,而对于“LC”,我得到 0.002。由于特征是幼稚的,L,C和D不应该独立地贡献整体概率,结果“L”有一些概率,“LC”更多,“LCD”更多吗?

同时,使用 MLP 进行相同的实验,而不是具有上述行为,它给出了 0.006、0.5 和 0.8 的百分比

所以 MLP 做了我期望朴素贝叶斯做的事情,反之亦然。我错过了什么,谁能解释这些结果?

4

3 回答 3

0

我不熟悉 WEKA 的内部结构 - 如果您认为我不正确,请纠正我。

当使用文本作为“特征”时,该文本将转换为二进制值向量。每个值对应一个具体的词。向量的长度等于字典的大小。

如果您的字典包含 4 个世界:LCD、VHS、HELLO、WORLD,那么例如文本 HELLO LCD 将转换为 [1,0,1,0]。

我不知道 WEKA 如何构建它的字典,但我认为它可能会遍历示例中出现的所有单词。除非字典中出现“L”(因此出现在示例中),否则它的概率在逻辑上为 0。实际上它甚至不应该被视为一个特征。

实际上,您无法对特征的概率进行推理-并且您不能将它们加在一起,我认为特征之间没有这种关系。

于 2013-01-23T16:45:21.647 回答
0

请注意,在文本挖掘中,如果您使用任何类型的术语加权和规范化,例如 tf.idf,单词(在您的情况下为字母)可能会被赋予与其实际计数不同的权重。例如,在 tf.idf 的情况下,字符计数被转换为对数刻度,出现在每个实例中的字符也可以使用 idf 归一化来惩罚。

我不确定您使用哪些选项将数据转换为 Weka 功能,但您可以在此处看到 Weka 具有要为此类加权和标准化选项设置的参数

http://weka.sourceforge.net/doc.dev/weka/filters/unsupervised/attribute/StringToWordVector.html

-T 将词频转换为 log(1+fij),其中 fij 是第 j 个文档(实例)中词 i 的频率。

-I 将每个词的频率转换为:fij*log(文档数/包含单词 i 的文档数) 其中 fij 如果单词 i 在第 j 个文档中的频率(实例)

于 2013-08-28T19:36:56.313 回答
0

我检查了weka文档,但没有看到支持将字母提取为特征。这意味着该weka函数可能需要一个空格或标点符号来将每个特征与相邻的特征分隔开。如果是这样,那么对“L”、“C”和“D”的搜索将被解释为三个单独的单字母词,并解释为什么找不到它们。

\n如果您认为是这样,您可以在摄取之前尝试将文本拆分为由 或 空格分隔的单个字符。

于 2014-07-11T00:19:00.650 回答