6 算法即服务:最大化实现数据价值
6.1 算法的价值
数据模型的表述形式:Y=F(X),F为算法,X为输入,Y为输出
算法的核心价值如下:
- 模拟客观世界,实现现实世界的数字化和可视化,让人触手可及。算法的核心价值是对客观世界进行抽闲和模拟,然后通过一系列的数学公式来进行描述。
- 提升决策能力。
- 提升体验。算法的应用可大幅提升服务全流程的自动化水平和效率,让客户获得前所未有的极致体验。
- 降本增效
- 提高沟通效率。很多即时通信类或聊天类软件,借助算法的力量实现了文字聊天、语音聊天、语音转文本、人机对话等功能
- 拓宽边界,扩大外延,扩展能力
6.2 建模标准化流程
6.2.1 业务理解贯穿始终
技术工作者与业务专家深入沟通,业务专家输入业务需求和业务知识,技术工作者输入技术和解决方案的思路,然后双方进行沟通和碰壁,最终产出可实现的业务需求和初步的解决方案。
6.2.2 数据准备
(1)变量结构化构建方法
在数据准备之前,还需要明确算法需要的原始自变量X和因变量Y。在确定自变量X的时候,应遵循粒度从粗到细的原则。通过一下方法实现变量构建的结构化和自动化
- 变量的事实。该要素主要描述变量的事实信息,结构化的事实构建方法如下:找出业务的核心主体,梳理关键的业务节点,确定各个节点的关键行为
- 变量参与主体的纬度
- 时间窗口纬度。该要素描述变量的时间范围的纬度
- 对事实的度量。该要素描述事实的衡量指标,主要包含原始指标、统计指标和趋势类指标。
变量结构化构建方法应关注一下3个内容:
- 遵循变量的粒度从粗到细的原则,步步递进,结构清晰
- 通过变量的4个要素进行组合
- 应该校验变量的合理性和二义性。
(2)明确变量口径
- 在确定了X和Y的4个要素后,还需要明确X和Y的详细口径和计算方法
- 数据开发工程师根据事前确定的定义、口径和计算方法从数据仓库中提取所需的X和Y的明细数据
- 在数据准备阶段,业务专家和技术工作者可能需要变更X的字段、定义、口径和计算方法。真个过程也可能需要反复几轮,最终才能明确数据需求。
6.2.3 数据预处理
问题 | 数据校验 (目的:校验数据的真实性和准确性,发现问题数据) | 数据清洗 (目的:解决有问题的数据) |
---|---|---|
命名合理性 | 对变量的命名是否符合命名规范进行校验,同时判断不同字段的命名是否容易产生歧义。 | 对命名不符合命名规范的进行重命名工作,解决二义性问题。 |
清单和汇总至一致性 | 校验清单数值和清单中统计数值是否一致。 | 需要更正统计数值 |
字段唯一性和一致性 | 校验数据表主键、外键等字段的唯一性,校验相同ID对应的其他信息的唯一性、一致性。 | 重新检查数据逻辑。相同ID对应的字段信息如果不一致,那需要辨别数据真伪,如无法辨别,那么关于该ID数据不可用。 |
缺失值 | 校验字段是否存在空值和空值的占比 | 去掉缺失值比例超过阈值的所有变量,而对于缺失值比例低于阈值的变量,一般采用中位数代替、预测、相关性填充、增加缺失标志等方法处理。 |
异常值 | 校验字段是否存在异常值 | 对数值变量的异常值可使用IQR法 |
尺度一致性 | 判断数据的尺度是否一致,eg:单位 | 修正尺度 |
格式一致性 | 主要对于日期变量,应保持一致的日期格式 | 修正格式 |
数据重复性 | 校验是否有重复 | 先进行去重操作,删除重复数据 |
数据合理性 | 从业务角度判断各个字段取数的合理性 | 从业务逻辑角度进行判断,如无法判断,那么删除该数据 |
数据完整性 | 从行的角度校验数据的完整性 | 解决方法是删除不完整度超过70%的数据 |
6.2.4 特征工程
特征衍生主要包含特征生成和特征变换。特征选择的目标是选择模型最终的输入特征。
(1)特征衍生
候选特征大部分是单一特征,未充分考虑特征之间的交互性。基于此,还需要通过特征衍生的方法生成更多的交互特征。特征衍生的主要方法如下:
- 衍生宏观经济指标等指标。从各类经济报告中衍生出各种宏观经济指标。
- 衍生主题标签属性等指标。通过外部分析报告对业务主题进行标签补充,eg,客户画像
- 标志位补充。eg,增加是否缺失值、是否异常值等标志位。
- 根据值的排序情况进行分组,衍生新的变量。
- 根据值的频率情况进行分组,衍生新的变量。
- 增加聚类标签
- 组合特征。找出最显著的特征,然后进行交叉、相乘或相除,衍生新的变量。
- 把多个因子交叉分组,衍生新的变量,eg,把年龄和性别交叉组
- 特征变换。对原始特征通过函数进行变换,生成新的变量。对于字符变量而言,常见的特征变换方法有One-Hot编码、字符编码、TF-IDF编码和PCA变换等。对于数值变量而言,常见的特征变换法方法有分箱变换、函数变换(函数变换有归一化、三角函数变换、对数函数变换、sqrt函数变换和Box-Cox函数变换等。函数变换的目的之一是降低变量的方差波动)、WOE变换和PCA变换等。
- 字符变量处理。有些字符变量的取值很多,如城市。对于这种字符变量一般有两种处理方式:一种方式是哑元化,如果有N个值,那么会产生N-1个哑变量;另一种方式是对值进行分组,分组的基本原则是让组内差别小,让不同分组间的差别大。
(2)特征选择
判别特征的可用性,然后从候选集中筛选出适合的特征集合。常见的特征选择方法如下:
单变量分析 | 对单变量X和Y进行分析,判断它们是否相关。 |
删除低方差特征 | 首先计算各个特征的方差,然后根据提前选定的阈值,选择方差大于阈值的特征或者提出方差很小的变量。 |
变量重要性排序 | 通过使用决策树算法,将特征平均减少的不纯度作为特征选择的值,然后进行排序,得到变量的重要性排序。 |
模型精度值变换 | 把输入特征的值随时排序,重新计算该特征和因变量之间的预测能力指标R方值(R2_shuff),然后判断新的R方值和原始未打扰之前的R方值(R2)的变化率R2_ratio,即R2_ratio=(R2-R2_shuff)/R2。然后,对R2_ratio进行排序,变量的R2_ratio越小,说明变量的重要性越低。 |
IV排序 | 对哑变量计算IV(信息价值),选择排名靠前的特征 |
计算线性相关性 | 计算特征间的线性相关性,去除相关性非常强的特征 |
业务专家选择 | 根据业务专家的经验选择高优先级的变量 |
6.2.5 模型构建
(1)线性和非线性算法。无论自变量X和因变量Y构成的是一次方程还是多次方程,只要自变量X的参数是线性的,该算法就可以被定义为线性算法,否则是非线性算法。常见的线性算法有线性回归、逻辑回归。决策时、梯度提升树、聚类算法、神经网络等算法是常用的非线性算法。
(2)监督学习和非监督学习算法。监督学习是指训练集中既有自变量X,又有因变量Y,可根据X和Y的数据构建学习算法。分类和预测算法是典型的监督学习算法。废监督学习是指只有自变量数据分到一组,使得组内方差较小,组件方差较大。聚类算法、主成分分析(PCA)和SNA算法是典型的非监督学习算法。
(3)分类、聚类和回归算法。分类算法的因变量Y是分类变量,分类算法主要通过模型的构建预测因变量Y的分类情况,如预测客户是否欺诈。常见的分类算法有逻辑回归、朴素叶贝斯、支持向量机(SVM)、决策时等。聚类算法一般事前没有因变量Y,将相似的数据分在一组,将不相似的数据分在另外一组,如对客户进行分群、对异常点进行归类等。常见的聚类算法有偶K-means、层次聚类、基于密度聚类等。回归算法的因变量Y是连续变量,回归算法提供过模型的构建预测因变量Y的值,如预测股票价格、客户的理赔金额。常见的回归算法有线性回归、回归树、神经网络等。
6.2.6 模型评估
为了有效地评估模型的效果,一般按照某种比例将数据集分为训练集和验证集,训练集负责模型的训练,经验集负责模型的效果评估。评估标准一般分为分类模型评估标准和回归模型评估标准。
(1)分类模型评估标准
分类模型的目标是通过模型的计算将不同的因变量X对应的结果Y分到不同的类别中。常用的分类模型的评估方法主要有准确率检测法、捕获率和覆盖率检测法、F1值检测法、ROC曲线和AUC检测法、KS值检测法和Lift值检测法。
(2)回归模型评估标准
回归模型的目标是通过模型的计算将不同的因变量X对应的结果Y计算出来。常用的回归模型的评估方法有检测法、均方根误差检测法、平均绝对百分比误差检测法、模型的拟合度和区分度检测法。
6.2.7 模型部署,让模型服务化
(1)模型服务化流程
模型服务化的目标是“随时随地高可用,无时无刻强健壮”,线上化模型服务化主要流程如下:
- 完成模型的线上化部署
- 在一般情况下,输入特征部分来自离线数据仓库,部分来自实时的客户数据。需要对两者进行关联和聚合,得到模型输入需要的字段。
- 对于需要预测的客户数据,还需要按照模型对输入特征的要求对输入数据进行合并和预处理,以获得标准化的输入特征。
- 调用部署好的模型服务,得到模型的输出数据。
- 根据模型的输出数据执行事前确定好的策略。
(2)算法即服务性能保障
算法即服务的核心诉求是将算法的建设全流程实现流程化、标准化和服务化。从业务理解、数据准备、数据预处理、特征工程、模型构建、模型评估到模型部署,这些主要环节都通过代码和程序串起来,以服务的形式用起来,从而实现算法的服务化。
6.2.8 模型监控和迭代
对模型的效果要进行实时监控,也要对模型输入进行监控。当发现模型的效果下降服务超过预先设定的阈值时,应及时对模型进行优化和迭代。
6.3 算法即服务须遵循的原则
- 算法即服务需要业务知识的输入,业务理解贯穿建模始终
- 算法不是万能的,有适用的场景
- 要合理的平衡算法的计算性能和效果
- 要优先选择混合模型
- 要尽量实现建模全流程自动化