深度学习全书:公式+推导+代码+TensorFlow全程案例
上QQ阅读APP看书,第一时间看更新

1-4 机器学习开发流程

一般来说,机器学习开发流程(Machine Learning Workflow),有许多种建议的模型,如数据挖掘流程,包括CRISP-DM(Cross-Industry Standard Process for Data Mining)、Google Cloud建议的流程[2]等,个人偏好的流程如图1.7所示。

图1.7 机器学习开发流程

机器学习开发流程大概分为十个步骤,这里不含较高层次的企业需求了解(Business Understanding),只包括实际开发的步骤。

(1)搜集数据,汇整为数据集(Dataset)。

(2)数据清理(Data Cleaning)、数据探索与分析(Exploratory Data Analysis, EDA):EDA通常是指以描述统计量及统计图观察数据的分布,了解数据的特性、极端值(Outlier)、变量之间的关联性。

(3)特征工程(Feature Engineering):原始搜集的数据未必是影响预测目标的关键因素,有时候需要进行数据转换,以找到关键的影响变量。

(4)数据切割(Data Split):切割为训练数据(Training Data)及测试数据(Test Data),一份数据提供模型训练之用,另一份数据则用于衡量模型效果,如准确度。切割的主要目的是确保测试数据不会参与训练,以维持其公正性,即Out-of-Sample Test。

(5)选择算法(Learning Algorithms):依据问题的类型选择适合的算法。

(6)模型训练(Model Training):以算法及训练数据进行训练,产出模型。

(7)模型计分(Score Model):计算准确度等效果指标,评估模型的准确性。

(8)模型评估(Evaluate Model):比较多个参数组合、多个算法的准确度,找到最佳参数与算法。

(9)部署(Deploy):复制最佳模型至正式环境(Production Environment),制作使用界面或提供API,通常以网页服务(Web Services)作为预测的API。

(10)预测(Predict):客户端传入新数据或文件,系统以模型进行预测,传回预测结果。

机器学习开发流程与一般应用系统开发有何差异?最大的差别如图1.8所示。

(1)一般应用系统利用输入数据与转换逻辑产生输出,如撰写报表,根据转换规则将输入字段转换为输出字段;但机器学习会先产生模型,再根据模型进行预测,重用性(Reuse)高。

(2)机器学习除了输入数据外,还会搜集大量历史数据或在Internet中抓取一堆数据,作为塑模的“饲料”。

(3)新产生的数据可回馈入模型中,重新训练,自我学习,使模型更“聪明”。

图1.8 机器学习与一般应用系统开发流程的差异