我是靠谱客的博主 落后飞机,最近开发中收集的这篇文章主要介绍解决样本稀疏/稀缺问题的方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

0.样本稀疏

样本稀疏,指训练样本少。 此外,可能伴随特征过多的情形(维度灾难)。

方案总结:
在这里插入图片描述

1.数据层面

  • 数据增广

数据增广,就是尽可能产生更多的样本,比如,一张图像,通过裁剪、变换、翻转、加噪声,获得更多样本;

  • 合成数据
    比如,通过 GAN 生成数据等。

2.模型层面

数据量比较小会导致模型过拟合, 使得训练误差很小而测试误差特别大.

  • 模型正则化

通过在Loss Function 后面加上正则项可以抑制过拟合的产生. 缺点是引入了一个需要手动调整的hyper-parameter.

Dropout是一种神经网络正则化手段,通过随机将部分神经元的输出置零来实现.

  • k折交叉验证
    使用k折交叉验证训练模型,可以提供模型的精度,防止划分数据的随机性。

  • 集成弱学习器
    SVM能在数据量不足,且特征维度高的情况下,进行学习。但是,与神经网络比较,像SVM,GBDT这些弱学习群可能并不能达到理想的效果。对这些模型使用集成学习,提高模型精度。

  • 选择合适的模型

机器学习领域一大类papers都是关于如何在存在假设的数据中寻找一种合适的表示(『降维』或『升维』),以提高分类器、回归器的性能。

不同数据的形式(图像或者文本,是否有缺失),数据的规模(样本数和维度大小),数据中存在的结构信息(稀疏、低秩),选择的模型都应该不一样。

3.方法层面

3.1迁移学习

迁移其他数据进行模型学习,并根据任务微调模型。

4.示例

如何选择合适的模型:
维度非常高1000多维度,并且每个维度都很重要,数据量很少,是调查结果,只有近万份,数据是很稀疏的,基本上是连续值。在这种情况下,如何选择模型?为什么?

面对实际情况,一步一步来,先分析数据,尝试最简单的方案,再作调整。

首先,尝试一下常用的线性分类器,比如SVM、LR这些,看训练误差和测试误差的差异,这个时候可能出现多种情况。

(1) 如果训练误差远小于测试误差,说明分类器已经过拟合了,考虑如何避免过拟合。
(2) 如果训练误差与测试误差差不多,但是测试误差太大,说明模型复杂度很可能不够。
(3) 如果训练误差与测试误差差不多,而且测试误差已经足够小,结束。

针对(1),这个时候产生了严重的过拟合,这意味着样本数目不够,一般我们没法补充样本。那么就要考虑如何采用提高泛化能力,如果数据没有很特别的性质(稀疏、低秩等),可以考虑添加一些常用正则化项,比如 L2-norm,还可以使用一些常用的降维方法(其实也就是常用的假设),比如PCA(假设方差小的数据分布方向是噪声产生的)、LDA。

如果数据中有一些性质,比如提到feature是稀疏的,由于数据来自『调查结果』,所以很多时候不是数据稀疏,而是数据不完整(被调查的对象没有提供这部分数据,而不是它没有这部分属性),那么可以通过补全这些feature来降低缺失带来的影响,比如假设样本构成矩阵 X,每一列由一个样本组成,那么对X进行低秩分解,比如 X = D S X = DS X=DS, 这样的 S S S一个列就代表了X的一个列, D D D S S S的乘积又补全了 X X X,此时,用 S S S作为训练样本可能得到更好的结果。

再比如,数据中存在大量的污染,一些废的feature其实对label影响不大,那么我们可以考虑去除一些feature,降低参数空间,从而提高泛化性,简单的方法是给训练参数加稀疏正则项,比如常用的L1-norm(要是觉得不够系数还可以用capped L1-norm、Lp-norm、SCAD、MCP这些更加稀疏的正则化项),来过滤掉不重要的feature。总而言之,要依赖于数据的特点(除了上面提到的特性,也许还存在正负样本不平衡等性质),设计出减小过拟合程度的方案。

针对(2),可以采用更加复杂的模型,比如带隐变量的模型,比较典型的就是Neural Network,当然这不是唯一的选择,还有决策树以及ensemble类的方法GBDT、Random Forest等。针对不同情况选择合适的模型之后,观察现在的训练误差和测试误差。

回到第(1),(2),(3)步,继续考察新方案。针对具体的业务问题,关键在于迭代得更新方案(不断优化泛化性能),发现数据的新的特性,最终设计出合适于具体业务的模型。


最近开通了个公众号,主要分享python原理与应用,推荐系统,风控等算法相关的内容,感兴趣的伙伴可以关注下。
在这里插入图片描述
公众号相关的学习资料会上传到QQ群596506387,欢迎关注。


参考:

  1. 在数据量不足的情况下,用哪种数据挖掘模型效果会更好?
  2. 如何解决样本少特征多的机器学习问题?;
  3. Regularization的方法;
  4. Dropout 方法;
  5. 7tips for dealing with small data;
  6. small datasets in machine learning

最后

以上就是落后飞机为你收集整理的解决样本稀疏/稀缺问题的方法的全部内容,希望文章能够帮你解决解决样本稀疏/稀缺问题的方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部