关于作者:
杨滔,桃树科技(TaoData)创始人,专注于下一代人工智能产品的研发、应用与商业化。拥有超过十年机器学习研究与应用经验。奥克兰大学机器学习博士,悉尼科技大学博士后。曾任阿里巴巴集团数据科学家,建立淘宝网数据科学团队,首创聚划算爆款模型。曾任F团首席科学家,建立F团数据化运营体系。
来源:微信公众号【桃树科技】(ID:TaoDataRobot)
面向对象:对机器学习技术感兴趣的数据分析师、商业分析师、数据工程师、软件工程师和数据科学家。
本文重点:介绍机器学习技术之有监督学习的基本原理和主要流程。
毫无疑问,机器学习技术将成为未来社会最重要的基础技术之一。
机器学习技术之所以越来越重要,主要是因为:
1. 数据无处不在。高质量的数据越多,机器学习的价值就越大。
2. 机器永不停歇。人会疲惫,机器却7*24小时不停运转。比人笨一点的机器,却更努力。
3. 机器学习解决的是决策问题,而决策机制的优化可以同时提高许多应用场景的工作效率。
本文介绍有监督学习(Supervised Learning),机器学习技术中应用场景最多的技术类型。
有监督学习是通过设定目标变量,基于一系列训练样本从数据中建立模型,从而基于模型预测新数据目标变量值的算法技术。在有监督学习中,目标变量本身的设定是由人来定义的。目标变量定义的好,模型才有可能预测准确。
有监督学习包括以下几个步骤:
1. 问题定义
首先,我们需要设定预测对象和目标变量,即,算法预测的单位和目标分别是什么。
在信用风控模型中,业务目标是预测信贷客户未来一段时间形成坏账的风险。因此,预测对象是信贷客户,目标变量是客户未来一段时间是否成为坏账(坏账为1,非坏账为0)。在商品转化率预测模型中,业务目标是预测商品上线后的成交转化率。因此,预测对象是商品,目标变量是商品上线后的成交转化率(可能是0,0.1或0.9)。
目标变量可能是因子型变量(目标变量的取值是一系列类别,例如,0或1)或者数值型变量(目标变量取值为连续型数值,例如,0,0.1或0.9)。如果目标变量是因子型变量,则该问题为有监督学习中的分类(Classification)问题;如果目标变量是数值型变量,则该问题为有监督学习中的回归(Regression)问题。
除了目标变量,预测对象还存在一系列特征变量(即,描述该对象的数据维度)。有监督学习算法是通过学习目标变量和特征变量之间的映射关系,从而建立预测模型。在信用风控模型中,有监督学习模型试图通过信贷客户(预测对象)的一系列维度(例如,基本信息、交易流水变化、征信信息、浏览行为特征、社交信息、工商法院信息)来学习这些维度如何影响客户的还款信用。
在有监督学习中,如果我们可以获得一个样本的目标变量,则这些样本为训练样本;如果我们不知道一个样本的目标变量,则这些样本为预测样本。在模型训练阶段,有监督学习算法基于训练样本来建立模型;在模型预测阶段,模型对新样本进行预测;当我们获得新数据的真实目标变量值之后,预测效果便可以在测试阶段评估。
2. 数据准备
当我们明确了有监督学习中的预测对象、目标变量、问题类型和特征变量之后,我们便可以着手准备数据。
在有监督学习中,我们必须确定以下数据:
(1)预测对象变量名称(例如,CustomerID);
(2)目标变量名称(例如,Target);
(3)预测对象的特征变量的变量名和变量类型。在这里,我们无需主观判断模型最终会使用什么特征变量,仅仅需要把模型可能使用的所有特征变量丢给算法即可(算法可以自动学习模型使用的变量)。
在有监督学习(分类或回归)中,变量类型一般包括:数值型变量(例如,0.1或0.9),因子型变量(例如,0/1,男/女),文本型变量(例如,“桃树科技在杭州”,“桃树英文名字是TaoData”)和时间型变量(例如,“1985-08-11”)。
当我们确定以上数据之后,便可以准备好如下数据:
(1)训练数据:包括预测对象和目标变量的一张宽表
(2)数据字典:特征变量名称以及对应的变量类型
(3)测试数据:包括预测对象和目标变量的一张宽表(目标变量仅用于测试预测效果,而不用于预测本身)
有了这些数据之后,有监督学习技术需要对这些原始数据进行清洗、加工和处理,以便算法可以用于建模。学术界发表的算法一般都假设数据已经是干净和被处理过的,而实践中大部分数据都是粗糙,不适合直接建模的。
在机器学习领域,学术界和商业应用中最大的差异是是否假设数据已经准备好了。
数据处理的主要内容包括:
1)缺失值填充:对数据中的缺失值进行填充,并统计每个样本的缺失值个数作为特征
2)样本选择:剔除重复样本和异常样本,对不均匀样本进行模拟或抽样,从而保证训练样本在不同目标变量的取值范围内具备充分代表性
3)变量选择:根据变量的variance,覆盖率,单变量与目标变量的相关度,变量彼此之间的共线性来选择适合进入模型的变量
4)变量衍生和变量转化:将因子型、文本型和时间型变量转化为数值型变量,抽取变量彼此之间的交叉关系,对歪曲变量进行转化,将变量分箱处理
5)降维:将原始变量投射到新空间中,抽取可以获得更多信息的新特征,并且降低维度
6)统计分析:对数据进行多方位可视化分析
3. 算法调优
不同的算法适用于不同的数据。没有最好的算法,只有最合适的算法。
在有监督学习中,如果特征变量大部分是统计类特征,预测能力最好的算法一般包括GBDT、XGBoost、Random Forest等树状算法。树状算法具备特征选择能力,并且可以输出模型使用的变量权重,便于分析师理解业务。但当数据中特征变量的维度太高时,树状算法一般不适用。
如果有监督学习的数据大部分为文本特征,SVM算法的预测能力一般最好。但是,SVM算法的建模效率比较低,并且SVM的效果高度依赖参数选择。NaiveBayes也是常用的文本挖掘算法,但它需要高度依赖特征选择算法(NaiveBayes假设变量彼此独立)。
在小数据建模中,CART算法可以输出一系列规则帮助分析师快速理解数据背后的规律。例如,在医学诊断中,CART算法可以帮助医生提供数据背后的规则和线索。
在海量数据的有监督学习建模中,分布式版本的LR算法是常用的预测算法,但LR算法也高度依赖数据处理算法,需要大量的离线调试,模型维护成本较高。
在有监督学习中,如果特征变量大部分是原始特征并且原始特征可以穷举数据信息(例如,图像识别和语音识别),深度学习算法是最佳选择,但对深度学习算法的调参是一个复杂过程。
在机器学习技术的应用实践中,当数据被充分处理之后,算法和参数的选择是最影响模型效果的。选择算法和参数,背后本身需要一套算法,这还是机器学习技术应用领域的一个空白。
4. 知识发现
有监督学习算法通过从训练数据中建模,不仅用于预测新数据,还可以为我们提供知识发现。对于一部分有监督学习算法,我们可以得到:
1)模型使用了哪些变量以及变量的权重是什么?
2)在单次预测中,影响预测打分的top k变量以及对应的影响权重是什么?
通过理解模型使用的重要变量,分析师还可以从数据源入手,抽取更多与重要特征变量相关的原始变量。在这种情况下,模型不仅可以使用原始数据建模,同时可以提供进一步抽取原始数据的线索。当数据源在不断变化的情况下,建模是一个迭代优化的过程。
当数据样本不大的情况下,分析模型使用的变量权重可能是比预测效果更好的判断模型有效性的标准。
5. 效果分析
无论是分类还是回归问题,有监督学习算法都是试图建立一个预测模型,从而最小化预测误差。在分类问题中,量化预测误差的指标包括:AUC, KS, Accuracy, Precision, Recall, F1 measure。在回归问题中,量化预测误差的指标包括:RMSE, RMSLE, MAE, Gini。
在效果分析阶段,我们一般会重点关注Performance Table——基于模型预测打分将测试数据分为20个集合。我们可以关注每个集合的效果指标,并且可以基于此判断如何切割预测打分的阈值。
6. 模型部署
有监督学习建模整体可以分为模型原型确立(model prototyping)和模型部署(model deployment)两个部分。
在模型原型确立部分,我们重点关注使用什么数据、算法、参数以及分析指标;在模型部署阶段,我们将数据和有监督学习算法对接后,让机器可以持续学习,并将机器学习结果持续与生产系统对接。
在这里,我们需要了解数据安全要求、数据存储环境和业务系统环境。我们认为最合适的模型部署方式是
最常见做法是把模型部署为Web Service形式,让不同业务系统可以API实时调用不同的模型。
机器学习技术的应用不仅包括算法研究,而是包括问题定义、数据准备、算法调优、知识发现、效果分析和模型部署等环节。不难发现,应用有监督学习技术是一个很繁琐,很容易掉进坑里(又不知道自己在坑里)。
桃树科技通过大量的试验,提炼了这样一套机器学习引擎,我们给它起名字叫做DataBrain。DataBrain的价值就在于大幅度降低了使用机器学习技术的门槛,让分析师或工程师把注意力集中在业务需求、产品体验和用什么数据上,算法仅仅是一个工具,帮助使用者解决问题的工具。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。