内容


IBM Intelligent Miner 数据挖掘增强客户洞察力

分群与分类

Comments

概述

本文是 IBM Intelligent Miner 数据挖掘应用系列文章中的第一篇,重点介绍分群和分类挖掘建模。数据挖掘作为商业智能中一个重要的应用,越来越受到广泛的重视,近年来数据挖掘的发展经历了一个从概念炒作到实际应用、冷静思考过程的转变,数据挖掘在许多领域得到了很好的应用,如在电信、银行业中进行客户分群、新业务潜在客户群确定、资费预演、交易量业务量的预测;公安、国家安全部门中的串并案、恐怖线索的关联分析;税务行业中的税务稽核,保险业中的保险欺诈等,使用数据挖掘可以帮助我们分析隐藏在数据背后的规律,从而进行更好的决策。

本文以银行为背景,以客户基本信息数据、客户产品拥有数据、客户行为数据为对象,用 IBM Intelligent Miner 进行数据挖掘建模,展示了数据挖掘在银行客户细分、客户异常行为分析以及客户分类预测中的应用。对于挖掘建模过程中的关键问题,如挖掘算法与精度的权衡、输入数据的字段设计、挖掘结果的应用做了详细的分析与讨论。对于数据挖掘项目的实施,具有一定的理论和实践指导意义。

银行应用场景介绍

应用场景介绍

以一家银行为例,我们拥有客户相关的很多数据,包括客户 ID、年龄、性别、婚姻状况、职业、账龄、储蓄存款户头、是否使用信用卡、平均余额、信用交易数量、借记交易数量等。

在银行日常业务中,我们经常需要回答下面的问题:如何将客户进行细分,便于从中找出最有价值的部分客户?在现有客户中那些客户对银行具有有潜在风险?那些客户与众不同,是否存在商机?那些客户是信用卡业务的潜在客户,如何进行预测?

为了回答这些问题,我们采用数据挖掘中的分群、预测、孤立点识别等方法,基于银行客户基本信息数据、交易数据构建数据挖掘模型,进行客户分群、孤立点识别以及分类预测等挖掘分析。

挖掘建模工具采用 IBM Intelligent Miner,Intelligent Miner 软件是 Infosphere Warehouse 数据仓库软件包中的一个重要功能,它采用 DB2 为挖掘引擎,提供了嵌入式挖掘挖掘解决方案。 Intelligent Miner 主要包含三个重要的组成部分,Intelligent Miner Modeling,提供了数据挖掘建模的各种函数与集成开发的 API ; Intelligent Miner Scoring,提供了对于输入数据测试、打分功能; Intelligent Miner Visualization 提供了数据挖掘模型的可视化功能;

整个挖掘建模过程采用可视化的开发方法,在 Infosphere Warehouse 软件包中的 Design Studio 集成开发环境中进行。建模过程中只需要拖、拉相应的挖掘算子到 Design Studio 画板中,按照一定的逻辑首尾相连就可以构建整个挖掘流程。

数据准备过程

在 DB2 中创建 BANK 数据库以及银行客户信息表 customers,并将数据从文本文件 customer.csv 文件中导入;

db2 create db BANK ;
 create table bank.customers ( 
  CLIENT_ID 	       CHAR(9), 
  AGE REAL, GENDER CHAR(2), 
  MARITAL_STATUS CHAR(12), 
  PROFESSION CHAR(24), 
  NBR_YEARS_CLI REAL, 
  SAVINGS_ACCOUNT CHAR(3), 
  INT_CREDITCARD CHAR(3), 
  AVERAGE_BALANCE DECIMAL(10,2), 
  NO_CRED_TRANS REAL, 
  NO_DEBIT_TRANS REAL 
 ) not logged initially; 

 import from customers.csv of del modified by CHARDEL"" COLDEL, DECPT. 
 insert into bank.customers;

从上面 customer 表的定义可以看出,这家银行的客户信息数据包括,客户 ID、年龄、性别、婚姻状况、职业、账龄、储蓄存款户头、是否使用信用卡、平均余额、信用交易数量、借记交易数量等。

对数据库 BANK 启用挖掘

对数据库启用挖掘的过程实际上是在 BANK 数据库中建立了一系列 Schema 名为 IDMMX 的表,这些表用于保存数据挖掘的模型定义、挖掘结果、执行过程中的警告、错误提示等。采用下面的命令可以对数据库启用挖掘。

