机器学习流水线(machine learning pipeline)
/ muh-SHEEN LUR-ning PYPE-line /
机器学习流水线,是把原始数据变成一个能用、已部署的模型,并让它持续好用的那一整串步骤。流行印象里,机器学习就是模型「学会」的那一刻,可那个训练步骤,只是一条长链中的一环。把它想成开餐厅:端上桌的那道菜是看得见的部分,可在它背后,是采购食材、备料、烹饪、摆盘,以及事后的洗刷。任何一道工序被跳过或搞砸,整件事就垮了。
典型的各个阶段大致是这样。第一,收集并清洗数据——纠错、处理缺失值、去重。第二,准备特征——挑选、变换并缩放模型将要读取的那些输入。第三,把数据切分成训练集、验证集和测试集,好让你诚实地调参、公平地评判。第四,训练模型并调它的超参数。第五,在那份从未碰过的测试集上评估它。第六,部署它,让它能在实时数据上做预测。第七——初学者会忘掉的一步——监测并维护它,因为世界在漂移,去年还准的模型今年可能就悄悄烂掉了。
有两条真相赋予了流水线它的分量。第一,在真实项目里,那些不起眼的前期阶段——收集与清洗数据——通常吞掉大半的时间与精力,远多于建模本身。第二,流水线是一条链,而链条的强度取决于它最弱的那一环:切分步骤里的一次数据泄露,或是某个特征在训练时与部署时算法不同,都能悄无声息地毁掉一个本来出色的模型。从整条流水线、而不只是模型来思考,正是「一个演示」与「一套人们敢信赖的系统」之间的分水岭。
搭建一个欺诈检测器:拉来半年的交易、清掉格式损坏的记录、造出诸如「相对该客户平日的消费」之类的特征、切分成训练/验证/测试三份、训练并调好模型、在留出的测试集上检验、把它上线去给实时支付打分,然后逐周盯着它的准确度——因为骗子在不断改变手法。
训练只是其中一环;数据准备、评估、部署与监测,才让整条链完整。
现实中的经验法则:收集与清洗数据,通常比搭模型耗费多得多的精力。一条流水线的可信度,只取决于它最弱的那个阶段——训练与测试数据之间哪怕一次泄露,都能让下游的一切作废。