摘要: 本文讲解一些关于机器学习数据集的小技巧, 分享个人经验, 可供读者参考.
对于深度学习而言, 合适的数据集以及合适的模型结构显得至关重要. 选择错误的数据集或者错误的模型结构可能导致得到一个性能不佳的网络模型, 甚至可能得到的是一个不收敛的网络模型. 这个问题无法通过分析数据得到很好的解决, 只能是通过一次次的制作数据集, 搭建模型并进行仿真实验才能发现如何最好地利用数据集以及选取什么样的模型结构.
本文讲解一些有关于数据集的实用知识, 通过本文你将了解以下三点:
1, 探索可能的模型框架;
2, 开发一套 "视图" 对输入数据进行系统测试;
3, 特征选择, 特征工程和数据准备中的想法可以对问题产生更多的观点;
1. 问题框架
用多种方法建模预测问题.
问题的框架是指:
输入
输出
问题的类型
比如
可以使用更多或更少的数据作为模型的输入吗?
可以预测其它的东西吗?
能把问题转换为回归 / 分类 / 序列等问题吗?
越有创造力, 思考得就越全面. 在这个过程中, 可以借鉴一些其它项目, 论文和领域中的想法, 或者是展开头脑风暴等. 在之前的博客如何定义你的机器学习问题中, 我总结了一些框架, 可供读者参考.
2. 收集更多的数据
数据越多越好, 只要是与预测结果相关的数据都是可以的. 因为对于某个具体任务而言, 不清楚多少数据量才算合适. 数据是开发模型期间使用的货币!
数据一般花费在以下任务上:
模型训练;
模型评价;
模型调优;
模型验证;
此外, 对于一个新项目而言, 没有实际经验可供参考, 一切都得自己摸索, 这个时候就得将数据收集齐全, 以便后续足够实验阶段使用.
3. 研究数据
将能够想到数据都可视化, 从各个角度来看收集的数据.
查看原始数据会有所帮助;
查看汇总统计会有所帮助;
数据可视化很有用, 将更加的形象化以便能够了解更多的知识;
对于原始数据处理和汇总统计, 数据可视化而言, 可以在上面花费很多的时间. 这些工作可以帮助你更好地了解数据, 从而更好地选择, 设计相应的模型.
4. 训练数据样本大小
使用少量的数据样本做敏感性分析, 看看实际需要多少数据, 可参考博客机器学习中训练需要多少样本. 此外, 不要认为训练数据越多越好, 适合的才是最好的. 因此, 需要做到以下两点:
设计实验以了解模型性能随着样本的大小发生怎样的变化
使用统计数据来了解趋势是如何随样本大小的变化而变化的
基于以上两点才能对模型性能曲线有所了解.
5. 特征选择
创建许多不同的输入特征视图并对其测试, 因为我们不知道哪些变量对预测模型问题有所帮助.
可以假设猜想;
可以使用某个领域专家的建议;
可以借鉴来自特征选择方法的建议;
以上所有的这些都是猜测, 需要具体实验验证.
设计实验并仔细测试和比较各个特征视图, 通过实验数据来告诉我们哪些特征和哪些视图是最具代表性的. 有关特征选择的更多内容, 可参考博客特征选择导论.
6. 特征工程
使用特征工程在预测建模问题上创建附加的特征和视图.
例子包括:
日期 / 时间;
交易;
描述;
将这些数据分解为更简单的附加组件特性, 比如计数, 标志或其它元素等. 尽可能简化建模过程. 有关特征工程的更多内容, 可参考博客发现特征工程, 如何设计特征并利用好它.
7. 数据准备
可以用能想到的任何一种方式预处理数据, 以满足算法的要求. 预处理的方法有很多, 比如特征选择, 特征工程以及在输入特征上创建附加视图. 常用的预处理操作比如:
归一化输入特征;
标准化输入特征;
使输入特征变得平稳;
应用所能想到的数据预处理方法, 对问题建立新的观点, 并用一套或多套模型进行测试, 看看性能如何. 我们的目标是发现数据的视图, 最佳地将映射问题的未知底层结构展现给学习算法.
总结
通过这篇文章, 你将学到一些小的技巧, 可以最大限度地利用数据. 具体而言, 学到以下三点:
1, 探索可能的模型框架;
2, 需要开发一套 "视图" 对输入数据进行系统测试;
3, 特征选择, 特征工程和数据准备可以对问题产生更多的观点;
数十款阿里云产品限时折扣中, 赶紧点击领劵开始云上实践吧!
来源: http://www.jianshu.com/p/9612e52a2fec