idmenabledb BANK fenced dbcfg;

同时将 BANK 数据库配置参数应用程序控制堆大小 APP_CTL_HEAP_SZ 值由“ 128 ”更改为“ 10000 ”,数据库管理器使用的可用专用内存页的数量“ APPLHEAPSZ ”的值由默认的 256 更改为“ 1000 ”。

对于数据库中有些敏感数据,涉及到隐私或者机密性质的数据,我们不希望对其进行挖掘,则可以不开启其挖掘功能。已经开启挖掘的数据库,可以通过 idmdisabledb 命令进行关闭。如上面的 BANK 数据库可以自行如下命令将其挖掘功能关闭。

idmdisabledb BANK;

客户分群模型

Design Studio 挖掘建模

通过客户分群,将海量客户分成一个个有限的群体,然后通过刻画每个不同客户群体的主要特征,针对这些特征设计营销策略,来开展营销活动,一方面提高了营销活动的针对性与成功率;另一方面将有限的人力、物力和财力投入到最有可能获得高回报的客户群体当中去,有效地节省了宝贵的营销资源。在 Design studio 中构建挖掘模型,如下所示。

图 1. 客户分群数据挖掘流
图 1.客户分群数据挖掘流
图 1.客户分群数据挖掘流

一个最简单的分群挖掘流由下面几个部分组成:首先需要一个输入节点,用于定义数据来源;后面紧跟一个属性选择节点,用于修改挖掘字段类型、名称等,再加上一个分群节点和挖掘可视化节点,就构成了整个完整的分群挖掘流程。

挖掘结果分析

分群挖掘结果如图 2 所示。客户数据被分为 7 个群体,每一行代表一个群体,每一行中的每一列分别代表该群特中的客户特征分布和所有客户的分布比较,对于年龄,账户余额等连续型的字段采用柱状图来表示其分布;对于性别 / 职业等离散型的字段采用饼状图来表示。通过对比本群体的客户特征和所有客户群特征之间的差异,可以刻画出该群体的特征。

图 2. 分群数据挖掘结果图
图 2. 分群数据挖掘结果图
图 2. 分群数据挖掘结果图

经过特征刻画步骤,每一群的特征可以用简练的语言描述出来,如下图 3 所示,

图 3. 客户群体特征刻画
图 3. 客户群体特征刻画
图 3. 客户群体特征刻画

有了每一群体的主要特征刻画,市场营销人员可以根据这些特征,开发出具有有针对性的营销策略,开展有的放矢的营销活动。如群体 1 主要特征为:

MARITAL_STATUS 主要为 single,INT_CREDITCARD 主要为 NO,PROFESSION 主要为 inactive,NO_DEBIT_TRANS 为低,NO_CRED_TRANS 为中,SAVINGS_ACCOUNT 主要为 NO,AVERAGE_BALANCE 为中,NBR_YEARS_CLI 主要为 1.0,AGE 主要为 24.0,GENDER 主要为 M

可以看出,群体 1 中客户大多数为未婚,而且大多数没有信用卡,因此信用卡交易很少,年纪也比较年轻,性别主要为男性。根据这些特征可以将这一群体概括为,单身男性一族,对于这些人可以开发一些针对性的业务,如向其中信用等级较高的客户推销信用卡业务。

而对于群体 2 其主要特征为:

GENDER 主要为 M,MARITAL_STATUS 主要为 married,INT_CREDITCARD 主要为 NO,PROFESSION 主要为 worker,NO_DEBIT_TRANS 为中,NO_CRED_TRANS 为中,NBR_YEARS_CLI 主要为 26.0,AGE 主要为 50.0,SAVINGS_ACCOUNT 主要为 NO,AVERAGE_BALANCE 为中

这部分人大多数已婚,而且年龄和账龄都很长,而且大部分为工人。据此可以将该群体概括为“工薪一族”,这部分人一般比较稳定,是银行“保存量”的重要力量,可以向他们推销一些理财业务,提高存量业务的收入。

分群模型中的关键问题

分群模型中经常会遇到一些问题,如群体数目、分群输入表中的字段、算法如何选择等,下面就这些问题做一些阐述。

群体数目的选择

