当我们的经验无法适应新环境的时候该怎么办? Covariate Shift
2014-03-02 09:22
363 查看
前几天偶然看到 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
最为直观的解释就是当你的训练集的样本分布和测试集的样本分布不一致的时候,你训练得到的模型是无法有很好的泛化 (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
相关文章推荐
- 当在控制面板中无法卸载SharePoint的时候怎么办?
- 分享asp.net 网站部署一段时候后无法响应经验
- Thinkpad使用傲游浏览器的时候,无法滚动页面怎么办?
- excel导出的时候从程序后台写到excel里的是文本,所以无法在excel中计算怎么办?
- 使用viewpager或者fragmentActivity等一些v4包下的类,当我们按F3时无法查看到源码,这个时候就需要我们关联该源码,该源码的关联与android源码的关联不一样。
- 论try/catch的重要性,我们经常遇到代码出现无法调试的错误,程序退出的时候崩溃。这跟我们代码日常保护的习惯息息相关。
- 《SQL Server企业级平台管理实践》读书笔记——当我们的备份都已经损坏的时候该怎么办
- 《SQL Server企业级平台管理实践》读书笔记——当我们的备份都已经损坏的时候该怎么办
- (这也不是,那也不是,怎么办?)无论何时坚持自己的原则,当选准了目标,就不放弃,做最好的自己。我们必须要有一定的看法,正确的做法;有时,我们无法避免他人在旁的批评或劝告,但我们是无法取悦每个人的,否则将失去了方向,迷失了自己。
- 经验分享(十五)我们到底该怎么学技术?如何成为一个优秀的技术人员?
- 开发说你提交的bug 是非问题,这个时候我们怎么处理?
- 开机的时候mysql notifier报错无法启动怎么办?
- 迷茫时候我们怎么办
- 当oracle中出现了 ORA-12154 TNS 无法处理服务名的时候,该怎么办?
- Win8运行程序的时候总是提示内置管理员无法激活应用该怎么办?
- Win7双击快捷方式图标提示我们无法验证创建此文件的人员怎么办
- 当生活把我们打哭的时候,你怎么办?人生哲理
- 经验谈系列 我们应该怎么给父母配电脑
- 诸事不顺的时候我们该怎么办?
- python默认的是17位小数的精度,但是这里有一个问题,就是当我们的计算需要使用更高的精度(超过17位小数)的时候该怎么做呢?