完成一个预测建模项目一般需要多长时间?

为了回答这个问题,我们先来了解一下建模的流程,通常一个完整的数据挖掘项目包含以下流程(1)业务理解、(2)数据理解、(3)数据准备、(4)数据预处理和建模、(5)模型评估、(6)模型部署应用。这个流程的操作性很强,也是业界公认标准。

..

业务理解的主要工作有需求调研,了解商务背景;明确业务目标和成功的标准。数据理解和业务理解一般是同时进行的,主要内容包括确定建模所需要的数据,描述数据,探索数据,检验数据质量,明确数据挖掘目标和成功标准。这两个阶段的主要任务就是明确挖掘目标和建模数据,目标和数据都明确以后就可以开始着手准备数据。

数据准备的目的是建立数据集市或者宽表,主要工作包括选择数据、清洗数据、构造数据、整合数据、格式化数据等等。如果企业的数据仓库建设比较完善,那么这个步骤的工作就非常简单,只需要做一些数据筛选,表的的关联工作即可。反之,如果数据都是一些非常原始的数据比如日志数据、流水数据,数据准备这部分就比较耗费时间和精力了,需要做很多数据汇总,特征提取的工作。

数据预处理和建模,这个环节是整个项目中含金量最高,难度最大的部分。不同的变量、数据类型、分布情况,对应的预处理的方式就不同,需要选择什么样的建模方法,参数如何调优,如何构建模型都是要考虑的问题。主要工作有:样本选取,确定训练样本、测试样本和验证样本、数据预处理、模型算法技术选型、筛选变量、模型训练、模型测试等。还需要强调两点:(1)数据预处理可能会花费大量的工作时间;(2)预处理和建模过程并非一次性执行完毕就大功告成了,需要不断的迭代优化,才能获得比较理想的结果。

模型评估,是对模型进行较为全面的评价的过程,计算模型的各种指标,比如 AUC,Gini,KS,Lift,模型稳定性等等,然后就是进行模型的业务应用测试,判断是否实现商业目标。部署应用就是把数据挖掘的成果部署到商业环境,应用于生产活动。

从数据挖掘的项目流程可以看出,建模时间和企业的数据情况、业务问题和模型复杂程度以及建模师的水平都密切关系。不过,即使数据仓库平台已经建设的很好的情况,即不再考虑数据准备的时间,仅仅关心建模本身的时间,对于较简单的目标任务,通常也需要两到三周的时间,延到几个月的建模任务也都是很常见的。

为何仅建模本身就要花费两到三周的时间呢?

一方面是预处理,预处理是一个耗费时间但却非常值得的投入。例如,5% 的顾客没有指定年龄,是整体忽略该变量,还是忽略这部分有缺失的样本,又或者是将缺失值补充完整(使用平均值填充还是中位数填充又或者更复杂的方法的填充),或者是训练一个带这个特征的模型,再训练一个不带这个特征的模型。同样是缺失值处理,当缺失率为 90% 时,是否还采用相同的处理方法呢。再例如,对于一些高基数的分类变量如何处理,数据中的噪音如何处理等等。这些都需要建模师结合自己的知识和经验反复的去调试。

另一方面,模型构建过程也会很耗时。选择什么样的算法,一种算法还多种算法,算法的的初始参数如何配置,如何去寻找最优解等等,都是需要不断调试的。正如我们所说,预处理和建模过程并非一次性执行完毕就大功告成了,而是需要不断的迭代优化,直到得到一个比较理想的结果,过程中做到一大半,推倒重来的事情也是常有。

可以说建模过程既是一个高大上的脑力劳动也是一个累人的体力活。在这种情况下几乎不可能实现批量建模,通常一个项目就只能建立一个模型,这个模型要尽量有更广泛的应用范围。这样做其实会导致模型的适应能力下降,例如,预测房价,全国都用一个模型的效果通常不如分地区去建模适用性更好;再比如,精准营销模型,不同的产品,不同层次的客户群体,消费特点是不同的,显然针对性的建立多个模型会使整个营销过程更加精准。

不过令人欣慰的是,随着 AI 技术的发展,有一些智能化的工具是可以帮助我们提高工作效率的。自动建模技术就是一种能够自动实现数据探索、预处理、模型选择、调参、评估一系列流程的技术。借助自动建模工具,数据分析人员只需要完成业务理解,数据准备过程,剩下的需要反复迭代进行的建模过程尽可交给工具来完成,无需再手动进行。采用自动建模技术,能够将几周的建模时间缩短为几小时甚至几分钟,几个月的建模时间不复存在,可以大幅度的提高工作效率,减轻工作量。而且,建模过程变得简单且很快以后,批量建模就不再是问题,一天就可以建多个模型,每个模型可以只适应一个局部或者一个小问题,批量的模型组成一个模型体系就可以有更强的适应能力。此外,自动建模技术对人员要求也降低不少,不再需要受过专业训练的数据科学家,普通的程序员都可以借助工具来完成数据挖掘工作。

对进一步数据挖掘和 AI 技术感兴趣的同学还可以搜索“乾学院”,上面有面向小白的零基础“数据挖掘”免费课程,或者直接点下面的链接也可以:
http://www.raqsoft.com.cn/wx/course-data-mining.html