在分群模型中经常遇到一个问题,分多少个群如何确定?一般来说群体数目需要在分群中预先指定,如果群体数目过小,各个群体之间会发生重叠现象,群体之间特征模糊,群体内客户相似度差异大,导致分群质量较差;群体数目设定过大,群体间客户差异性小,客户特征难以刻画,失去分群的实际意义。因此根据数据分布选择合适的群体个数尤为重要。群体数目的选择没有一个放之四海皆准的法则,往往要根据实际数据,凭借经验,循环反复来确定。通常会设定一个奇数个群,如 5,7,9 等,从空间拓扑学来看,奇数群体代表了一种空间稳定性,就像三只腿的凳子要比四只腿的凳子要稳定一样。实际操作中可以先选择 7 个群,然后看看群体分布,是否将数据分开,各个群体之间是否大致均匀,有没有太多孤立点,然后根据需要将群体个数调整为 5 个、或者 9 个,不断反复,直到最终得到满意结果。

IBM Intelligent Miner 中提供了一种基于属性分布的算法,Distribute Based Algorithm,可以根据样本分布自动决定群体个数,简化了挖掘模型中的选择。

分群字段设计

分群模型中字段的设计好与坏,直接影响分群模型的质量,在字段设计中应遵循以下原则:

其一,包含客户基本信息、价值、行为信息数据;分群中的客户个人信息,概况一下可以分为客户基本信息,如年龄、性别、职业、学历、住址、拥有银行业务的种类等等;客户价值信息包含客户使用银行业务的费用、存款多少、消费额度等和钱相关的属性;行为信息则指客户使用业务的频繁程度。客户基本信息决定了客户的自然人特征,价值信息反映了客户给银行带来价值的高低,行为信息则反映了客户和银行交互时的活跃程度。这三者全面改概括了客户不同侧面的特征。

其二,尽量采用能够反映客户动态变化的信息数据;少用静态数据;客户实际的交易数据一般不适合拿来分群,它只能反映那一时刻客户的特征。可以多用一些如时常、趋势、占比、频次等能反映客户动态特征的指标来用于分群,如客户这个月相比上个月、这三个月平均值相比前三个月的平均值、这六个月以来的平均值相比前六个月的平均值等。

其三,合理决定字段个数;过多的分群字段会使模型变得复杂,如果想使分群群体个数较少,可以适当减少分量变量,反之可以增加总量变量。

分群算法的选择

分群算法有很多中,各个不同的挖掘软件都提供了不只一种算法供用户选择,常用的分群算法包括 Kmeans,Neural netwrok,DBSCAN 等。同一个数据集,不同的算法可能会得出不同的分群结果,那么如何来进行选择呢?我们需要对各个不同算法的优缺点以及适用情况有一个大概的了解,如 KMeans 算法是一种基于空间距离度量的算法,数据集中的孤立点会对模型有很大的影响,但 Kmeans 算法设计简单,很适合来做并行的工作,另外基于 Kmeans 算法运算速度很快,对于海量数据的分群有着很大的优势;有些算法如 DBSCAN 基于空间样本分布(密度)的算法,数据集中存在的几个孤立点不会影响样本的密度分布,因此它对空间中孤立点具有很强的鲁棒抗干扰性,另外它还可以发现任意形状的群体边界,如高端价值客户群体中还可能完全嵌套高流失风险的客户子群(高价值高风险群体),采用基于密度分布的算法就能将这些群体找出来。还有些算法如 IBM Distribute Based Algorithm 能自动发现群体个数,方便我们来做选择。

客户异常分析模型

有时候我们希望能够从大量的客户中找出一些相对表现异常的客户,这些客户的特征和行为和其他大部分的客户不太一样,这些客户可能会给银行带来额外的收益,或者存在较大的风险。采用数据挖掘中的异常分析(有时称为孤立点识别)方法可以从大量数据样本中识别其中的孤立点、数据噪声。

孤立点识别实际上是聚类方法中的一种特殊情况,在聚类分析中我们更多关注分布均匀、大体相似的各个样本点;但在孤立点识别则刚好相反,它关注数据集中的异常点,或者说分布比较特别的点。

通过孤立点分析,一方面可以找到数据集中的异常点,帮助银行规避可能发生的风险;另一方面,就像一句话说的那样,“一个人的噪声,很有可能是另外一个人的信号”,客户数据中孤立点很有可能就是最有价值的客户,孤立点识别分析可以帮助企业识别潜在的营销机会,获取意想不到的收益。

Design Studio 挖掘建模

