在数据量不足的情况下,用那种数据挖掘模型效果会更好?

雷天琪

法国电信 机器学习实习生

巴黎综合理工学院(École Polytechnique)

知乎链接:http://www.zhihu.com/question/35649122/answer/64675192

我们在机器学习的案例中经常会陷入一种情况,即数据量不足,或者在维度过高的情况下,数据量相对不足。 如果是维度过高造成的数据量不足(维度灾难),我们可以用降维的方式来“缓解压力”,但是在某些情况下,即使降维之后,我们依然没有足够的数据。 比如一次调查中,我们只获得了几千份样本,那么,在数据量已经固定且很少的情况下,我们可以用什么方法,或者哪种模型来取得更好的预测性能?为什么?

我还是写一些自己的理解。

其实这里所说的数据量不足,可以换一种方式去理解:在维度高的情况下,数据相对少。

举一个特例,比如只有一维,和1万个数据,那么这种情况下,我们可以认为数据量其实是足够的,因为数据密度相对来说很高。

如果数据的维度有1000维,数据量仍然有1万,这种情况下,数据的密度就相当低了。 引用wiki里的两句话: - The common theme of these problems is that when the dimensionality increases, the volume of the space increases so fast that the available data become sparse. This sparsity is problematic for any method that requires statistical significance. In order to obtain a statistically sound and reliable result, the amount of data needed to support the result often grows exponentially with the dimensionality. - With a fixed number of training samples, the predictive power reduces as the dimensionality increases, and this is known as the Hughes effect or Hughes phenomenon

