[返回]
计算机世界1999年第20期
田金兰 黄 刚
现在有很多数据挖掘软件工具可以实现关联规则的发现,下面讨论如何用MineSet 对保险业务数据进行关联规则的挖掘。出于行业保密,其中有些数据做了加工处理。
数据准备
首先需要连接数据。MineSet
提供了一些主流关系数据库的接口(包括Oracle7.2 或以上版本、Informix、Sybase,既可以访问本地数据库,也可以通过网络访问远程主机的数据库),可以直接读取存放在数据库中的数据;MineSet
也支持以文本文件方式存储的数据文件,这些文件必须以一定的格式组织数据。
在实际应用中,如果用户的数据由MineSet
不支持的数据库系统来管理,那么可以用一些第三方产品或自己实现,把数据转存到文本文件中。由于使用数据文件的方式速度要快一些,因此如果用户的数据变化不大,而且需要反复多次使用数据做知识发现,那么也可以转存到文本文件中,以提高效率。
数据挖掘的过程是不会修改源数据的。
这里我们使用的保险数据是存储在本地数据文件中,所以直接打开数据文件就可以了。
用MineSet 的集成工具记录浏览器(Record Viewer)观察数据,表1
是其中的一小部分。

我们可以看到这是一份保单数据,一条记录存储了一个投保人的一些基本信息以及其索赔次数。我们主要想通过数据挖掘找出索赔过的投保人有什么特征,没索赔过的投保人有什么特征。我们主要关心索赔次数以及与此相关的信息,可以认为保单号、单位代号、单位名称是一些无关信息,因此从源数据中挑选年龄、年工资、单位类别、单位地区、索赔次数这几列做进一步的分析。
再注意到年龄、年工资是数值数据(连续数据),而前面讲述的关联规则定义提到的物品集都是离散的数据,关联规则产生算法是无法处理这种连续数据的,需要做转换。为了离散化,我们根据数据值的范围对数据进行分组:年龄分为(,40〗,(40,50〗,(50,60〗,(60,70〗,(70...〗五个组,年工资分为(,6000〗,(6000,10000〗,(10000,∞)
三个组。
至于索赔次数,我们主要关心某投保人是否索赔过,而不关心具体的索赔次数。因此,根据索赔次数产生一个新的数据列:是否索赔,原索赔次数为0,是否索赔也为0;原索赔次数大于0,是否索赔则为1。索赔次数列不再出现在以后的分析中。
上面的数据转换后如表2 所示。

在转换后的数据之上,就可以挖掘关联规则了。
挖掘关联规则
关联规则挖掘的任务是:给定一个事务数据库D,求出所有满足最小支持度和最小可信度的关联规则。
需要指定最小支持度和最小可信度。MineSet
中默认的最小支持度为1
%。要求的最小支持度越高,挖掘出的规则越少,挖掘的过程也越快。MineSet
中默认的最小可信度为50
%。这里最小支持度和最小可信度都取默认值,然后只需按一下“执行”按钮,MineSet
就会开始挖掘。
规则可视化显示及理解
在发现关联规则后,MineSet
自动调出可视化工具Scatter Visualize
显示结果,下图是显示结果的某个角度的图像:

这是一个三维的立体图,可以放大、缩小、平移、旋转以及从不同角度观看。
三维中,有一维叫LHS(Left hand side),代表物品集A;相对的一维叫RHS(Right
hand side),代表物品集B;图上的一个方长条就代表一条规则A→B,其中A
是它对应的LHS 上的值,B 是它对应的RHS 上的值。
另一维是方长条的高度,代表规则的可信度;方长条的颜色代表作用度的大小(一种颜色对应作用度的一段区间,我们可以看到在图像的左下角给出了这种对应关系)。
当把鼠标指向一个方长条,屏幕的左上方就会显示该方长条代表的关联规则的信息,如图中所指的方长条的信息是:
单位类别=3 是否索赔=0;
此规则的四个参数的具体数值分别是:支持度为60.77
%,可信度是85.18 %,期望可信度是84.00 %,作用度是1.03。
这条规则告诉我们:在所有的投保人中,60.77
%的投保人单位类别是3 并且没有索赔过;有84.00
%的投保人没有索赔过;在单位类别是3 的投保人当中,共有85.18
%的投保人没有索赔过;作用度是1.03,说明“单位类别=3"这个条件对投保人是否索赔没有太大的影响,因为有没有这个条件,投保人的索赔率并没有太大的区别。
从挖掘得到的关联规则中,有一些是对保险业务没有太大意义的规则,比如工资与单位类别之间的关联规则可以不考虑。
以上挖掘得到的关联规则,LHS 和RHS
中都只包含一种物品(条件),是1 对1 的单路规则;如果允许LHS 和RHS
中包含多种物品,用同样的数据和限制条件可以得到多路规则,用记录浏览器来观察结果,如表3
所示。其中,行是一条关联规则,各列分别给出了关联规则的LHS、RHS
及四个参数的值。

从表3 可以看出,单位类别是3 并且年龄在40 岁到50
岁的投保人当中,93.1
%没有索赔过,明显高于期望可信度;而单位类别是2 并且年龄在40
岁到50 岁的投保人中索赔比例为84.77
%。如果有客观原因存在(例如,3
这种类别的单位可能压力不大,不很疲劳,故而发病率不高),那么保险公司就可以多针对满足这些条件的潜在客户开展工作,
从而可以减少风险,提高公司盈利。
通过以上步骤,得到了一些关联规则。实际运用中,还应该反复作一些调整、比较,力求得到最符合实际、最能达到目标要求的结果。例如在数据准备中,年龄、工资到底如何分组比较好;数据的取舍是否合理;数据能否作进一步的转换、组合,特别是数据本身有些特点,像数据中没有索赔的比率很高(84
%),如果想要体现曾经索赔过的投保人的特征,那么应该如何去做;关联规则挖掘中,最小支持度和最小可信度、挖掘的类型(单路或多路)怎么选取;最后对关联规则如何理解、判断等。
关联规则应用面很广,如识别欺诈。电子通信行业和信用卡公司在这方面是两个先行者,股票交易所和银行也有这方面的需要;推销商可以用关联规则帮助他们确定客户的主要来源,从而在不减少收入的前提下节约不必要的开支;商场根据关联规则计划进什么货、如何摆放货物;关联规则在医学上的应用也有重大意义,可以预测一次手术、药物检验、药物治疗的效果。
关联规则可以广泛应用于各个领域,既可以检验行业内长期形成的知识模式,也能够发现隐藏的新规律。有效地发现、理解、运用关联规则,是完成数据挖掘任务的一个重要手段。