在 Design studio 中构建一个最简单的异常点分析的模型,包括一个输入节点、一个孤立点识别节点和一个输出目标表节点。

图 4. 异常分析挖掘建模
图 4. 异常分析挖掘建模
图 4. 异常分析挖掘建模

挖掘结果分析

运行挖掘模型,挖掘输出为一张表,它在输入表的基础上增加了两列,一列代表生产类的标号,另外一列代表样本偏离整体分布的程度,输出结果如下表所示,按照样本偏离度的程度降序排列,

图 5. 异常分析结果
图 5. 异常分析结果
图 5. 异常分析结果

从上面的图中可以看出,前两行的客户的偏离度为 7506,表明这两行是整个数据集中存在显著差异的两行,通过进一步的分析可以发现这两行客户存在如下的特征,

职业属性中两人分别为工人和中介 ( worker and intermediate ) 性别相同为女性 
	年龄分别为 66 和 64 岁

一般来说,在 66 岁和 64 岁已经到了退休的年龄,但他们还有着工作,因此很有可能这些客户的信息已经过时,需要进行更新。

接下来的 4 个女性客户,年龄大概在 30 左右,并且要么是离婚要么分居而且都是新客户,账龄都很短。这些客户可能是一些保险产品的最佳潜在群体。同样接下来偏离度为 3002.4 的 10 个客户,这些客户有着共同的特征,年龄都大于 60 岁,因此这些客户代表退休的人群。

客户分类模型

分类是一种重要的数据挖掘模式,在分类模型中我们将样本分为两类,一类为 YES,另外一类为 NO 。分类问题大部分可以描述为这样的问题,如预测客户是否在近期会发生流失、预测客户是否会发生欺诈、预测客户是否会使用某种银行产品,YES 或者 NO 两类答案是分类问题的典型特征。当然,我们也可能遇到这样的情况,预测客户的信用等级,但客户信用等级通常包含多个值(极高、高、一般、差、很差),对于这样的问题我们可以通过将其分解,构建多个二类分类器来解决。

分类模型构建

在本例中我们以银行客户数据为例,预测一个客户是否会使用信用卡,并且分析一下客户使用信用卡的主要决定因素。在 Intelligent Miner 中构建分类数据挖掘模型,如下所示,

图 6. 分类挖掘建模
图6. 分类挖掘建模
图6. 分类挖掘建模

在介绍上面的流程之前,我们先介绍一下分类挖掘的一些基本概念,一般一个典型的分类挖掘包含如下几个步骤:

  • 训练(Training)过程,在一部分已知类标号的样本 ( 样本中包含客户是否使用信用卡的信息 ) 训练挖掘分类器,用于得到分类挖掘模型。
  • 测试(Testing)过程,用一部分已知类标号的样本对挖掘模型进行精度测试,用于得到模型的精度。
  • 预测(Predicting)过程,用得到模型对未知类标号的样本(大量不知道是否会使用银行卡的客户)进行预测,得到预测样本的类标号,在本例中预测客户是否会使用银行卡。

在本例中,假设银行客户数据记录为 15000,其中有 2000 个使用银行卡的客户,选取这 2000 个使用银行卡的客户在加上 2000 个没有使用银行卡的客户组成训练和测试的样本集。也就是说 4000 个客户用于建模,剩余 11000 个客户是要用来做预测。 4000 个用于建模的客户中,根据经验随机选取其中 1000 个客户训练,剩 3000 个用来做测试。整个模型包含以下三个挖掘过程,

  • 训练过程:“ BANKCUSTOMER 节点- Select List_09 节点― Sampler_027 节点― Random Split_030 节点― Predictor_02 节点― Visualizer_014 节点”,包含 1000 个样本。
  • 测试过程:“ BANKCUSTOMER 节点- Select List_09 节点― Sampler_027 节点― Random Split_030 节点― Tester_016 ― Visualizer_016 节点”,包含 3000 个样本。
  • 预测过程:“ BANKCUSTOMER 节点- Scorer_021 节点― CLASSFICATIONRESULT 节点”,包含 11000 个样本。

分类结果分析

运行挖掘,最终得到分类器和模型精度以及有关模型质量的描述。在本次分类挖掘中选取决策树挖掘算法。

