机器学习如何应对数据量不足的情况

首选,尝试一下常用的线性分类器,比如SVM、LR这些,看训练误差和测试误差的差异,这个时候可能出现多种情况:
  1. 如果训练误差远小于测试误差,说明分类器已经过拟合了,考虑如何避免过拟合。
  2. 如果训练误差和测试误差差不多,但是测试误差太大,说明模型复杂度很可能不够。
  3. 如果训练误差和测试误差差不多,而且测试误差已经足够小,结束。
针对(1),这个时候产生了严重的过拟合,这意味着样本数目不够,一般我们没法补充样本。那么就要考虑如何采用提高泛化能力,如果数据没有很特别的性质(稀疏、低秩等),我们可以考虑添加一些常用正则化项,比如L2-norm,还可以使用一些常用的降维方法(其实也就是常用的假设),比如PCA(假设方差小的数据分布方向是噪声产生的)、LDA。再比如,数据中存在大量的污染,一些废的feature其实对label影响不大,那么我们可以考虑去除一些feature,降低参数空间,从而提高泛化性,简单的方法是给训练参数 加稀疏正则项,比如常用的L1-norm(要是觉得不够系数还可以用capped L1-norm、Lp-norm、SCAD、MCP这些更加稀疏的正则化项),来过滤掉不重要的feature。总而言之,要依赖于数据的特点(除了上面提到的特性,也许还存在正负样本不平衡等性质),设计出减小过拟合程度的方案。
针对(2),可以采用更加复杂的模型,比如带隐变量的模型,比较典型的就是Neural Network,当然这不是唯一的选择,还有决策树以及ensemble类的方法GBDT、Random Forest等。
针对不同情况选择合适的模型之后,观察现在的训练误差和测试误差。回到第(1),(2),(3)步,继续考察新方案。针对具体的业务问题,关键在于迭代得更新方案(不断优化泛化性能),发现数据的新的特性,最终设计出合适于具体业务的模型。

文章某些内容转自:
作者:li Eta
链接:https://www.zhihu.com/question/35649122/answer/63928216
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。












你可能感兴趣的:(机器学习如何应对数据量不足的情况)