首页 > TensorFlow教程 > 机器学习 阅读数:24

机器学习的基本流程

用机器学习解决问题的一般流程如图 1 所示。
用机器学习解决问题的一般流程
图 1:用机器学习解决问题的一般流程

1. 收集数据

业界有一句非常流行的话:“数据和特征决定了机器学习的上界,而模型和算法只是去逼近这个上界”,由此可见,数据对于整个机器学习项目来说至关重要。

当我们面临一个实际的问题时,如果既有想法,又有一些相关数据,有可能是有用的,也有可能是无用的,则这里的数据收集是指根据需求从已有数据中找出我们真正需要的数据;而如果只有想法,没有数据,则这里的数据收集是指对数据的搜寻和整理等,如利用网络爬虫技术从互联网爬取数据,或因学习和研究的便利而使用公开数据集。

2. 数据预处理

无论是我们自己收集的数据还是公开数据集,通常都会存在各种各样的问题,例如数据不完整、格式不一致、存在异常数据,以及正负样本数量不均衡等。因此,需要对数据进行一系列的处理,如清洗、转换、规范等之后才能拿来使用,这个过程即为数据预处理。

3. 特征工程

目前在机器学习或深度学习相关的书籍中,很少会有专门把特征工程拿出来单独介绍的(在一些与数据分析或数据挖掘相关的书籍中可能会介绍得相对多一些)。的确,对于整个机器学习的项目来说,特征工程只是其中很小的一部分工作,但是千万不能忽略这“很小的一部分工作”的重要性。

一个机器学习任务的成功与否往往在很大程度上取决于特征工程。简单来说,特征工程的任务是从原始数据中抽出最具代表性的特征,从而让模型能够更有效地学习这些数据。通常我们可以使用 scikit-learn 这个库来处理数据和提取特征,scikit-learn 是机器学习中使用非常广泛的第三方模块,本身封装了很多常用的机器学习算法,同时还有很多数据处理和特征提取相关的方法。

4. 训练和测试模型

处理好数据之后,就可以选择合适的机器学习算法进行模型训练了。可供选择的机器学习算法有很多,每个算法都有自己的适用场景,那么如何选择合适的算法呢?

首先,要对处理好的数据进行分析,判断数据是否有类标,若有类标,则应该考虑使用有监督学习的相关算法,否则可以作为无监督学习问题处理;其次,判断问题类型,属于分类问题还是回归问题;最后根据问题的类型选择具体的算法训练模型。实际工作上会使用多种算法,或者相同算法的不同参数进行评估。

此外,还要考虑数据集的大小,若数据集小,训练的时间较短,则通常考虑采用朴素贝叶斯等轻量级算法,否则就要考虑采用 SVM 等重量级算法,甚至考虑使用深度学习的算法。

5. 模型的评估

常用的模型评估方法及相关的评估指标之后详细节介绍。