如果说去年“机器换人”的舆论来自车间的机器人手,那今年在全球范围内挥舞起“自动化”大棒的,就成了机器学习。上月,李飞飞发布面向商业公司的机器学习库AutoML,技术门槛之低,让不少工程师担忧不已。一波未平,8月月初,美国德州农工大学开源Auto Keras,同样的功能,但是完全免费。而今天,软件巨头Salesforce也入场了,他们带来的TransmogrifAI,才可能是真正的AutoML“杀手”。
以下内容来自Salesforce Einstein数据科学高级总监Shubha Nabar:
在过去十年中,尽管机器学习取得了巨大进步,但构建可用的机器学习系统却依然是件难事。三年前,当我们着手把机器学习功能部署到Salesforce平台时,大家才发现,原来构建企业级机器学习系统更加困难。为了解决这个问题,我们开发了TransmogrifAI(发音为trans-mog-ri-phi)——一种用于处理结构化数据的端到端自动化机器学习库,它也是现在Einstein平台优化功能的一个工具。
今天,我们把这个项目分享给开源社区。未来,数据科学家和开发人员可以用它快速大规模地构建机器学习解决方案。
TransmogrifAI GitHub:github.com/salesforce/TransmogrifAI
当数据科学家在为商业产品构建机器学习功能时,他们通常会关注易于理解的样本和数据集。相比之下,企业拥有的数据和样本是多样化的,这种多样性使构建企业级机器学习系统成了一项挑战。在Salesforce,我们的客户可能希望预测一系列结果——从客户流失、销售预测、潜在用户转化,到数字广告点击、网购、报价接受、设备故障和延迟付款等,
对于企业客户来说,他们的数据是保密的、不可共享的,这两点至关重要。这意味着我们必须针对客户,用给定的数据样本构建机器学习模型。同时,构建全局模型绝对没有意义,因为每个企业都独立无二,他们有不同的商业模式,也有各自的经营规模和业务渠道,用机器学习的术语讲,就是有不同的偏差。
为了让机器学习真正为客户服务,我们要做的就是构建和部署上千个用不同数据样本训练得到的个性化机器学习模型!而如果不想聘请大批数据科学家,实现这一目标的唯一方法就是自动化。
TransmogrifAI工作流程
通常情况下,如果要构建性能良好的机器学习模型,它需要的研究量和开发量是相当可观的。数据准备、特征工程、模型训练……这些繁琐过程需要不断迭代,为了得到成熟的模型,数据科学家们可能要耗费数周乃至数月的时间。
TransmogrifAI是一个基于Scala和SparkML构建的库,它能承担这个过程中的部分工作。只需几行代码,数据科学家就可以自动完成数据清理、特征工程和模型选择,然后训练出一个高性能模型,进行进一步探索和迭代。
它封装了机器学习过程的五个主要步骤:
特征推断(Feature Inference)
数据是所有机器学习管道的第一步。数据科学家先收集所有相关数据,再进行整平操作,添加、聚合不同数据源,从中提取可能有助于预测的原始信号。这之后,提取得到的信号会被放进灵活的数据结构中,也就是DataFrame,方便后续操作。虽然这些数据结构简单且易于操作,但其中还是存在一些错误,可能会对下游造成影响,比如存在类型错误和空值错误。
TransmogrifAI可以帮助解决这类问题。它允许用户为其数据指定类型,自动把原始预测变量和响应信号提取为“特征”。除了原始类型,TransmogrifAI的支持面更丰富、更细化,地理位置、电话号码、邮政编码……凡是数据科学家可能频繁遇到的,它都能进行区分。
事实上,即便用户没有指定,TransmogrifAI也可以自行推断。例如,当它检测到数据中的文本特征其实是分类特征时,它会记录这个错误并进行适当处理。不用等到运行时再报错,数据科学家在编译时就能找出大多数错误。
自动化特征工程(Transmogrification)
虽然找到正确的类型有助于数据推理和减少对下游的不良影响,但最终所有特征都是要被转换成数字表示的。只有这样,机器学习算法才能寻找并利用其中的规律。这个过程被称为特征工程。
举个例子,我们该怎么把美国的各个州(如CA, NY, TX等)转成数字?一种方法是把每个州映射为1到50之间的数字,因为美国一共有50个州。但这种编码方法的缺点在于没有保留州与州之间地理位置上的关系。那么如果我们计算州中心点到美国中心点的距离,并以此为编码依据呢?这确实可以解决之前提到的问题,但它同样无法反映东西南北位置。
所以特征工程的方法有无数种,但是找出正确的一种十分不容易。
TransmogrifAI可以帮数据科学家自动化这个恼人的过程。它为自己支持的所有特征类型提供了无数种编码技术,能做到不仅把数据转成算法可用的格式,还能优化转换,使机器学习算法更容易从数据中学习。例如,同样是年龄数字特征,它能根据特定问题(时尚行业、金融理财)把它们转成最合适的年龄段。
尽管TransmogrifAI已经具备了上述强大能力,但考虑到特征工程是一场无穷无尽的“博弈”,它也支持用户自定义和扩展默认值。
自动化特征验证(Feature Validation)
特征工程可能导致数据维度出现爆炸性增长,而高维数据往往会让模型出现差错!其中最典型的是模型过拟合,另一个容易被忽视但影响巨大的问题是数据泄露。
假设我们手头有一个包含交易信息的数据集,任务是预测最终的交易金额,而数据集上一个条目叫“已结算交易金额”,这是完成交易后才能统计到的信息。如果我们不慎把这个信息也放进训练集里,模型就会发现它的“可参考性”极强,最后成为一个测试时精度极高,实践时一无所用的废品。
事实上,在Salesforce业务中,这种后见之明的偏见尤其成问题,因为大部分客户的数据很复杂,平时也是自动填充的,这使得数据科学家很容易混淆因果关系。
TransgmogrifAI包含执行自动特征验证的算法,可以删除几乎没有预测能力的特征——随着时间的推移而使用的特征,表现出零方差的特征,或者在训练样本中的分布与预测时的分布存在显着不同的特征。在处理含有偏差的高维数据时,这些算法会用一系列基于特征类型的统计测试,结合特征谱系来检测和排除偏差。
自动化模型选择(Model Selection)
完成所有关于数据预处理的工作后,数据科学家就该把机器学习算法应用于准备好的数据以构建预测模型。如果是手动完成,他们往往需要尝试许多不同的算法,并找到合适的参数设置。这是个耗时的工程。
TransmogrifAI的模型选择器可以在数据上运行多种算法,并比较它们的平均验证错误,从中挑出最佳算法。除此之外,它还能通过适当地对数据进行采样并重新校准预测以匹配真实的先验,自动处理不平衡数据的问题,进一步提高模型性能。
超参数优化(Hyperparameter Optimization)
上述自动化步骤的基础都涉及超参数优化,它几乎无处不在。而就是这么一个耗时久、任务量重、让数据科学家望而生畏的操作,它背后的技术原理却不难,可以直接看成一个高性能模型和一个随机数生成器模型。这个任务,TransmogrifAI可以代劳。、
赋予每个人使用ML技术的权利
总的来看,现在TransmogrifAI在Salesforce内部已经成功把训练模型所需的总时间从几周、几个月缩短到了几个小时。而封装所有这些复杂操作的代码却非常简单,只需短短几行就能搞定:
// 读取交易数据
val dealData = DataReaders.Simple.csvCase[Deal](path = pathToData).readDataset().toDF()
// 提取原始信号,预测特征
val (isClosed, predictors) = FeatureBuilder.fromDataFrame[RealNN](dealData, response = "isClosed")
// 自动化特征工程
val featureVector = predictors.transmogrify()
// 自动化特征验证
val cleanFeatures = survived.sanityCheck(featureVector, removeBadFeatures = true)
// 自动化模型选择
val (pred, raw, prob) = BinaryClassificationModelSelector().setInput(isClosed, cleanFeatures).getOutput()
// 设置工作流程,训练模型
val model = newOpWorkflow().setInputDataset(dealData).setResultFeatures(pred).train()
这意味着TransmogrifAI已经成为一个变革。
在我们眼里,这种自动化水平的工具对开发面向企业的机器学习系统至关重要,因此我们也相信,随着机器学习在各行各业的应用场景不断拓宽,对运营方式产生巨大影响,未来企业对机器学习系统的需求会不断增大,而那时,TransmogrifAI这样的自动化机器学习库可以帮助他们实现目标,实现转变。
转载:软件巨头Salesforce带来AutoML杀手TransmogrifAI