基于数据挖掘的商业银行异常客户检测研究
来源:用户上传
作者: 王晓慧 王 璐
[摘要] 商业银行面对众多的客户时,需要识别其中的异常客户,以规避其风险。本文介绍了发现异常数据的四种孤立点检测方法,并提出了基于距离的k-medoids聚类算法与遗传算法结合的孤立点挖掘算法。最后应用该算法分析信用数据集,挖掘其中的异常数据,识别异常客户。
[ 关键词 ] 异常客户 孤立点检测 k-medoids算法 遗传算法
国内大多数商业银行都已拥有自己的数据集中业务平台,数据集中以后,商业银行建立了庞大的数据仓库,实施了对经营信息、客户数据的有效存储,紧接着商业银行就迫切需要从这些海量的数据当中挖掘出高价值的信息资源,从而精确的把握商业竞争、客户动态等实时信息,以便实施具有针对性战略。面对数量庞大的银行客户,如何应对随之带来的风险,成为商业银行客户关系管理必须面对的一个问题。因此,本文将异常客户检测(Exceptional Client Distinguish,ECD)作为研究对象,利用数据挖掘的思想和方法,对异常客户的风险进行预警。
一、异常客户检测
客户关系管理即为吸引并保持有经济价值的客户,驱逐并消除缺乏经济价值的客户。识别异常客户,一方面可有效地驱逐和消除风险,另一方面可以避免将正常客户误判为异常客户,吸引并保持有经济价值潜力的客户。
目前,异常客户检测技术主要还是基于数据特征匹配的方法。目前存在两个缺点。首先,总结异常客户特征主要靠专家手工完成,耗费人力物力;其次,所需时间较长,错过最佳挽留时机,异常客户造成的危害就无法减少。
异常客户反映在数据上,就是异常数据。Hawkins给出了异常的本质性定义:异常是在数据集中与众不同的数据,使人怀疑这些数据并非随机偏差,而是产生于完全不同的机制;Knor和Ng给出了基于距离的异常定义:数据集S中的一个对象O,如果它满足下列性质:数据集S中至少有p*100%的对象与O的距离大于距离D,则对象O称为DB(p,D) - 异常 。
二、孤立点检测
发现异常数据,孤立点检测是个行之有效的方法。孤立点(outlier)是数据集中的小部分数据对象,这一小部分对
象和数据中的一般行为或数据模型有着明显的不同。孤立点挖掘分为两个子问题:在给定的数据集中定义什么数据可以认为是不一致的;找到一个有效的方法来挖掘孤立点。
孤立点在某种尺度下与其他点不同或不一致。孤立点可能是由于度量或执行错误导致的。许多数据挖掘算法试图使孤立点的影响最小化,或者排除它们。然而,一个人的噪声可能是另一个人的信号。这样的点通常包含了一些重要的隐藏信息。例如,在欺诈探测中,孤立点可能预示着欺诈行为。
目前孤立点挖掘算法主要有四种:统计学方法、基于距离、基于偏离和基于密度的方法。
基于统计的方法主要应用于科研计算,这主要是因为这种方法必须事先知道数据的分布特征,
从Knorr和Ng开始开始研究采用无需任何参数的方法,并提出使用数据点到其最近邻居的距离和的方法作为异常的量度标准。虽然距离是一种发现孤立点的有效的无参数方法,但需要耗费时间来计算距离。
A.Arning和P.Raghavan提出了基于偏离的孤立点探测的线性方法,但基于偏离的方法中的序列异常的概念并没有得到普遍的认同。这是因为序列异常在概念上仍然有一定的缺陷,遗漏了不少的异常数据。
基于密度的方法只关注对象周围临近的密度(最近邻居数)。关于它周围的邻居具有高密度邻居的数据点不是孤立点,具有低密度邻居的数据对象可能是孤立点。
上文中介绍了当前各种孤立点检测算法面临的种种缺陷,并对其进行了比较,发现基于距离的孤立点检测方法在许多方面都优于其他方法,在思路上也是正确的。基于距离的方法与基于统计的方法相比,不需要用户拥有任何领域知识。与“序列异常”相比,在概念上更加直观。
三、基于距离的k-medoids聚类算法与遗传算法
本文将基于距离的k-medoids聚类算法与遗传算法相结合,既可以很好地解决局部最优的问题,也可以很好地解决孤立点的问题,还可以加快遗传算法的收敛速度,节约时间成本。
k-medoids算法与k均值算法相似,但与k均值不同的是k-medoids算法不采用均值作为聚类中心,而是采用数据集中任意一个数据作为聚类中心,因此,可以很好地解决k均值对孤立点敏感的问题,极大地提高聚类的精度。但该方法同样受初始值影响很大,通常不能得到全局最优解。
遗传算法是一种建立在自然选择原理和自然遗传机制上的迭代式自适应概率性搜索方法,具有鲁棒性强、需要的领域知识少等优点,用于孤立点检测理论上是可行的。
本文提出的基于k-medoids算法和遗传算法结合的孤立点检测算法,继承了遗传算法的优点,在一定程度上克服了现有算法的弱点和不足。随机产生遗传算法的第一代并开始选择,然后在每代进化中,都用k-medoids算法对每个被选择的个体进行进一步的优化。也就是说,在每一代都要对所有被选中的个体计算以其为初始值的k-medoids算法的局部最优结果,并以这些局部最优结果替换掉原来的个体并继续进化,直到达到最大代数或者结果符合要求为止。
该算法的步骤将在以下部分详细介绍。
1.对个体进行编码和初始种群的生成
本文采用实数编码。染色体中实数的数量代表需要聚类的数量。初始种群采用随机函数生成,形成一个初始种群矩阵,其中每一行代表一个个体,每一行中的每个元素代表一个聚类中心。矩阵的行数代表种群中个体的数目,列数代表需要聚类的数目。
2.适应度函数的确定
本文采用均方差作为适应度函数,定义如下:
其中, E为所有数据对象与相应聚类中心的均方差之和,p为代表对象空间中的一个点,为聚类的中心对象,n为中点的个数。
3.选择算子的实现
遗传算法使用选择运算(或称复制运算)来实现对群体中的个体进行优胜劣汰操作。本文采用锦标赛选择法。
4.用k-medoids算法进行优化
用k-medoids算法对选择出来的个体进行优化,并用优化后的个体代替原来的个体。用k-medoids算法进行聚类一般只能得到局部最优解,但用其优化后的个体来代替原来的个体便可大大加速遗传算法的收敛速度,节约时间成本。
5.交叉算子的实现
交叉运算是产生新个体的主要方法。交叉率一般取值0.4 - 0.9。单点交叉中,交叉点的范围为[ 1, Nvar-1] ,Nvar为个体变量数目,以该交叉点为分界相互交换变量。
6.变异算子的实现
遗传算法中的变异运算是产生新个体的辅助方法,它是必不可少的一个运算步骤。变异率一般取值0. 001- 0. 1。
四、实验分析
本文的数据来自美国加州大学Irvine分校的机器学习库(the UCI Irvine Machine Learning Repository),选择德国信用数据集为研究对象,该数据集包含20个属性,本研究截取前100条数据,采用k均值算法、k-medoids算法和本文研究的新算法分别对数据集进行了聚类分析,实验结果见表1 (本结果只显示包含孤立点的类,其中的数字代表数据对象的序号)。
从表可以看出,在聚类时k均值算法无法把孤立点分离出来,而k-medoids算法和本文所研究的算法都可以把孤立点分离出来。从衡量聚类效果的重要指标均方差值的大小来看,在存在孤立点的时候, k-medoids算法比k均值算法要好,而新算法显然优于前面两个算法。
五、结论
本文比较了四种孤立点检测方法,通过分析发现基于距离的孤立点检测方法在许多方面都优于其他方法,在思路上也是正确的。基于距离的k-medoids算法可有效检测孤立点,但容易陷入局部最优。将k-medoids算法与遗传算法相结合,既可以很好地解决局部最优的问题,也可以很好地解决孤立点的问题,还可以加快遗传算法的收敛速度,节约时间成本。应用该算法可以有效地检测孤立点,即商业银行的异常客户,对风险进行有效地预警。
参考文献:
[1]Hawkins DM.Identification of Out1iers.Chapman and Hal1.London.1980
[2]蒙肖莲,商业银行客户识别与保持模型研究.博士论文,华中科技大学,2005
[3]褚法政,基于数据挖掘的银行客户关系管理.硕士论文,青岛大学,2004
转载注明来源:https://www.xzbu.com/3/view-1479111.htm