从下图中可以看出分类器精度为 0.736 。通常来说,挖掘算法的精度和复杂度是一对不可调和的矛盾,过高的精度要求必然会导致模型变得非常复杂,在训练时,精度可以达到 90% 以上,但是在对未知样本的预测过程中,预测效果却非常差,这被称为算法的泛化能力差,或者说模型对训练样本发生过拟合。一个好的分类器必然是在算法精度和复杂度中的作出的最佳选择。上升到理论高度,好的分类器是在结构风险(复杂度),经验风险(精度)中的寻找平衡,最近一种新的数据挖掘算法支持向量机 (Support Vector Machines,简称 SVM),就是在这一理论指导下出现的一种新的分类算法,它有效解决了过学习,欠学习,维灾难,非线性等一系列挖掘难题,在很多领域得到很好的应用。通过上面的分析,总之我们在构建挖掘模型时不必片面强调算法的精度。

图 7. 分类精度
图 7. 分类精度
图 7. 分类精度

衡量分类器精度可以用混淆矩阵(Confusion Matrix)来表示,如下图所示,混淆矩阵中可以清楚看到分类器对两类样本的分类精度。粗体字体组成的对角线的值越大,同时另一对角线值越小,表明模型分类精度越好,反之就越差。

图 8. 分类中的混淆矩阵
图 8. 分类中的混淆矩阵
图 8. 分类中的混淆矩阵

衡量模型对未知类标号样本的预测能力,可以用增益图 (Gain)来表示,在 Gain 图中,对角虚线代表随机模型,蓝色的曲线代表本次决策树模型,而虚的折现代表最理想的模型(理论情况下,所能得到的最好)。蓝色曲线和 X 轴围成的面积大小代表了模型的泛化能力,面积越大,代表模型对未知类标号样本的预测能力越好,反之越差。

图 9. 分类挖掘中的增益图
图 9. 分类挖掘中的增益图
图 9. 分类挖掘中的增益图

在分类模型的构建中,有时候很难决定训练数据的字段,究竟是年龄、性别,还是客户的职业以及其他的字段对客户使用信用卡起决定作用?我们凭主观很难去判断,在 Intelligent Miner 分类结果中给出了字段重要性影响图,将影响预测目标的因素,按照重要程度有高到低进行排列。如本例中,给出你影响客户是否会使用银行卡的因素包括在线交易(ONLINE_ACCESS),年龄 (AGE),平均余额(AVERAGE_BANLANCE),账龄(NBR_YEARS_CLI)性别 (GENDER),关联账户 (JOINED_ACCOUNTS),职业 (PROFRSSION),其中起决定因素的是在线交易(ONLINE_ACCESS),重要程度占到了 35% 以上,实际上我们也能理解,一个人如果有在线交易,进行网上交易,那么他很有可能拥有一张银行卡。

图 10. 分类挖掘中的字段重要性
图 10. 分类挖掘中的字段重要性
图 10. 分类挖掘中的字段重要性

决策树分类模型的应用

从决策树分类模型中任意选择一条从根节点到叶节点的路径,经过修剪之后就可以构成一条决策规则,决策规则有点类似于关联规则,只不过是在特定条件下的规则,在本例中,决策规则可以回答下面的问题。

如果客户使用(不使用)银行卡,那么这些客户最显著的特征是什么?
如果一个客户具备了这些特征,那么他有多大概念会使用(不使用)银行卡?
图 11. 决策规则的抽取
图 11. 决策规则的抽取
图 11. 决策规则的抽取

在 Design Studio 中使用 Rules Extractor 规则提取节点从模型中提取决策树规则,将结果写到一张表中。规则列表如下,其中包含每一条规则的置信度及其规则。

图 12. 决策规则
图 12. 决策规则
图 12. 决策规则

如第一条规则,如果 ONLINE_ACESS=YES,那么客户使用银行卡。这条规则的置信度为 0.843 。有了这条规则,我们就可以在客户群体中查找有在线交易行为的,向他们推荐信用卡业务,因为这些人有很高的概率使用银行卡。

总结

本文以银行业为背景,以客户数据为对象,以 IBM Intelligent Miner 为挖掘工具,展示了数据挖掘在银行客户分群、异常行为分析以及客户分类中的应用。并且分析了数据挖掘建模过程中的关键问题,如挖掘算法与精度的权衡、输入数据的字段设计、挖掘结果的应用分析等。对于指导数据挖掘项目的实施,具有一定的理论和实践指导意义。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=436067
ArticleTitle=IBM Intelligent Miner 数据挖掘增强客户洞察力
publish-date=10152009