机器学习——在训练数据中引入偏差

Posted

技术标签:

【中文标题】机器学习——在训练数据中引入偏差【英文标题】:Machine learning - introducing a bias in training data 【发布时间】:2016-03-10 01:51:59 【问题描述】:

我有用于训练的数据。当我将它输入到我的神经网络中时,我在该数据上得到了 3% 的错误。

我知道这些数据有一定的过度表现 - 例如,第 5 类的样本大约是其他类的十分之一。

我的作业表明我可以通过对训练数据进行偏差来提高检测率 - 即通过删除或复制某些数据。但是,在我看来,神经网络应该能够自动解释这一点,而我所做的任何修改都只会大大降低网络的准确性。

我特别困惑,因为我应该判断网络是否改进的方式是对照原始训练分区对其进行测试。在我看来,使用训练分区的修改版本进行训练总是会给你在原始训练分区上更差的检测率,但分配似乎表明并非如此。

由于这是家庭作业,我希望得到提示,而不是直接回答。

【问题讨论】:

您可能希望将此问题迁移到stats 如果数据中的类不具有相同的表示,那么“准确度”作为评估指标可能会很棘手。您可以查看“log loss”作为评估指标。您可以使用称为 n-fold cross-validation 的非常简单的方法来训练数据。并创建一个验证集。针对验证集进行测试,并选择您的超参数。这种方法不会阻碍您对普遍性的追求 @iratzhash 日志损失在类别不平衡方面与准确度具有完全相同的特征(因为这只是准确度 + 概率估计,没有任何类型的平衡)。此外,Daniel 不是在询问超参数选择,而是在询问改变训练过程的方法。 【参考方案1】:

在我看来,使用训练分区的修改版本进行训练总是会给你在原始训练分区上更差的检测率,但分配似乎表明并非如此。

简而言之,这不是真的。训练集可以帮助您最小化经验风险(试验集上的错误)。另一方面,您正在尝试最小化泛化风险(测试集上的错误),并且在这里 - 添加一些额外的偏差(以多种形式)实际上可能会有所帮助,因为它可以防止您过度拟合。特别是,在处理类的高度不平衡时,经验风险最小化可能会导致完全忽略少数(特别是在基于 SGD 的方法中,单次更新可能不足以摆脱更大类的更强吸引子),因此偏差(以某种方式)可能会改善整体分类。

【讨论】:

您对如何进行偏见有任何建议吗?我应该过多地代表人数不足的班级吗? 这取决于您的评估指标是什么。对于神经网络,“过度表示”实际上与简单地更改您在 SGD 期间使用的概率相同 - 只需让一个小类更有可能被选中。 “多少”没有确切的规则,除非您有一些非常具体的指标需要优化(例如 GMean/BAC)

以上是关于机器学习——在训练数据中引入偏差的主要内容,如果未能解决你的问题,请参考以下文章

机器学习中的偏差和方差

机器学习中的三种误差

机器学习实验方法与原理

机器学习基本概念

我对于机器学习中偏差和方差的理解

机器学习--偏差和方差