一个最基本的Machine learning pipeline

Database and Ruby, Python, History


上图是一个精简版的 Machine Learning Pipeline。

Data 数据

这里的数据一般是指清洗好的数据,可能已经有了标签,也有可能需要后续的步骤去计算出标签。

Labeller 打标

有些数据是没有标签,还需要额外的逻辑去计算出标签。

Splitter 拆分

将数据拆分成为训练集和测试集。拆分的时候需要注意数据泄露的问题,避免训练集里面有某些特征会和测试集里面的数据有关系。为了避免这个问题,我们一般会按照时间去拆分。和时间没有太多关系的,我们可能会按照人口比例、性别、收入进行等比拆分。

Transformer 转换器

上面的这些特征不能够直接喂给模型,需要做一些处理,比如缩放,独热编码等操作。

Filter 过滤器

并不是所有的特征都需要,特征太多可能会导致训练时间过长。所以需要将不太重要的特征过滤掉。

Optimizer 超参优化

通过网格搜索,随机搜索,找到最优的超参,进而提升模型的效果。

Trainer 训练器

这个时候就可以进行训练,并保存模型和相关日志。

Evaluator 评估器

训练完了之后,我们还要评估模型的效果,以及与之前的模型评估。

ROC 曲线

|        | Predicted |
| Actual |  TN | FP  |
|        |  FN | TP  |

准确率: (TP + TN) / ALL

查准率/精确率: TP / (TP + FP)

查全率/召回率/真阳率: TP / (TP + FN)

特异度/假阳率: FP / (FP + TN)

F1 = 2 * 查准率 * 查全率 / (查准率 + 查全率)

ROC = 查全率 / 特异度