【问题标题】:Which WEKA Classifier for probability?哪个WEKA分类器用于概率?
【发布时间】:2023-03-29 14:57:01
【问题描述】:

我有以下问题: 我有一个数据集(arff),其中存储了:字符、键保持时间、用户。 所以有了这些信息,我必须计算一个人在键盘上打字的概率。

如果有人在键盘上打字,将提取与上述相同的信息(用户、键保持时间、用户),并将与 arff 文件“比较”。结果应如下所示:我在 arff 文件中有一个用户“John”的数据集。之后,一个用户输入他的用户名“John”并写了一个文本。结果应该是用户“Johns”打字与存储在arff中的“John”数据集等价的概率。 对 90% 的人来说,这是对的人,对 90% 的人来说是约翰。

我希望,我可以解释我的问题。我的问题是,在这种情况下我应该采用哪个分类器?我是用 IBK 做的,但如果我有 15 个人,概率将除以 15,我得到的概率很小。 概率取决于 arff 中存储的人数。或者我应该将结果乘以人数以获得真实概率?

【问题讨论】:

  • 当用户输入“John”时,您希望他是 John 还是不是 John 的概率,还是要找到与他最相似的用户?
  • 我的意思是,你的分类器应该回答的问题是“他说他是约翰。他说的是真话吗?”或“他说他是约翰,但他到底是谁?”
  • 这正是我的问题。所有这些都是有帮助的,但在我的情况下,这将是不够的:他是约翰的概率与不是约翰的概率。 (当易于实现时找到他最相似的用户)。答案应该是这样的,确切地说,他说他是约翰,但他说的是真话吗?”。

标签: java classification weka probability


【解决方案1】:

注意:所有分布概率之和必须为 1。

当你有更多的类时,你得到“小概率”在某种程度上是正确的,但这并不是因为它除以类的数量,所以你不会找到你想要的概率将结果与类数相乘: 这不再是概率(它很容易变成 >1)。


您使用 IBk 获得的概率分布与您想要的不同:它告诉您在存储的用户之间,哪一个与当前用户更相似(成为 John、成为 Paul 和成为 Sarah 的概率等),与他所说的名字无关。


您想要的输出是二元分类器的结果,但您需要为存储的每个用户训练一个分类器。

每个分类器的训练集将与您已有的数据集相似,但(以 John 为例)将有 isJohn 而不是 user,并且这个新列将包含 true if @ 987654324@ 是 John,false 否则。

编辑

    character, key holdtime,    user
           90,        150ms,    John
           70,        120ms,   Sarah
          100,        110ms,    Paul

会变成

character, key holdtime,  isJohn
       90,        150ms,    true
       70,        120ms,   false
      100,        110ms,   false

这个分类器的输出分布是is John vs is not John

要获得所需的准确输出,您必须为每个存储的用户训练一个分类器,并根据当前用户所说的名称调用正确的分类器。


关于使用哪个分类器,我认为没有办法知道哪个分类器最适合您的情况。我通常会尝试一些分类器并选择最好的一个

【讨论】:

  • 感谢您的回答。此外,我必须为每个用户制作一个训练集,例如:john.arff、sarah.arff ... 我不明白“是约翰”还是“不是约翰”是什么意思?另外我将有 4 列,char,hold,is john,is not john?或者它现在看起来像 *.arff 吗?这对我来说没有意义,因为我总是写(例如:90、150 毫秒、约翰)这意味着约翰在 150 毫秒内键入了 90 键。我应该为每个用户制作一个 .arff 然后计算这个用户的概率吗?对于用户 John,取 john.arff 并查看该用户的概率是多少?对吗?
  • 我编辑了我的答案以澄清我对 isJohn 的意思。是的,您应该为每个用户创建一个 .arff(和不同的分类器),然后对于用户 John,您采用 john 模型并查看他的概率是多少
  • 当然,您可以在同一个 arff 中包含每个用户的二进制列:character, key holdtime, isJohn, isSarah,...\n 90, 150ms, true, false \n 70, 120ms, false, true \n 100, 110ms, false, false,然后忽略您不使用的列(对于 John 的分类器,您忽略 isSarah 等)
  • 好的,现在我明白你的意思了。非常感谢您的回答和帮助!我会在家里试试,真的很有意义。谢谢!
猜你喜欢
  • 2014-11-18
  • 2018-10-10
  • 2015-06-25
  • 2022-06-11
  • 2017-03-27
  • 2023-03-12
  • 2015-08-16
  • 2018-09-13
  • 1970-01-01
相关资源
最近更新 更多