算法/建模业务实操逻辑pipeline

上了NUS MSBA的课之后发现,很多新入门数据建模的人其实对于算法、模型之类的信息很好获取,但是大部分人却很难知道整个建模的过程到底是怎样,因此在采访了一位做算法的朋友后,整理一个算法/建模pipeline的采访纪要,供大家参考。

*不适合大数据架构的建模

1.整体pipeline

找到数据 -> 采样(如果数据多的话)-> 训练2-3个模型 -> 解释模型 -> 迭代模型

2.采样

2.1 本质:让采样样本的所有干扰因子的分布跟总体数据的分布相似

2.2 实践策略:让样本的y的分布和总体y的分布相似就好,因为y可以当作是已经代表了重要的x的信息,所以实践上用y的分布来做采样效果还挺好的(stratified sampling)

E.g.对于多分类问题,让样本中每个类别的比例接近总体样本的类别比例

*stratified sampling: https://www.investopedia.com/ask/answers/032615/what-are-some-examples-stratified-random-sampling.asp

3.训练2-3个模型

3.1 模型选择

3.1.1 机器学习学派(常用于实践):直接选择2-3个该领域比较常用的模型,然后看哪个结果好就选哪个模型

Q:那每个模型都训练的话,会不会computational expensive? A:用采样解决这个问题

3.1.2 统计学派:明确每个模型的前提假设,然后看样本数据/现实业务符合哪个模型的假设,就选择哪个模型作为初始的尝试模型

*实践中的两点阻碍:(a).难以验证数据是否满足模型的前提假设,比如一些模型是没有强假设的,特别是在Deep Learning等领域,这些领域都是gradient descent等的弱假设; (b).满足假设前提和模型表现良好是两件事情,他们不一定强相关

3.2 hyper parameter的调整

3.2.1 常见方法:随机,穷举

随机比较常用,表现也不错。一般随机数的范围就看经验

3.2.2 智能调超参数的方法:Neural Architecture Search(NAS), Meta-learning; Auto-ML

4.解释模型

4.1 怎么解释不同的模型feature importance不同:其实就是通向答案的两种解题思路,都是可行的,直接看最终的预测结果好不好就行了。

*这种现象背后可能代表feature之间有相关性,所以出现的不同的feature importance其实都是指向同样的important features

4.2 怎么判断join feature的importance?会不会有单个feature没用,但是features结合起来就变得很有用的情况?(如图片的单独的一个pixel基本没用,但是多个pixel的组合可以判断很重要的信息)

增加交互项:实践中根据domain knowledge比较常用,不会增加所有可能的交互项组合,因为这样数据量会指数型上升

数据降维可能是一个探索方向:因为数据降维在某种程度上就是在融合features了

4.3 不同模型表现相近怎么办:多测几次

5.迭代模型

5.1 pipeline:找到预测误差较大的样本数据👉看这些样本是否有没提取到的features(或者找到表现差的原因)👉在模型里增加新的features

5.2 根据5.1的pipeline,其实不同的样本可以做差异化的模型策略(这也是一些ensemble模型和Deep Learning的多专家模型可以实现的,多专家模型即训练一个“专家模型”去选择某个数据要用什么模型)

*实践上,设计多个差异化的模型策略不如直接加features,因为会有数据量不够的问题

**超参数不太好迭代,因为每个超参数配置下,都会有不同的最优参数配置,因此两者只能选一来做迭代;同时超参数的最优选择又很玄学,因此一般都迭代参数

5.3 常见的模型Performance metric:

ROC-AUC, Accuracy, Precision, Recall

基于业务数据构建Revenue的检验标准

Robustness Test

Sensitivity Test: 加入一些极端的数据,或者加入一些有noise的数据,然后看看模型的表现。

Previous
Previous

怎么设计月报指标体系 - 月报、周报、日报到底在解决什么问题?

Next
Next

成都咖啡厅地图爬虫项目