简单的翻译过来就是,当维度增加的时候,训练所需要的数据量需要成指数级别的增长才能满足要求。 维度很高,且数据量不足的情况下,训练模型仅仅是去“记忆”数据,而不是去“学习”数据。因为对于高维度来说,空间的自由度非常大,在数据量相对不高的情况下,其实每一个数据都可以看成是一个“特例”,这也是造成过拟合现象的原因。 但是,高维度的情况下也有一个好处:既然空间的自由度很高,那么数据就更可能线性可分,在维度高到一定程度的时候,我们就可以认为其线性可分的概率为1 (其实这个观点是缺少严谨的数学验证的,可以参考:如何证明无穷多维的情况下,数据一定线性可分? http://www.zhihu.com/question/35610783/answer/64040353)。 所以得出的结论是,在数据量不足的情况下(相对于高维度下的数据量不足问题),我们可以使用线性分类器来解决问题,因为其“更可能线性可分”,比如,使用SVM来分类数据量少的问题。 最近做的一个项目就遇到了这个问题,从上面的分析的基础上,可以看出线性分类器可以保证在数据量很少的情况下的性能,但是我的实际项目不能验证这一点。 :( 我的实际项目中,效果最好的还是随机森林(可以应对线性不可分的情况),而SVM和其他的一些模型并无明显差别,唯一显著的效果是,False Positive很少,不过这一点在某些情况下很重要。至于原因,现在只能理解为数据中有错误。

数据量少的时候应该选择怎样的模型,其实只能回答『That depends』,机器学习领域一大类papers都是关于如何在存在假设的数据中寻找一种合适的表示(『降维』或『升维』),以提高分类器、回归器的性能。 不如,举出几个具体问题,比如数据的形式(图像或者文本,是否有缺失),数据的规模(样本数和维度大小),数据中存在的结构信息(稀疏、低秩)。这样更容易回答。 维度非常高1000多维度,并且每个维度都很重要,数据量很少,是调查结果,只有近万份,数据是很稀疏的,基本上是连续值。在这种情况下,如何选择模型?为什么? 这其实还是一个比较一般的问题,我尽量从一个比较一般的角度回答,描述的也都是一些常用的简单的做法,假设要做的是一个分类问题,我描述一下我拿到这样一份数据的做法(流程),面对实际情况,我们总是一步一步来,先分析数据,尝试最简单的方案,再作调整。已知:1000维的feature,近10000的sample,而且数据是稀疏的。 首先,尝试一下常用的线性分类器,比如SVM、LR这些,看训练误差和测试误差的差异,这个时候可能出现多种情况。 (1) 如果训练误差远小于测试误差,说明分类器已经过拟合了,考虑如何避免过拟合。

(2) 如果训练误差与测试误差差不多,但是测试误差太大,说明模型复杂度很可能不够。

(3) 如果训练误差与测试误差差不多,而且测试误差已经足够小,结束。 针对(1),这个时候产生了严重的过拟合,这意味着样本数目不够,一般我们没法补充样本。那么就要考虑如何采用提高泛化能力,如果数据没有很特别的性质(稀疏、低秩等),我们可以考虑添加一些常用正则化项,比如L2-norm,还可以使用一些常用的降维方法(其实也就是常用的假设),比如PCA(假设方差小的数据分布方向是噪声产生的)、LDA。如果数据中有一些性质,比如题主提到feature是稀疏的,由于数据来自『调查结果』,所以很多时候不是数据稀疏,而是数据不完整(被调查的对象没有提供这部分数据,而不是它没有这部分属性),那么可以通过补全这些feature来降低缺失带来的影响,比如假设样本构成矩阵,每一列有一个样本组成,那么我们可以对进行低秩分解,比如,这样的一个列就代表了的一个列,与的乘积又补全了,此时,用作为训练样本可能得到更好的结果。再比如,数据中存在大量的污染,一些废的feature其实对label影响不大,那么我们可以考虑去除一些feature,降低参数空间,从而提高泛化性,简单的方法是给训练参数加稀疏正则项,比如常用的L1-norm(要是觉得不够系数还可以用capped L1-norm、Lp-norm、SCAD、MCP这些更加稀疏的正则化项),来过滤掉不重要的feature。总而言之,要依赖于数据的特点(除了上面提到的特性,也许还存在正负样本不平衡等性质),设计出减小过拟合程度的方案。 针对(2),可以采用更加复杂的模型,比如带隐变量的模型,比较典型的就是Neural Network,当然这不是唯一的选择,还有决策树以及ensemble类的方法GBDT、Random Forest等。 针对不同情况选择合适的模型之后,观察现在的训练误差和测试误差。回到第(1),(2),(3)步,继续考察新方案。针对具体的业务问题,关键在于迭代得更新方案(不断优化泛化性能),发现数据的新的特性,最终设计出合适于具体业务的模型。

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2016-04-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技评论

学界 | 如何用未标注样本解决单标注样本下的视频行人重识别问题?

本文作者为悉尼科技大学博士生武宇(Yu Wu),他根据 CVPR 2018 录用论文 Exploit the Unknown Gradually: One-Sh...

871
来自专栏大数据文摘

机器学习算法在自动驾驶汽车中扮演怎样的角色

1453
来自专栏IT派

一文助你解决数据不平衡的疑惑

导语:这几年来,机器学习和数据挖掘非常火热,它们逐渐为世界带来实际价值。与此同时,越来越多的机器学习算法从学术界走向工业界,而在这个过程中会有很多困难。数据不平...

3278
来自专栏人工智能头条

王晓刚:图像识别中的深度学习

2532
来自专栏CSDN技术头条

深度学习性能提升的诀窍

克服过拟合和提高泛化能力的20条技巧和诀窍 你是如何提升深度学习模型的效果? 这是我经常被问到的一个问题。 有时候也会换一种问法: 我该如何提高模型的准...

3578
来自专栏人工智能头条

逻辑回归 vs 决策树 vs 支持向量机(II)

1272
来自专栏CSDN技术头条

逻辑回归 vs 决策树 vs 支持向量机(II)

本文是该系列的第二篇,第一篇参见: 逻辑回归 Vs 决策树 Vs 支持向量机: Part I. 在这篇文章,我们将讨论如何在逻辑回归、决策树和SVM之间做出最佳...

1946
来自专栏AI科技评论

从模糊到清晰,AI对图片的识别越来越精准| Facebook CVPR2016最新论文

图像边缘的无监督学习 摘要 数据驱动方法在边缘检测领域已被证明是有效的,且在最近的基准测试中取得了顶尖的成绩。然而,目前所有数据驱动的边缘检测都要求以手工标注区...

35410
来自专栏专知

【干货】机器学习基础算法之随机森林

【导读】在当今深度学习如此火热的背景下,其他基础的机器学习算法显得黯然失色,但是我们不得不承认深度学习并不能完全取代其他机器学习算法,诸如随机森林之类的算法凭借...

3407
来自专栏机器之心

IJCAI 2018 | 阿里提出IncepText:全新多向场景文本检测模块

2764

扫码关注云+社区