传统的机器学习,即在深度学习流行之前的问题的一般处理流程通常是“预处理->特征变换->分类/回归”。即便现在深度学习似乎要统治业界,但要转换成这样的步骤,也不过是将“特征变换”与“分类/回归”合二为一而已,该做的预处理往往还是要做。《深度学习(Deep Learning Book)》里提过一种对深度学习的诠释思路——深度表示学习,与之类似。
但放到现实问题中来看,机器学习只不过是整个问题解决过程中一个很小的组成部分。比如在公司做业务,你要收集数据、清洗数据、建立合适的数据结构,对大规模数据可能还要顺便把大规模分布式问题解决一下。等费劲千辛万苦拿到“干净”的数据之后,才进入机器学习/模式识别问题的一般步骤。
而实际上,至少七成时间花在了准备数据的阶段。很多人学机器学习往往只重视算法或者模型,学深度学习的只看网络结构和调参方法,但不要忘了,这是因为有人为你准备好了数据集和评测流程、方法。对于实际问题,这一整套框架都要根据实际情况去设计、改进,使之贴近业务,提供更好的服务。
做科研有做科研的方法,做实际业务是另一套模式。业界需要的大量的算法工程师,往往是做这些看似琐碎的无趣的活,这样看来程序员转算法工程师其实是比较容易的。
啊哀叹一下为什么我编程这么菜……
扯淡结束。这篇博文要记录的内容,与数据集的制作与划分有关。
本文还是以大白话写就,您读着也省劲,我写得也轻松。
Part 1. 实例: 一个信号处理问题
就从实际问题的背景开始,由导师的项目说起吧。
项目需要完成一个系统,我负责实验设计、总体设计和信号处理+识别。这个项目的信号或者说数据是按时间采样得到的,比如说采样率是500Hz每秒就能得到500个点。一次采集在一分钟以上&#x