「」无处不在的流计算到底是什么?终于有人讲明白了(附导图)( 二 )


诸如此类的问题 , 要么可以通过黑白名单 , 要么能够通过特定的规则计算而得到答案 , 实现起来相对简单 , 所以我们将这类特征计算称之为单点特征 。
3. 时间维度聚合特征计算
相同设备的1小时内注册事件次数、相同银行卡号的7天交易事件次数、过去30天内同一IP段上交易金额、过去1分钟高温事件的次数、过去5分钟日志告警事件的次数……
诸如此类特征在诸如风控、预警、监控等各种场景都非常广泛的应用 。 分析不难发现 , 这类特征都有个共同特点 , 它们均需要在时间维度对数据进行聚合运算 。 因此 , 我们称这类特征为时间维度聚合特征 。
4. 关联图谱特征计算
除了时间维度的聚合分析外 , 我们还经常进行“空间”维度的聚合分析 。 不过这种分析有个更专业的名字 , 即“关联图谱”分析 。
比如在一些风控场景中 , 我们需要计算用户账户使用IP的个数、同一手机号码发生在不同城市的个数、同一设备上关联用户的数目、同一用户关联设备的数目、同一推荐人推荐的用户数等特征 。
以设备关联用户数为例 , 如果某个设备上注册的用户很多 , 那么它的风险就比较高 , 毕竟正常情况下我们都只会用自己的手机注册自己的账号 , 而不会是帮其他几十、上百人注册账号的 。
5. 事件序列分析
数据流中的数据不是单纯在时间上有着先来后到的关系 , 而是在数据和数据之间也有着联系 。
考虑用户在手机上安装新APP的过程 , 它可能是先点击了某个广告链接 , 然后下载并安装了APP , 最后成功注册了账号 。 从“点击”到“下载” , 再到“安装”和“注册” , 这就完成了一次将广告转化为用户的过程 。
再比如在网络欺诈识别场景中 , 如果用户在新建账号后 , 立马发生大量交易行为 。 那么这种“新建账号”到“10分钟内5次交易”的行为就是种非常可疑的行为了 。
诸如此类从数据流表示的事件流中 , 检测并筛选出符合特定模式或行为的事件序列的过程 , 我们称之为复杂事件处理(Complex Event Processing , 简称为CEP) 。 CEP也是流计算经常被用来解决的问题 。
6. 模型学习和预测
随着流计算越来越流行和普及 , 越来越多的原本主要针对离线批式数据的统计和机器学习模型也被用于流数据 。
比如在风控系统中 , 当我们计算好特征后 , 还需要把这些特征输入评分模型进行风险评分 。 根据不同的使用场景 , 使用的评分模型可能是基于规则的模型 , 也可能是基于机器学习的模型 。 传统的机器学习模型主要通过离线训练而来 , 但现在越来越多的模型会直接基于流数据在线训练和更新 。
再比如在异常检测应用中 , 我们会在线统计并估计变量的分布参数 , 然后根据训练出的分布模型判断变量之后的取值是否属于异常 。 这种同时在线更新和预测的做法 , 在流计算应用中也越来越常见 。
03 流数据状态和流信息状态
在流计算系统中 , “状态”是非常重要的方面 。 甚至从各种开源流计算框架的发展历史来看 , 我们会发现大家对实时流计算中的“状态”问题也是一点点逐步才弄清楚的 。
关联操作中临时保存的窗口数据、实现时间维度聚合特征、关联图谱特征、CEP中有限状态机、统计或机器学习模型的参数估计 , 实时流计算系统需要的最主要的几个计算目标 , 无不与“状态”有关 。 但 , 这些状态是有区别的!
我们将流在执行过程中涉及到的状态 , 分为两类:流数据状态和流信息状态 。