目前大多数机器学习库中的损失函数都带有一个权重参数,这使得我们能够处理不平衡的数据集。然而,我们是否应该积极利用这一功能呢?如果不应该使用,有没有某些指导原则来决定何时使用它(例如,如果数据集在某种程度上是倾斜的)?如果模型足够复杂(由于缺乏更好的词汇,我明白复杂性并不等同于性能),它最终会学会预测那些罕见的情况吗?
我提出这个问题是因为我在训练一个使用不平衡数据集(但不是极端不平衡)的模型,然而我根据数据集中每个类别的比例,相当随意地调整了损失函数中的权重。
回答:
如果你确定你的模型需要泛化的现实世界数据同样是不平衡的,你可以使用加权版本的损失函数。否则,你就是在系统中引入了人为的偏见。
使用权重的决定不能仅仅基于训练、验证或测试期间的模型性能,而必须基于对数据集及其构建方式的仔细审查来做出。
一个明显的例子是CT扫描中的肿瘤检测,其中背景和前景的比例通常为20:1,使用权重可能会有所帮助。