AI模型构建流程图
确定模型任务(业务问题)这里将其分为两部分,分别是定义模型预测问题和明确输入&输出。
1)定义模型预测问题
每每来说业务侧的需求是变革多样的,以是须要算法职员将这种业务侧的需求转化为模型的预测问题。这一步可以说是全体模型构建的核心,如若模型预测问题定义不清,后面的所有事情可能都是空辛苦量。
这一步的核心有两点,
a. 是否问题具有可预测性
首次要从业务的角度以及数据的角度明确这个问题是否具有预测性。比如要预测股票未来30天内每天的涨幅,显然这是一个不可预测的问题,由于未来的涨幅影响的成分太多,而且未来的信息变革不能获取到。
b. 预测目标是如何定义的
确认预测的目标的详细定义。比如,业务方想找出流失落可能性大的用户,此时须要我们定义清楚流失落用户的定义,如前n天内有行为,接下来m天内无任何行为,这里须要我们定义清楚三个点,n是多少,行为详细指哪些行为以及m是多少。
2)明确输入&输出
在定义清楚预测问题后,接下来须要明确输入数据是什么,预测标签是什么,只有拥有可用的演习数据,才能对标签进行预测。
a. 明确输入数据
输入数据,也便是我们的演习数据,查看是否有足够的演习数据,以及数据的质量。如果可用的演习的数据可能就有几百条,或者数据量很大但是缺失落率极高,那么纵然问题可预测,但是演习数据不敷以进行演习。
b. 明确输出数据
输出数据,也便是我们的标签数据,第一步中我们已经定义清楚模型的预测问题,接下来须要我们明确我们 的输出数据。
这里要明确两个问题,
1. 能否获取标签数据
按照定义的办法确承认否获取到标签数据,比如说我们要提取文本中的业务类的实体信息,虽然定义及其明确,但是我们不具有此类数据标签,此时我们须要折衷资源看看是否须要标注数据。
2. 标签分布是否正常
按照第一步的定义,查看一下我们标签数据的分布是否正常,根据结论决定是否调度预测目标的定义(须要把稳并非第一步的定义是绝瞄准确)
选择模型评估办法这里的评估办法紧张分为两个大部分,一个是业务层面的评估指标,这个取决于详细的业务,比如说客户留存率、用户转化率等;其余一个则是模型层面的指标,用于衡量模型演习的效果,比如二分类中常用的指标为精准率&召回率&F1值、回归模型中常用均方偏差作为评估指标。
准备演习数据在上面两部中,我们已经明确了模型的任务和评估办法,那接下来须要准备我们的演习数据,包括两部分分别是演习样本和演习标签(个人而言,这一步是最为费时费力且变数最大的一步骤)。
按照演习标签的不同(是否须要人工标注),可以分为两部分,一部分指自动布局标签,其余一部分指须要人工标注。
1)自动布局标签
可以基于用户日志数据通过规则进行标签布局,比如用户未来一周内对某商品是否点击(该指标可以通过日志数据统计)
2)人工标注标签
对付一些文本和图像类的数据,每每须要人工进行数据标注。
现实情形来看,人工标注的数据标注效率偏低,少之又少,且存在误标注情形,我们可以通过一些策略提高标注&学习的效率,主动学习策略可提高标注效率和纠正误标,小样本学习和半监督学习可以缓解标注数据少的问题。
模型开拓这里归结为三个步骤,如下
1)样本划分
在上面准备好演习数据后,接下来我们须要合理的划分数据,我们须要参与演习的数据,也须要用来评测的数据,常日来说分为两种办法,分别为两种办法,
a. 留出验证集法
按照7:2:1的比例(比例可调)划分演习集、验证集和测试集,个中演习集用于演习模型,验证集用于衡量模型学习的程度(可多次利用),验证集用于终极评估模型效果(仅可利用一次)。
b. K折交叉验证法
将数据划分为K份,每K-1份数据作为演习集,1份数据作为验证集,终极K个验证集的结果取均匀作为模型演习效果的衡量。
两种方法比较:留出验证法是目前较为盛行的数据切分办法,个中验证集和测试集可以基于业务进行定义,比较灵巧;而K折交叉验证法得出的衡量指标会更加稳定些(做了K次验证),但是韶光繁芜度较大,操作繁琐。
2)构建基准模型
该部分是基于构建的演习的数据演习一个基准模型,一样平常来说基准模型选用大略的模型即可,对付一些易于操作的问题,乃至可以通过业务规则划分来构建基准模型。
基准模型构建的目的是通过一些相对大略的模型来大致衡量演习数据的效果,以便后续和后续模型优化进行比较。
3)模型构建&调优
这一步紧张是构建模型并基于验证集进行效果调度。
关于模型选择上,可以利用目前业界较为成熟且线上可以支撑的模型,比如构造数据领域中,XGBoost、Lightgbm、MMOE、ESMM、PLE,文本领域,BERT、ERNIE等。
关于模型调优上,可以基于验证集的效果(loss或者其他干系指标)进行调度,包括一些演习策略干系参数(演习轮数、学习率、batch_size、学习器等)和模型中干系参数(不同的模型会涉及不同的参数)
关于演习样本上,剖析bad case时,有可能会创造类似的样本可能标注有问题,亦或是类似的样本太少导致模型学习不充分,此时可以通过一些规则或者数据增强的办法来调度样本。
模型阐明模型阐明性这个步骤算是可有可无,将这一步单独列出来紧张是想尽可能地希望能大程度上探究模型究竟学习到什么内容导致其终极预测的结果。
在某些业务场景下,模型的可阐明性尤其主要,像金融行业以及反敲诈模型等,模型必须具备可阐明性方可上线。再便是如果你演习一个模型,当你和业务方(假设完备不懂模型)可以更加确信地见告他模型是通过哪些特色学习得到的分数。
这里推举一个包SHAP,对常见的机器学习的模型(XGBoost、LightGBM、LR等)均有可视化以及数值型的解析,对付文本类和图像类模型也有比较好的阐明。
模型支配
模型支配紧张分为在线支配和离线支配。
在线支配紧张是指经模型支配为模型做事,通过API的办法调用模型做事可以拿到模型推理的结果,紧张运用于在线的实时场景。
离线支配这类支配每每不须要支配至线上(模型推理性能哀求较低),只须要离线某一定周期进行数据的推理即可。
模型效果监控当模型真正投入线上利用时,应该故意识监控模型的各项指标,包括业务指标和部分模型指标。
业务指标直接业务指标(业务职员关注的指标)、模型单次要求相应耗时、要求失落败占比、内存均匀花费等
模型指标比如AUC、F1、精准&召回、准确率等等
Note:不雅观测模型各项指标一个是确定模型线上处于正常的运行状态,再一个也可通过模型调用数据(调用分布等)来看下模型如何被利用
模型迭代须要对模型迭代优化,可以定义一个韶光周期,比如一个月,每个月整体评估模型各方面的评估指标以及对线上样本做抽样评估等。
通过系统化的评估,来看下当前模型处于什么水平(一个是业务指标是否符合业务预期,其余一个则是模型指标比较于之前是否变动较大以及缘故原由),以此来决定是否启动模型的迭代优化(进入到第二或者第三步骤)。