阅读笔记《一个数据分析师眼中的数据预测与 监控》

角色:数据分析html

目标:预测算法

内容: BI 平常工做中的数据分析方法以及在统计模型 搭建过程当中的注意事项。shell

1 非时序预测服务器

  在机器学习和深度学习大行其道的当下,一个好的预测模型不在于应用了多么高深的算法, 而在于如何从简单的模型开始进行尝试,兼顾业务逻辑,基于某个 baseline 来控制时间和应 用成本。机器学习

  对于非时序数据或是无明显趋势、季节特征的时序数据,回归和树模型是目前主流的预测方法。 分布式

  广义线性回归,如线性最小二乘和 logistic 回归,因其模型的可解释性,从诞生之日至现在 依旧发挥着其不可替代的做用,如金融风控中评分卡的开发,医学中对患者生存期限的研究 等。函数

  为了处理非线性问题,依托着分布式计算,又孕育出树模型和基于树的 boosting 模型,如 Decision Tree 和 Xgboost,以及后续的 LightGBM 和 CatBoost 等。学习

  考虑到线性回归和 logistic 回归在处理非线性问题上的短板,以及为了适配模型需对数据作 大量的预处理,如填补缺失,防止共线性等,咱们天然偏向于树模型来作分类和回归预测, Xgboost 即是一个很好的选择。 R 和 Python 都提供了 xgboost 的接口,Python 不只拥有 xgb 的原生接口,更有适配 sklearn 的接口,便利了参数的网格搜索。编码

  

对于预测任务,咱们的应用场景主要分红两类:

  离线(T+1)预测,主要针对小批量数据,经过 shell 脚本调用 R 或 Python 的服务器, 返回结果。 设计

  实时预测,因为线上预测须要实时响应,如在毫秒级内返回模型预测值,跨平台跑模型 并不能知足要求。这就须要将模型文件打包成 PMML (预测模型标记语言-Predictive Model Markup Language,简称PMML,https://www.cnblogs.com/pinard/p/9220199.html)文件供 Java 调用,响应速度极快。

应用 Xgboost 时:是否对分类变量作了正确的编码。

  1)xgb 分类器只接受数值型变 量,任何的字符型变量都需转换成数值型。 

  2)分类器默认数据是连续且是有序的,2 必定比 1 大。 但无序分类变量的特征值之间 是没有可比性地,好比变量“城市分类”,其特征值分为:一线城市,新一线城市,二线城 市,其余城市。若是将其编码成(1,2,3,4),分类器便会误解为二线城市大于新一线城 市,事实上特征值表明的仅是一个类别,不可相互比较。 

解决:

  对此类变量采起独热(one-hot)编码,每一个特征值都做为一个新的衍生 变量,每一个衍生变量都是一个二元(0/1)互斥特征,这种编码方式充分考虑了分类变量每 个特征值的独特性。固然,若是特征值过多,特征矩阵也会过于稀疏,此时可基于业务逻辑 和数据分布对特征值进行分组处理。 

 

模型调参:为调参的目的不只在于得到模型提高, 更在于经过屡次实验,基于几率确保模型参数的稳健性。 

在实时预测模型中,打包的 PMML 文件不只要包含模型文件,还要包含数据的预处理过程, 这就须要借助管道(Pipe)将原始数据的处理过程(如编码,标准化,正则化等)和分类器 的训练过程串联,再将管道自己打包成 PMML 文件。 

  恼人的是,管道一体化的过程限制了特征工程中的个性化发挥,接口提供了一些简单的数据 转换函数和自定义函数功能,但这远远不够。此外,网格搜索过程当中参数的赋值方式也略有 改变。最后,特征重要性的可视化也并不友好,缘由在于管道中的数据预处理掩盖了原有的 特征名称。

  管道中的网格搜索还需注意:假设经过 sklearn 接口预先定义了分类器,后利用管道包装了 数据预处理过程和分类器,那么在网格搜索时,参数赋值相比传统方式将有所改变

(上面2段还不能理解)

2 时序监控与预测 

  时序监控,主要仍是针对各业务指标的异常值检测以及模型上线后的稳定性检测。 

 业务指标的异常检测可能是单变量的检测,而说起单变量异常检测,首先想到的即是 3 sigma 原则。和线性回归中的极大似然估计相似,3 sigma 准则的应用前提需假设原始数据知足或 近似知足正态分布,而实际数据每每具体必定的偏态性。做为数据科学家,切莫不假思索的 去应用惯用的准则,而应从数据的分布出发找到合适的途径来分析数据,好比对偏态的数据 采用 Box-Cox 转换。

  其次,业务指标的监控是个双重任务,一是要及时发现数据中的异常,二是要对将来一天或 是一段时间进行预测。若是能找到一个统计模型同时处理这二重任务,问题会显得简单多, 可一个特定的模型每每很难适应多个场景。 

。。。

  若是专一于预测的高精度,Prophet 模型是一个不错的选择。模型经过 Fourier 转换可分解 多周期序列,且在趋势处理上也有了新的创新,好比考虑环境和系统的承载力,提出阻滞增 长和分段线性增加的想法。 

结束:

  数据分析与挖掘离不开统计知识和算法设计,不一样场景下的问题解决方案各有不一样。数据分 析师不只要有良好的知识素养,也要深谙业务背景,更缺不了工程师团队的付出。

相关文章
相关标签/搜索