本期讲师介绍:
字节,观远数据首席科学家。主导多个AI我的项目在世界500强的利用落地,屡次斩获智能批发方向Hackathon冠军。曾就任于微策略,阿里云,领有十多年的行业教训。
在商业畛域的机器学习利用中,让业务方了解模型逻辑,晋升对预测后果的信念,对于算法我的项目的推动与落地起着要害的推动作用。因而模型与预测输入的可解释性也日渐成为一个重要议题。在本次分享中,咱们将介绍可解释机器学习的技术原理,以及在模型开发,我的项目落地中的一些利用案例介绍。
目录
- 何为可解释性机器学习
- 技术实现
- 利用案例
为何须要可解释机器学习?
首先介绍下为什么须要可解释机器学习。平时在做机器学习的我的项目中,会碰到不同的场景,比方淘宝举荐零碎,举荐了一些你可能感兴趣的商品,如果举荐的不精确,其实不会造成什么大的损失,或不好的影响。那这种场景下,只须要关注下模型的准确率,尽可能做的越高越好。
另外一种场景,像OCR光学字符识别,它是一个比拟成熟的场景,基本上能够达到100%的准确率。而像其余一些需求预测产品,比方金融信用评级零碎,医学诊断系统,它给出的是预测,比方需求预测接下来可能要买10箱可口可乐,如果预测多了,可能会造成货物囤积,间接造成经济损失。在这种状况下,咱们对机器学习的输入是须要有要求的。还有信用评级,如果我申请了一个信用卡被回绝了,我就会比拟想晓得为什么被回绝,是不是对我的年龄或者性别有歧视等。还比方对Responsible AI这个话题,也会有波及到这方面的需要,所以咱们须要可解释机器学习,让模型输入预测的同时,也要输入预测变动的起因。
上图介绍了在面对一个黑盒的 AI模型时,其不同职能的人,比方企业管理者、客服、IT或是模型开发工程师,他们对于机器学习的输入是有不同诉求的。比方作为一个算法工程师,如果从黑盒的机器学习模型中失去的预测不好,和实在值偏差得十分远,那他可能会想为什么这个模型给了这样的预测,以及如何做能让模型更好。
总结下,第一,模型输入的影响重大,如果给出一个谬误预测,代价会比拟大,就须要可解释机器学习。第二,特地是对算法工程师来说,在开发模型中便于Debug。当然也有一些其余的利用场景,比方躲避模型的Bias。当初社区上也有很多这方面的探讨,如果模型是有一些性别歧视,或者种族歧视的话,这个模型是不能上线的。还有在模型交互时,如果碰到业务方的挑战,能给出一些解释,也能晋升业务用户的接受度。还有各种各样的审计需要、法规需要,像信用评级零碎,如果在线上部署零碎,就必须要合乎透明性,或者可解释性的需要。
可解释机器学习的各种办法
上面咱们切入正题,可解释机器学习的各种各样的办法。左边这张图,分为两个维度,一个是模型预测的准确率,另一个是可解释性。
当用一些简略的模型,如右下角的线性模型,Decision Tree决策树,或者一些概率图模型,他们的准确率可能会差一些,因为模型自身构造比较简单,但它们的可解释性会十分好。左上角,像神经网络或者一些集成学习办法,模型复杂度会十分高,准确率也会相应进步,但它的解释性就会差一点。
办法分类上,线性模型这种属于外在可解释模型。神经网络这种属于预先解释的办法,去关上黑盒看一下它外面到底是怎么来做预测的。还有些是模型特定的办法,像神经网络能够通过后续模型的梯度来做些解释。还有一些是黑盒的模型解释办法,像SHAP这些技术,它对模型没有任何要求,都能够做一些解释。
部分解释和全局解释,全局解释相似于线性模型,它的权重就是这个模型全局上的体现是怎么来做决策的。局部性的解释,相当于对某一条独自的样本给出些特定的解释。
接下来介绍一些外在解释性的模型,像线性回归、线性逻辑回归、决策树等。训练完这些模型后,通过系数和模型的构造就能失去一个解释。系数比拟大,阐明这个特色对整个输入是有比拟大的影响的。系数小,影响就较小。这是自带的一个解释性质。
还有一些相似思路,比方RuleFit或者 Skope-rules这些软件包,能够从数据中提取一些规定,主动构建如右图中显示的这种规定。在预测的同时它的可解释性是十分强的。像奢侈贝叶斯,kNN,能够通过其余的样本来进行解释。
还有一些其余的外在解释模型,大体办法也都是在一些简略模型上附加一些办法。像EBM或者 GAMxNN,它们属于狭义加性模型,相当于在线行模型的根底上,多构建几个线性模型,每一个线性模型形容零碎的一部分,而后把它们加起来。像 Facebook的 Prophet也是一个典型的加性模型,它会别离给出seasonality或trend这方面的一些解释。最近谷歌开源的 TFT,是一个工夫序列的模型,它对于 attention机制做了非凡的解决,能够训练完之后,同时让注意力机制也能够作为一个对模型解释的输入。
还有像神经网络,大多是在训练模型实现之后预先解释。咱们利用神经网络,去计算它的梯度而后做一些反向流传,去做一些解释。上图是早年钻研中咱们怎么来了解 CNN模型它学到些什么,能够通过扭转它的输出,去让它的每个CNN filter的 activation最大化。这样就能够看到,后面几层 CNN的层能学到边缘,两头的能学到一些形态,再高些能学到一些概念。这个其实就是利用了神经网络的求梯度,而后做反向流传的原理,来做一些解释。
这个例子也相似,是来自于 《Deep Learning with Python》那本书,外面介绍实现了 Grad-CAM的办法。像这个图片,为什么预测这个图片是大象呢?咱们就去找大象 class的 activation,而后把它的梯度反向传回去,再看整个 CNN的 layer下面各个像素对它的激活度影响最大的那些像素点是什么,而后用heat-map的模式画进去。就能够看出是因为两个象的头部,这张图片被分类为大象是最有贡献度的,就造成了一个解释。
除了神经网络模型之外,还有一大部分像树模型、 Gradient Boosting这些,其实都能够用一些 Post-hoc模型无关的办法来做一些解释。大抵流程是,当有了一个 Black Box Model之后,能够用一些解释的办法,去最终给用户输入一些阐明。咱们重点讲一下 PDP、LIME和Shapley。
PDP的思维就是去批改特征值。把一个特征值在模型训练完后,有了彩色模型,再输出的时候,把它的特征值做一些批改,比方从0改到100,去看下模型的输入是什么样子。跟what-if的剖析十分相似,去看它的输入追随特色变动会有什么样的变动。左边这张图,是两个特色的交互,两个特色别离做批改,去看它整体对模型输入的影响。
LIME是一个部分解释的办法。对每一个 instance都做出独自的解释,它的做法是在instance左近做些采样。右边这张图,是要解释红色加粗的加号,首先在它四周采了很多样本,在部分样本四周采样之后构建一个线性模型。线性模型对各个特色的系数自身就是可解释的。包含旁边在LIME根底上还有xLIME,它是对这个特色从小变到大,从以后这个点到更大的方向,结构两个线性模型来做解释。
LIME也能够利用于文本。文本图片的挑战是,如果是表格类数据它是比拟好采样的。在采样点左近加一点或者减一点,就很容易采到一个新的样本,文本和图片就会略微难一点。比方图片,它可能要用Super-pixel的办法去做一些像素块的一些采样。作者也在这篇文章外面提了他的一些具体做法成果还是不错的。
Shapley背地的原理是博弈论的一个实践。比方下面这张图,要解决的问题是,三个人去拼车,三个人在不同的地点下车,那么最初车费应该怎么均摊?迁徙到机器学习解释的问题就是,最初总的车费是模型的预测输入,每个人要付多少车费就是三个特色的贡献度。这背地有一套很简单的运作逻辑,去把各个特色的 attribution算进去,也就是一个 local的解释,对每一条预测样本都做出一些解释。
在Shapley实践的根底上开源出一个Shap库。也是目前模型解释畛域利用最宽泛的一个库。它有很多内置的可视化,在原版Shapley的运行根底上做了很多运算的优化。因为原版的计算开销十分大,Shap在树模型和深度学习模型中别离做了一些优化,能够让运行工夫在一个可承受范畴内。
接下来讲下基于样本的一些办法。基于这个样本得出的这个预测,那么怎么来解释它呢?就是去找一条跟它相似的样本,或是找一条具备代表性的样本,而后去解释这个模型的行为,或是解释训练数据它其实就是这么散布的。这个办法要有反事实的办法,或prototypes原型办法,还有像 adversarial对神经网络的攻打办法。
上面讲下反事实解释。比方模型对贷款申请的模型进行判断,输出数据后它回绝了贷款申请。Shapley的反事实解释就是,须要在特征值上做哪些扭转,能够在下一次就通过申请,预测的 label会从0变成1,这就是一个反事实解释。
接下来是原型样本解释。Prototype是数据中具备代表性的样本,反之,如果不太具备代表性,就称为Criticism,相似于outlier,这种办法它可能帮咱们发现数据和模型的毛病。举个例子,咱们训练的一个CNN模型做物体分类辨认,prototype是一些失常的照片,Criticism外面发现了一些早晨光照不好拍的照片,如果这些照片分类为Criticism,就阐明咱们的数据集中可能对于夜间拍摄的照片的数量不够。这个模型在这部分的数据准确率比拟差须要加以改进。
最初这个是影响力样本。相当于原先有全量数据去训练,它会拟合出这条红色线的信息模型。当把右下角这个离其余的点十分远的 influential instance去掉之后,它就拟合进去新的蓝色这条线了,能够看到斜率扭转十分大,所以就能够叫右下角这个点是一个influential instance ,就是很有影响力的样本。但这个办法也有些效率上的问题,是和Shapley的原理差不多,要思考每一个样本的影响力,要把每一个样本去掉,从新训练一个模型来看,开销很大。也有些其余办法,像在神经网络模型上,能够疾速在一个构建好的模型下来寻找它影响力样本,还有像集成树模型也有办法是能够疾速找到影响力样本。
后面讲了很多解释办法,咱们再来看一下解释办法的比照。最下面是图像类型的解释。比拟了Grad-CAM等相似于显著图的办法,还有像LIME、SHAP,最左边这种通过 example数据的实例来进行解释,两头是text的一些工作,最上面是一个工夫序列的input,它别离通过不同的办法来做解释。而后把这些解释的办法放到了亚马逊的 Mechanical Turk众包平台下来,让人工来评判到底哪种解释比拟好。能够看到接受度最高的是Explanation by example。这个也给咱们一个启发,如果解释是用于这种业务零碎,或者须要像业务形式进行解释的话,应用样本解释的形式更好。但如果作为开发者的话, Shapley可能会更有用些。
这也是推特上的一个对模型解释的办法抉择。包含你能不能承受精度比拟差的模型,是不是须要做全局的解释,还是 local的每一条instance的解释,列了一个相似于决策图,也能够依据这个来抉择。
那什么是好的解释?也有很多这方面钻研。尤其是当解释的对象受众是不一样的群体的时候,要特地去关注一些点,从社会心理学层面,去看人们如何承受什么样是一个好的解释。学术界在这块也有一些钻研。
最近 AAAI 2021年的tutorial从数学性质上总结了一系列的好的解释的性质。下面是各个解释的办法它领有这些性质的多少,数量比拟多的两个是 Shapley Value和Integrated Gradient。这两个办法如果用神经网络的话,能够用 IG,如果用一些传统模型,Shapley Value也是一个十分好的抉择。
实战环节
后面咱们讲了怎么用模型解释的办法来Debug模型。左边这张图是如何构建模型。两头这个人站在一堆矩阵、运算的货色下面,右边这个漏斗是数据进来,左边进口那边后果会进去。当构建起一个很简单的模型后,数据进来后果进去,你一看这个准确率不太好,那接下来你会怎么做?
这个人把两头这堆很简单的货色捣鼓下,就是调参数,而后改一改模型构造,换个不同的激活函数或损失函数,而后看看成果是不是变好了,不行的话再持续进行调试。这样的调试可能效率是比拟低的,而且也不能精确的晓得两头的模型到底做了些什么,所以对于模型的迭代开发来说,并没有什么大的帮忙。
有了模型解释工具之后,能够帮忙来改良这个流程。当有了后果之后,能够用模型解释工具,对预测不太好的一些条目进行解释。看一下用的特色是不是合乎预期,如果不合乎,能够把人工教训植入到模型的构建流程中去。通过模型解释发现问题之后,跑了一轮新的训练,出了一个新的后果,这个时候还能够持续用解释工具去验证改良是不是无效。做试验时,除了过拟合和欠拟合这种很间接从指标上看到的,其余一些更细节的问题,有了模型解释工具之后是很有帮忙的,会帮你放慢迭代速度,而且很好的把人工业务教训融入进去。
这是一个挺好玩的例子,叫Dark Sight,同时做了一个降维和模型压缩。训练了classifier多分类的模型之后,能够把模型的预测输入后果降维而且可视化在一个二维立体上。这个降维有个很好的个性,能够看到这两头两个,一个是蓝色块,是一系列9的数字,粉色块是4的数字。这两个圈两头有个接壤,把接壤点数字实例点选出来,会发现这个数字长的既像9又像4。这个个性就可能把模型感觉不好判断的局部很直观的可视化在画布上,而且通过点击交互的去剖析,两头那些样本又像9又像4,对模型来说比拟艰难,那么能够有针对性去做一些解决。这也给咱们带来一个启发,其实很多模型的降维和数据的降维,也是对模型的解释有帮忙的。
这是利用IG – Integrated Gradients,做 X光片的疾病诊断。能够看到原始输出的图片是右边。输入的 label是这个人有疾病,咱们用了 IG去做解释后,能够看到左边这边有一些粉红色的高亮,这示意在这些像素点上的模型认为样本被分类为有问题,是贡献度最大的像素点。
咱们能够再把像素点放大,看看模型到底是做了什么样的判断。后果发现这个其实是下面有两条用彩色记号笔画的线,应该是医生在诊断过程中看了X光片,确诊进去有问题,就在这边画了两条马克笔的线,那模型学到的是医生的标记,并不是学到了病理组织的 pattern,所以模型的判断其实是有问题的。这样就能够很不便的通过模型解释的办法去找到模型中的一些弱点。
上面这个例子也是相似的,它也是用了IG的办法。这是一个VQA - Visual Question Answering看图问题的工作。这个问题是在图片中 white bricks有多对称。模型给出的答复是very,它是很对称这个答复是很make sense的正确答复。然而咱们用了技术去对它进行了剖析之后,发现红色的文字具备很高贡献度,蓝色的是比拟有负面贡献度,灰色的简直是没有什么贡献度的,所以其实模型给出的这个答复预测,其实它是重点关注在这个How下面,所以关注度是有问题的。
因而如果咱们把两头 symmetrical换成别的词,比方asymmetrical,是不是不对称的,或者how big有多大,甚至改成一句齐全没有什么含意的话。White bricks speaking, how fast,它答复是very。这样就帮咱们发现了这个模型的问题,它其实没有真正的去了解这句话和图片,然而它看似给出了一个很好的预测,这样也是帮咱们发现模型的一些问题。
如果是一些传统的表格类的数据,那么咱们能够用SHAP来做剖析。比方像XGBboost或者LightGBM,大家会常常去剖析 feature-importance,给出一个模型的全局解释。其实用shap的话,能够给出一个更好的 feature-importance的解释,它其实不光是特色的贡献度从高到低排序,还能够是这个特色的奉献是正向还是负向,就是坐标轴右边是负向的奉献,左边是正向的奉献。另外还能够把这个特色的值和散布都绘在一张图上展示进去。
比方它的这个线比拟粗的话,就是一个圆锥形的散布,数据量比拟多;比方蓝色的是一个特征值是比拟低的状况,红色的是特征值比拟高的状况。左图是一个训练的比拟好的模型,你大抵看到大多数的特色,它在 Feature value高和低的时候,它能够把红色是负面影响,蓝色是侧面影响显著的辨别,它基本上可能都能够离开来。
右图咱们把 label做了随机的打散。能够看到它的蓝色点和红色点根本就混在一起了,区分度显著不高了,所以能够通过这种图形上的pattern展示,帮忙你去发现问题。如果你做了一个特色,它像右图这样,特色高和特色低都会混在一起,不晓得是侧面的影响还是负面影响,没有什么区分度的话,就须要去看下你的特色是不是做的有问题。
SHAP还能够做一些很简单的特色交互的剖析。这个是一个对于成人支出的例子,左上角两条轴分为两个特色。一个是他受教育的年份,上面是年龄。正向影响的是他的支出比拟高,负向影响是他的支出比拟低。能够看到年龄在20~30岁的时候,当受教育年龄比拟低的时候,它反而是一个正向的影响。这个也比拟好了解因为在20~30之间,如果受了10多年教育那他可能过后刚毕业,大多数状况下支出必定是低的。这个能够印证,一些业务的常识能不能体现在你数据中,体现在你的模型中。还有比方左边这个能够去看他的职业跟他的年龄和支出的影响。咱们能够从中去剖析,是不是有一些年龄,他是年纪越大,支出会越高。有些年龄是年纪越轻他的支出会越高,是一个吃年老饭的职业的。这些都能够通过SHAP value的这种特定交互的剖析来做一些判断。如果它不合乎你的业务常识,你能够针对性的去做一些数据上的诊断和批改。
这个例子是咱们做了一个二分类的问题,做了一波特色工程,忽然发现 AUC从原来的0.7级回升到了0.9,显著是不太正当的,应该是产生了一些问题。咱们察看了下前后的Feature importance,发现如同 Top feature它并没有一个很显著的变动,没有一个特色忽然importance从上面窜上来,没有找到这样的一个显著的leak特色。其实这样的状况咱们也能够用SHAP value来做。能够抉择新旧两个模型,而后找一条预测样本。比方它原先是一个false negative预测错了的,前面被预测成true positives预测对的。咱们别离去看前后的SHAP value的比照,再去看SHAP value正向奉献差异最大的一个特色到底是哪个。咱们能够挑个10条20条样本别离去验证一下,发现他们都是落在了同一的特色下面的话,那么就很容易就能够找到leak的特色到底是哪个。这个也是一个间接用模型检测技术去找leak特色的实例。
那么如果是回归问题的话也是相似的。比方能够找Top高估的那些预测样本和Top低估的预测样本,而后别离去在组内做一些SHAP value相干的一些剖析,去看下TOP高估的那些,它的正向影响的最大的特点到底是哪些。如果是有问题的特色,咱们能够做一些针对性的剖析,如果是特色区分度不够高的话,可能要减少一些新的特色进去。Top低估点,也是相似的做法。
如果是分类问题其实也是一样。比如说你关注得分最高和得分最低的这些谬误的样本,就是你最有信念的,然而它预测错了。另外决策边界左近预测是个50%可能性左近的一个样本,你也能够用SHAP去剖析它的特色,看看是不是有些抵触的特色。就是a特色跟b特色其实是有一些抵触,导致他们的成果对消了,最初模型就不太确定到底是一个正样本还是负样本。
除了SHAP之外,分类问题它能够用的一些技术还更多一点。包含应用example来做一些解释,比方ProtoDash来找一些Prototype的样本。还有用反事实样本来诊断这些样本的数据问题。
这个 ProtoDash的大抵的含意,它是一个信用卡的信用剖析,右边这条样本特色的值,输入预测的后果是好的,就是认为这个人是一个有信用的人。那为什么模型给了他这个预测,咱们就能够在训练集中去找跟他相似的样本。所以ProtoDash就是在找出了一条指标样本之后,咱们在训练集中去找跟他相似的一些原型样本。找到之后,能够看到左边的第一条weight很高,示意跟它的类似度是十分高的。那就能够给业务方很好地解释,当你的训练样本中有一条跟他特色十分靠近的一条样本,因为过后他是一个守信用的人,那新进来的一条样本咱们就认为他也是一个守信用的人。但如果这两条发现了抵触,比方咱们发现这个人模型预测是好的,右边测试样本最初label显示这个人是信用不好的。那这个时候咱们就须要去看,为什么跟他类似的人信用是好的,是不是在这两个人之间有些什么差别咱们没有抓到。那咱们就须要减少一些特色去强化这两条特色的区分度,否则这个模型在相近的时候就很难辨别进去。或者对于特色要有些分层解决,都能够去帮忙模型改良晋升,能够融入你的一些业务知识改良模型。
最初这个是一个counterfactual的案例,还是方才那个例子。比方原先这个人最右边的 X,他被预测进去是不守信用的,那他须要做哪些事件,可能让他通过验证,认为他是一个守信用的人。模型给他的倡议是有三个值要晋升。第一个是 ExternalRiskEstimate,这个值是越大越好的值,相似于芝麻信用分,是内部的均匀积分,芝麻信用越高,阐明这个人更守信。上面的 AverageMinFile和 NumSatisfactoryTrades,一个是履约的次数,他履约的次数越多,实践上来说应该是更守信用的,还有他的记录的月数,就是他整个的历史的信用周期有多长,比方信用卡曾经用了10年了,那咱们会认为他更可能是一个守信用的人。如果counterfactual的样本是比拟合乎你的业务判断的话,那阐明这个模型总体上训练是精确的。
但如果最初呈现了一些比方他心愿性别换一换或者种族换一换,模型学到的货色可能是有些问题的。咱们可能会发现这个模型在对他的公平性上是有问题的,所以须要做一些改良。这个是用这种实例样本的例子,来解释办法,让它帮咱们改良模型。
对于模型开发,还有一个大的利用,就是怎么用这个模型解析技术去给业务方做解释。这边举了个例子,咱们须要用不同的需要来构建模型。比方咱们要构建一个用户的复购模型。咱们这边有三种抉择,第一种就是可能精确的预测出哪些用户会复购。你的业务的指标是accuracy,就是能够不论别的,只管晋升准确率就行了。
模型二是可能告知哪些个性的组合与复购行为是高度相干的,这是一个全局性的解释的例子。就是把insights提供给业务方,业务就晓得须要去做哪些事件,能够让用户的复购率晋升。对他们来说是一个业务上的领导。咱们能够抉择一些绝对简略的,比方决策树、线性回归就能够了。
模型三是可能告知为什么这个模型认为某一个用户会进行复购。它是一个更细粒度的local的解释。它的应用场景比方是咱们在做客户营销时候,某个客户购物后,模型预测他可能前面不回再复购,咱们能够解释一下为什么预测他不会回来做复购。那么能够针对性的对每一个用户做个性化的设置,用一些举荐或者业务的动作,让他可能回购。
这个就是不同的场景下咱们须要构建不同的模型,来实现业务指标。当然业务实际上也有很多挑战。大多数的模型解释都是相关性而非因果性的。有时候你会看到它可能会倡议你把用户的年龄增大一点,然而这其实是不靠谱的,因为没法手动的把一个人的年龄调大。还有在构建可解释性模型的时候,还要思考特色的构建。如果构建了几千个特色,用SHAP value给了一个解释的话,其实业务方也是无奈了解的,就是几千个特色的解释是无奈了解的。预测流程其实也是很简单的,它不光是一个模型,它可能是多个模型,甚至模型前面还有一些业务的解决的规定,那么整个预测流程都须要给出一些解释。那怎么去把整个流程串起来,这也是个挑战。还有包含后面讲到的,三个不同的用户场景,咱们须要抉择的模型、解释,可能都是不一样,所以对于不同的业务场景都须要有不同的开发方式。最初给出的解释是不是一个actionable的步骤,就是用户是否采取一些措施来扭转,其实也是一个很重要的课题。不光波及到模型解释,机器学习,可能还波及到一些运筹优化或常识图谱方面的考量。
上面介绍一些产品和利用,比如说H2O.ai 、SageMaker包含Google Cloud下面的AI平台,他们也都提供了这种模型解释相干的组件,还有像Fiddler、Truera这两都是专一于模型解释方向的初创公司。
左边这个表格是业界的一些模型解释利用,看看他们利用在哪些场景,用了哪些技术手段,最初面向的用户到底是谁?能够看到一共有8条。其中5条是开发人员用的,也就是大多数还是工程师开发模型的时候来应用一些解释的技术。只有3条比拟多数的,是会面向最终的业务方来给他们解释。而且给业务方的解释伎俩也比较简单,一个就是Feature importance。利用场景的话,除了模型开发、评估之外,在整个机器学习模型 life cycle外面都是有利用到的。大家如果去看Fiddler的产品介绍的话,也会看到。
方才讲的是可解释性机器学习,能够看到黄色这些框,比方机器学习,视觉或者NLP。如果是AI的话,它的领域会更大些,比方像多智能体的一些零碎,或者做一些运筹的优化,搜寻优化或者planning,或者是一些跟常识表白和推理相干的货色,这些可能都是须要解释的。当在构建整个智能决策零碎的时候,不光是算法,或者广义的机器学习的局部须要给出一些解释,对于其余那些运筹优化,常识的推理和逻辑推理,或者在多智能环境下的强化学习的策略的抉择,也须要给出一些解释。或者是帮忙你去改良模型,帮忙你的业务方、受众方去了解你为什么做决策,都是很有帮忙的。
扫码或点击应用demo,体验观远产品