我正在使用Swift (即使我的问题不是关于语言)和Python来测试我的ML逻辑。我有训练数据:
("add a new balloon", "add-balloon")
("add a balloon", "add-balloon")
("get last balloon", "get-balloon")
("update balloon color to red", "update-balloon")当我尝试使用朴素贝叶斯对新句子进行分类时,比如
classify("could you add a new balloon")
// Return add-balloon
classify("could you update the balloon color")
// Return add-balloon
classify("update the balloon color")
// Return add-balloon我的数据集有很多关于添加气球的观察结果(大约50个),但没有太多需要更新或获取的(大约5-6个)。朴素贝叶斯对训练观察的数量敏感吗?我不明白为什么即使给出一个在训练过程中看到的句子,分类效果也不是很好。
发布于 2017-03-15 01:37:49
朴素贝叶斯对类先验(示例在类中的分布)很敏感。因此,如果你有比其他类别多得多的add-balloon,它就会偏向这个类。这通常是有帮助的,因为假设你什么都不知道(没有后验信息),你最好的选择是尝试最有可能的类。
如果您的分布严重倾斜,您的数据集并不大,您的文档很短或缺少信息性很强的单词(或包含许多模棱两可的单词),但这可能会导致不希望看到的结果,比如您正在报告的内容。
发布于 2017-03-15 01:29:37
最初,朴素贝叶斯依赖于数据的大小,但如果我们继续添加更多,在达到一定水平后,它的性能会停滞不前,进一步增加训练数据并不会提高朴素贝叶斯分类器的性能。
但就您的情况而言,数据太小,模型无法准确了解“更新气球”并预测“添加气球”。尝试为数据较少的类添加更多示例,看看准确性是否提高。
如果你的数据被歪曲了,你对此无能为力,你可以尝试其他分类器或尝试一些技巧,如前面提到的here和here。
https://stackoverflow.com/questions/42791002
复制相似问题