我们知道一个完整的数据挖掘项目通常包含以下流程(1)业务理解、(2)数据理解、(3)数据准备、(4)数据预处理和建模、(5)模型评估、(6)模型部署应用。而要完成一个数据挖掘任务,必须要具备两方面的技能,技术能力和业务知识。技术能力主要包括数据统计分析能力,算法能力,计算机能力等,业务知识体现的则是对业务的熟悉程度。这两大能力都很重要缺一不可,但是业务知识的重要性却是经常容易被忽视的。今天我们就来具体聊一下,这两大能力是如何贯穿于整个流程并影响建模效果。
拿到一个数据挖掘项目,首先要进行的就是业务理解和数据理解,了解商务背景,明确挖掘目标和建模数据。建模的目的是为了解决业务问题,业务目标是所有数据解决方案的源头,它定义了数据挖掘的主题。只有正确理解了业务才能够明确挖掘的正确方向。例如,在信贷风险预测中,需要预测出高风险的客户群体,那么如何定义历史数据中的高风险客户就很重要,通常我们会认为有违约行为的客户是高风险客户,但是进一步分析之后就会发现有一些客户虽然有违约行为,但只是偶尔一两次的逾期几天而已,通过业务常识可以判断这些客户可能只是忘记还款而违约的,并不是高风险客户。再例如做产品的精准营销模型时,有没有必要通过细分客户群体来建模,又或是区分地域差别来建模。这些都需要充分了解业务才能做出准确的判断。还有,建模数据范围的,也需要有业务知识的支撑才能进行,否则就是大海捞针,效率低下。因此,在这个环节,业务知识能力占主导地位,技术能力会查看数据就足够了。在建模过程中,业务思路上的优化比建模技术思路上的优化更重要,而建模技术思路上的优化又比单纯的建模技巧的优化更重要。
建模目标和数据范围确定好以后,就进入到第二个阶段准备数据。数据准备的目的是建立数据集市或者宽表,主要工作包括选择数据、清洗数据、构造数据、整合数据、格式化数据等。这个环节同样需要用到业务知识,例如建模的数据通常会来自于多个表格或数据源,那么就需要了解各个表格之间的业务逻辑,才能将数据整合到一起,例如 A 表是订单数据,B 表是产品属性数据,C 表是客户信息数据,要整合 3 张表首先要缕清楚他们之间的逻辑关系,如果完全不懂业务是很难缕清楚或者很容易出错的。在数据准备过程中,通常还需要做很多数据汇总,特征提取的工作,例如在原始的订单数据中可能会出现同一用户多个账号,同一账号多个订单,同一订单又包含多个产品的情况,这是也需要对业务有一定了解才能清楚其中的关系。在技术能力方面,需要会一些 ETL 的操作,这件事从 0 开始做并不容易,但大多数情况下都有 IT 部门建设好的数据仓库,所以经常也不需要做。
在数据预处理和建模环节,对技术能力的要求就比较高了,需要涉及到统计学分析,算法能力和调参能力等内容。也正式这部分工作难度比较大,专业人才少,实现困难,才造成很多人误以为数据挖掘是一项纯技术的工作,而忽略了业务知识的重要性。不过令人欣慰的是,这部分技术性的工作可以借助 AI 来实现,例如,当前兴起的自动建模技术就可以自主的完成数据预处理和建模工作。自动建模技术是将统计学家和数学家的数据处理经验和理论融入到软件中,使得软件能够智能的去完成数据预处理,建模型,选参数,做评估等一系列的工作。对于使用者来讲只需要将数据丢进自动建模工具,并且配置好目标,工具就能够自动建出优质模型。即使是没有统计学背景,不了解算法的初学者,或者普通的 IT 程序员都可以通过自动建模技术来建出高质量模型。
模型建好后,能否合理评估模型也很重要,很多时候并不是建不出好的模型,而是不知道什么才是好的模型。在这个环节,技术能力需要了解各种模型指标的含义,例如,AUC, ROC, Gini,Lift,Mse……, 业务知识能力则需要知道如何根据业务目标来选择合适的评价指标。例如某企业希望销售 50 件产品,建立了两个模型来选择待推销客户,混淆矩阵如下,应该选择哪个模型更合适呢?
只考虑准确率,似乎应当选择 A 模型,但这时候我们需要对 75(=50/0.667,预测购买者中有 66.7% 的实际会购买,即精确率)个客户推销才可能卖出 50 件商品;而选择模型 B,则只要对 60(=50/0.833)个客户推销就可能卖出 50 件商品了,推销成本反而降低了。在这里业务目标是销售 50 个产品,因此要基于该目标去选择合适的评价指标,而不是随便指定。
综上,技术能力和业务知识能力是实现数据挖掘任务的必要条件,两者都具备才能建出好的模型。其中对技术能力要求较高的预处理和建模过程,可以借助自动建模技术来实现,但是业务知识的运用则是 AI 难以替代的。
对进一步数据挖掘和 AI 技术感兴趣的同学还可以搜索“乾学院”,上面有面向小白的零基础“数据挖掘”免费课程,或者直接点下面的链接也可以:http://www.raqsoft.com.cn/wx/course-data-mining.html
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。