参考书籍:Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow
第二章 End-to-End Machine Learning Project 端到端的机器学习项目
项目checklist:
着眼全局
- 制订方案: 了解研究对象,模型的用途等,以便选择算法、评估标准。当前方案可以作为参考(对性能及自己的解决方案)
Pipelines: 一系列数据处理组件的序列。通常是异步的。当有一个组件出现故障时,其下流的组件可以使用该故障组件之前的输出,因此至少短时间内,不会出现问题,因此这个结构相对来说比较健壮
当以上信息了解完毕后,可以开始设计自己的系统了,比如是选择监督、非监督还是增强学习,是分类还是回归问题,需要batch还是online
Multiple and univariate regression: 利用多个特征预测单个变量值的问题
Multivariate regression: 预测变量值为多个时,为多元变量回归问题
当数据量很大时,可以选择在多个服务器上进行batch learning(MapReduce Technique)或者使用online learning
- 选择性能指标
性能指标可以用来评估当前方案的优劣,常用的有:
- 均方根误差(Root Mean Square Error, RMSE),适用于回归任务
- 平均绝对误差(Mean absolute error, MAE),相较RMSE,当有较多异常值(outlier)时,可以选用该指标
- 以上两种方法实际上都属于范数(norms),RMSE对应2-范数,即欧几里得范数(Euclidean norm),记为 ∣ ∣ ⋅ ∣ ∣ 2 \lvert \lvert \cdot \rvert \rvert_2 ∣∣⋅∣∣2或 ∣ ∣ ⋅ ∣ ∣ \lvert \lvert \cdot \rvert \rvert ∣∣⋅∣∣。MAE对应1-范数,即曼哈顿范数(Manhattan norm),记为 ∣ ∣ ⋅ ∣ ∣ 1 \lvert \lvert \cdot \rvert \rvert_1 ∣∣⋅∣∣1
- 更普遍地,k-范数, l k l_k lk的定义为 ∣ ∣ v ∣ ∣ k = ( ∣ v 0 ∣ k + ∣ v 1 ∣ k + ⋯ + ∣ v n ∣ k ) 1 k \lvert \lvert \mathbf v \rvert \rvert_k=(\lvert v_0 \rvert^k+\lvert v_1 \rvert^k+\cdots+\lvert v_n \rvert^k)^\frac{1}{k} ∣∣v∣∣k=(∣v0∣k+∣v1∣k+⋯+∣vn∣k)k1。0-范数, l 0 l_0 l0表示向量中非0元素的个数,无穷范数, l ∞ l_\infty l∞表示所有向量元素中绝对值最大的值
- 索引越高,范数越关注大值忽略小值,这也就是为什么RMSE相较MAE对异常值更加敏感,当异常值非常稀少时,RMSE表现优异
- m m m表示数据集中用于评估性能的实例数,一般就是指测试集大小
- x ( i ) \mathbf x^{(i)} x(i)表示第 i i i个实例的特征向量, y ( i ) y^{(i)} y(i)表示对应的标签,即期望输出值
- X \mathbf X X表示所有实例的特征向量组成的特征矩阵,第 i i i行相当于 x ( i ) \mathbf x^{(i)} x(i)的转置,记为 ( x ( i ) ) T {(\mathbf x^{(i)})}^{\mathsf T} (x(i))T
- h h h表示自己的预测函数,也称为假设(hypothesis)。对给定的向量 x ( i ) \mathbf x^{(i)} x(i),输出预测值 y ^ = h ( x ( i ) ) \hat y=h(\mathbf x^{(i)}) y^=h(x(i))
- 均方根误差公式: R M S E ( X , h ) = 1 m ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) 2 \ RMSE(\mathbf X, h)=\sqrt{\frac {1}{m}\sum_{i=1}^m(h(\mathbf x^{(i)})-y^{(i)})^2} RMSE(X,h)=m1i=1∑m(h(x(i))−y(i))2
- 平均绝对误差公式: M A E ( X , h ) = 1 m ∑ i = 1 m ∣ h ( x ( i ) ) − y ( i ) ∣ \ MAE(\mathbf X, h)=\frac {1}{m}\sum_{i=1}^m\lvert h(\mathbf x^{(i)})-y^{(i)}\rvert MAE(X,h)=m1i=1∑m∣h(x(i))−y(i)∣
- 检查假设: 确保任务目标等正确。
准备数据
- 获取数据。
- 配置工作环境。
- 下载数据: 可以编写脚本便于更新数据以及部署到不同的机器上。
- 查看数据组成。
- 创建测试集: 在进一步分析数据前,先将测试集分出,不对它们进行分析,避免data snooping偏见
- 处于训练集中的数据不能再用于测试
- 测试集划分时,要分层抽样,避免偏差
探索并可视化数据
- 可视化数据
- 寻找相关性: 计算不同特征间的相关系数(correlation coefficient),相关系数只衡量线性相关性,无法得知非线性相关信息。相关系数取值范围为-1到1,越接近1,表明越正相关;越接近-1,越负相关;越接近0,越无线性相关性。