会不会来自数据本身?还是因为模型无法有效检测数据之间的相似性,还是有其他原因导致误分类?
是什么让分类器对数据进行错误分类?
机器算法验证
分类
监督学习
2022-03-20 02:12:45
2个回答
假设您在谈论训练数据的错误分类,即难以最小化训练数据集的损失,不涉及测试数据过度拟合问题。
你是对的,在大多数情况下,错误分类可能来自“模型太简单”或“数据太嘈杂”。我想举两个例子来进一步说明。
该模型“过于简单”,无法捕捉“数据中的模式”。
示例如左图所示。假设我们想用一个逻辑回归/一条线来分离两个类,但是这两个类不是线性可分的。
在这种情况下,仍然存在“数据中的显着模式”,如果我们改变模型,我们可能会变得更好。例如,如果我们使用 KNN 分类器,而不是逻辑回归,我们可以获得非常好的性能。
数据噪声太大,很难做分类任务。
- 示例如右图所示,其中,如果您检查代码,您会看到两个类非常相似(两个类是 2D Gaussian,均值是,但每个类的标准差是)。这本质上是一项非常具有挑战性的任务。
请注意,这两个示例是微不足道的,因为我们可以可视化数据和分类器。在现实世界中,当我们拥有数百万个数据点和超级复杂的分类器时,情况并非如此。
代码:
library(mlbench)
set.seed(0)
par(mfrow=c(1,2))
d=mlbench.spirals(500)
plot(d)
lg_fit=glm(d$classes~d$x[,1]+d$x[,2]-1,family=binomial())
abline(0,-lg_fit$coefficients[1]/lg_fit$coefficients[2])
d2=mlbench.2dnormals(500,r=0.01)
plot(d2)
除了@hxd1011 (+1)。
- 相对术语或绝对术语的类别不平衡。在这两种情况下,我们都建立了对感兴趣类别的不充分表示。通常后者更难克服。(示例参考:He 和 Garcia从不平衡数据中学习)
- 分类标准不当。我们使用不适当的评估函数和/或使用不适当的标准来训练我们的分类器来得出我们的最终解决方案。使用“罐装解决方案”时非常常见的问题。(示例参考:Harrell的分类准确性和其他不连续不正确的准确性评分规则造成的损坏)
- 现实中没有阶级。我们希望那里有东西,但实际上什么都没有。通常,领域专业知识会引导人们远离这一点,但作为新手,这始终是一个问题。(示例参考:我们的日常生活。出版偏见可能也是这里的一个问题......)
- 过拟合。我们有一个像样的模型和一个像样的数据集,但我们未能训练适当的构建一个不切实际的模型。通常这与第 2 点有关。(欠拟合的额外分数!)(示例参考:霍金斯的过拟合问题)
- 概念漂移。事情发生了变化,我们不会再培训。我们的分类器在我们的“圣诞销售”营销样本中表现出色——是的,在 7 月使用这个模型可能会很痛苦……(示例参考:Gama 等人的概念漂移适应调查。)
- 数据泄漏/魔术功能。我们根据预测时无法获得的信息进行训练。具有事件/时间序列(如数据)时很常见。(示例参考:数据挖掘中的泄漏:Kaufman 等人的公式化、检测和避免。)