我一直在环顾四周,似乎无法找到这个问题的答案:
如果我训练朴素贝叶斯成为某些数据的分类器。然后我重新使用这个训练数据作为测试数据。我不应该获得 100% 的分类成功吗?谢谢阅读!

编辑:似乎我激发了超出我理解水平的讨论。因此,我不认为我应该承担“接受”答案的角色。但是,我很感谢您的意见,并会阅读所有答案。

最佳答案

实际上,尽管被接受了答案,@flyingmeatball 的答案在这种特殊情况下(至少部分)是错误的。它描述了相关现象,但显然不是所给情况的关键。

您所描述的是一种情况,您希望您的模型具有 100% 的训练准确率,但事实并非如此。这与“数据不能充分表达现象”无关 - 这对于高 泛化 错误是正确的,而不是 训练一个

小于 100% 的训练错误意味着,数据本身可能太嘈杂而无法建模(这在 flymeatball 建议),但实际上,对于训练集,情况是 当且仅当有两个完全相同的点具有不同的标签 .如果情况并非如此(并且可能不是),则实际的“问题”是您选择的模型具有一些内部 偏差 。简单来说 - 将其视为 对数据的假设 ,甚至是约束,即使数据明显不遵循 ,您的模型 也不会改变。特别地,朴素贝叶斯有两个这样的假设:

  • 特征是独立的,这意味着标签和当时多个特征之间没有相关性,没有重要的联系。如果你的特征是风和温度,朴素贝叶斯会假设它可以根据温度本身做出正确的决定,例如假设“良好的温度在 20 度左右”和风相同,例如“最多 10 公里/小时” .它将无法找到基于这两个值的关系,例如“温度 减去 风至少为 30 很重要”,或类似的
  • 它假设每个特征的值的特定分布 - 通常这是 MultiNomial 分布或高斯分布。这些是不错的发行版系列,但许多功能并未遵循它们。例如,如果您的特征是“人们在我的杂货店购买的时间”(假设您将其视为连续变量,精确地以几微秒为单位进行测量等),您会注意到,您有两个“高峰时段”早上和晚上,因此朴素贝叶斯将在拟合单个高斯时做一项糟糕的工作,而后者将在中午出现峰值!同样,错误的假设会导致错误的决定。

  • 那我们为什么要做这样的假设呢?嗯,有很多原因,但其中一个是 因为我们关心泛化而不是训练 ,因此它是一种以“欠拟合”训练集为代价防止我们的模型过度拟合的方法。这也有助于处理噪音,简化优化并制作许多其他精彩的东西:-)

    希望这可以帮助。

    关于machine-learning - 理解朴素贝叶斯,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37118156/

    10-12 21:09