如何处理测试集和训练集的分布之间的差异?


23

我认为机器学习或参数估计的一个基本假设是,看不见的数据来自与训练集相同的分布。但是,在某些实际情况下,测试集的分布几乎与训练集不同。

说一个大规模的多分类问题,试图将产品描述分类为大约17,000个类别。训练集将具有高度偏斜的上课先验,因此某些班级可能有很多训练示例,但有些班级可能只有几个。假设我们从客户端获得了带有未知类标签的测试集。我们尝试使用在训练集上训练的分类器,将测试集中的每个产品分类为17,000个类别之一。测试集可能具有偏斜的班级分布,但可能与培训集的分布有很大差异,因为它们可能与不同的业务领域相关。如果两个类别的分布非常不同,则训练有素的分类器可能无法在测试集中很好地工作。对于朴素贝叶斯分类器,这似乎尤其明显。

是否有任何原则上的方法来处理概率分类器的训练集和特定给定测试集之间的差异?我听说“转换式SVM”在SVM中做类似的事情。是否有类似的技术来学习在特定给定测试集上表现最佳的分类器?然后,我们可以针对此给定的测试集重新训练分类器,如本实际方案中所允许的那样。

Answers:


17

如果差异仅在于训练和测试集中的相对班级频率,那么我将推荐本文介绍的EM程序:

Marco Saerens,Patrice Latinne,Christine Decaestecker:将分类器的输出调整为新的先验概率:一个简单的过程。神经计算14(1):21-41(2002)(www

我自己使用它,发现它工作得很好(不过,您需要一个分类器,该分类器可输出类成员身份的概率)。

如果每个班级中模式的分布发生变化,则该问题称为“协变量偏移”,Sugiyama和Kawanabe的著作非常出色。该小组的许多论文都可以在线获得,但是如果您可以得到本书的副本,我强烈建议您阅读本书。基本思想是根据训练集和测试集(不需要标签)之间的密度差异对训练数据进行加权。一种获得权重的简单方法是使用逻辑回归来预测是从训练集中还是从测试集中绘制模式。困难的部分在于选择要应用的权重。

另见亚历克斯·斯莫拉岛漂亮的博客文章在这里


非常感谢您提供了许多有用的指示!
Fashandge,2012年

没问题,这种“非标准”情况真的很有趣,协变量移位是一个特别有用的研究领域。
迪克兰有袋博物馆,2012年

1
很高兴知道。尽管是“非标准”的,但在实践中是现实的。
Fashandge

1

我找到了有关域适应的出色教程,该教程可能有助于更详细地解释这一点:http : //sifaka.cs.uiuc.edu/jiang4/domain_adaptation/survey/da_survey.html 在此未提及的一种解决方案是基于在ADABOOST上。这是原始文章的链接:http : //ftp.cse.ust.hk/~qyang/Docs/2007/tradaboost.pdf 基本思想是使用一些新的测试数据来更新火车数据的学习本文是关于转移学习的冰山一角-在这里您将从一项任务中学到的知识应用于另一项任务。


1
您能否包括第一个教程中的一些关键摘要,特别是在链接失效或位置更改的情况下?我们这里的“链接腐烂”存在问题,其中一些较旧的答案的价值由于链接停止工作而降低了,因此,如果答案尽可能自成体系,那就太好了
Silverfish

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.