当我们的经验无法适应新环境的时候该怎么办? Covariate Shift

前几天偶然看到 Alex Smola (CMU ML Prof) 的一篇 " Real simple covariate shift correction" 博文,论述在机器学习领域一个非常容易被忽略的问题, “Covariate Shift”。

最为直观的解释就是当你的训练集的样本分布和测试集的样本分布不一致的时候,你训练得到的模型是无法有很好的泛化 (Generalization) 能力的。假想你要为一种癌症疾病建立一个分类器,然后你收集了很多病人的材料,然后到学校里面鼓励学生贡献自己的血样作为自己的健康样本。好的,然后开始设计算法训练得到了一个预测准确率非常高的分类模型。但是注意,收集到的样本无法覆盖生活中不同人群,比如学生一般处于10-30岁之间,无酒鬼。为了测试训练得到的分类模型正真的效果,你将模型应用于医院的辅助医疗当中,你会发现到医院来看病的人群和你样本的人群完全不一样,这个就是训练样本的分布和目标样本的分布不一样的很好例子。这种现象在统计学里面也被称作 "Covariate Shift" 。 在ML领域也有很多人讨论这个问题,解决的思路就是要根据训练样本分布和目标样本分布的比例 ( P(x)/Q(x) ) 对训练样本做一个矫正。这里有两篇博文,分别来自 Bigml 和 Smola,Smola从更为理论的角度提供了一种如何利用 Logistics 模型预测  P(x)/Q(x) ,而 Bigml 提供的解决方案则更为直观一些,也提供了数据集,评价指标, Bash 代码。



References:

Real simple covariate shift correction

A Simple Machine Learning Method to Detect Covariate Shift - BigML


你可能感兴趣的:(算法,数据挖掘,机器学习,shift,统计学,Covariate)