美文网首页
训练数据少但特征过多的办法

训练数据少但特征过多的办法

作者: Lornatang | 来源:发表于2018-08-16 13:58 被阅读227次

    1. 人工增加训练集的大小. 通过平移, 翻转, 加噪声等方法从已有数据中创造出一批”新”的数据.
    1. Regularization. 数据量比较小会导致模型过拟合, 使得训练误差很小而测试误差特别大. 通过在Loss Function 后面加上正则项可以抑制过拟合的产生. 缺点是引入了一个需要手动调整的hyper-parameter. 详见
    1. Dropout. 这也是一种正则化手段. 不过跟以上不同的是它通过随机将部分神经元的输出置零来实现. =
    1. Unsupervised Pre-training. 用Auto-Encoder或者RBM的卷积形式,一层一层地做无监督预训练,最后加上分类层做有监督的Fine-Tuning.

数据量少的时候应该选择怎样的模型,其实只能回答『That depends』,机器学习领域一大类papers都是关于如何在存在假设的数据中寻找一种合适的表示(『降维』或『升维』),以提高分类器、回归器的性能。
不如,题主举出几个具体问题,比如数据的形式(图像或者文本,是否有缺失),数据的规模(样本数和维度大小),数据中存在的结构信息(稀疏、低秩)。这样更容易回答。

一个case,如下:维度非常高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)步,继续考察新方案。针对具体的业务问题,关键在于迭代得更新方案(不断优化泛化性能),发现数据的新的特性,最终设计出合适于具体业务的模型。

Scikit-learn

摘自知乎

相关文章

  • 训练数据少但特征过多的办法

    一 人工增加训练集的大小. 通过平移, 翻转, 加噪声等方法从已有数据中创造出一批”新”的数据. Regulari...

  • 14-过拟合和欠拟合

    过拟合和欠拟合的概念 欠拟合的原因:学习到数据的特征过少解决办法:增加数据的特征数量 过拟合的原因:原始特征过多,...

  • 特征筛选工具

    做模型时常常是特征越多模型准确率越高(至少在训练集上)。但过多的特征又增加了数据收集、处理、存储的工作量,以及模型...

  • 特征工程(三)降维及python实现

    当特征选择完成后,我们面临的问题就是有可能特征过多导致的计算量过大或者训练时间过长的问题。因此,对特征数据进行降维...

  • 机器学习算法——决策树3(信息增益和ID3算法)

    信息增益 信息增益 算法思想 信息增益的算法过程为: 出入:训练数据集D和特征A 输出:特征A对训练数据集D的信息...

  • 机器学习笔记(一)之综述

    一、分类 监督学习(关注对事物未知表现的预测,一般为训练数据(特征与结果)和测试数据(只包括特征,需要根据训练数据...

  • 多变量线性回归

    图中是包含多个房屋特征的训练数据,我们用 表示特征个数, 表示第 个 训练样本, 表示第 个训练样本的第 ...

  • 从MLP到SVM

    任务简报 目标:把全连接层的特征保存下来,然后训练SVM分类器第一步:提取训练数据和验证数据的特征第二步:训练SV...

  • 模型表示(Model representation)

    监督学习:回归、分类问题;数据集(训练集) m:训练样本的数目;x:特征向量(输入的特征);y:输...

  • 李航统计学习--第三章 K临近(KNN)

    通过多数表决等方式进行预测,不具有显式的学习过程。实际是利用训练数据集对特征向量空间进行划分,将其作为分类“模型”...

网友评论

      本文标题:训练数据少但特征过多的办法

      本文链接:https://www.haomeiwen.com/subject/ikanbftx.html