1、商务数据挖掘与应用案例分析,第6章 离群点挖掘,6.1 概述 6.2 基于相对密度的离群点检测方法 6.3 基于聚类的离群点检测方法 6.4 离群点检测方法的评估,开篇案例保险欺诈检验,6.1 概述 (1),什么是离群点(Outlier)?Hawkins的定义:离群点是在数据集中偏离大部分数据的数据,使人怀疑这些数据的偏离并非由随机因素产生,而是产生于完全不同的机制。Weisberg的定义:离群点是与数据集中其余部分不服从相同统计模型的数据。Samuels的定义:离群点是足够地不同于数据集中其余部分的数据。Porkess的定义:离群点是远离数据集中其余部分的数据,离群点的特殊意义和实用价值 现
2、有数据挖掘研究大多集中于发现适用于大部分数据的常规模式,在许多应用领域中,离群点通常作为噪音而忽略,许多数据挖掘算法试图降低或消除离群点的影响。而在有些应用领域识别离群点是许多工作的基础和前提,离群点会带给我们新的视角。 如在欺诈检测中,离群点可能意味欺诈行为的发生,在入侵检测中离群点可能意味入侵行为的发生。,6.1 概述 (2),离群点检测的应用领域电信、保险、银行中的欺诈检测与风险分析 发现电子商务中的犯罪行为灾害气象预报税务局分析不同团体交所得税的记录,发现异常模型和趋势 海关、民航等安检部门推断哪些人可能有嫌疑 海关报关中的价格隐瞒营销定制:分析花费较小和较高顾客的消费行为医学研究中发
3、现医疗方案或药品所产生的异常反应计算机中的入侵检测应用异常检测到文本编辑器,可有效减少文字输入的错误 ,6.1 概述 (3),离群点挖掘问题由两个子问题构成: (1)定义在一个数据集中什么数据是不一致或离群的数据;(2)找出所定义的离群点的有效挖掘方法。离群点挖掘问题可以概括为如何度量数据偏离的程度和有效发现离群点的问题。为什么会出现离群点?测量、输入错误或系统运行错误所致数据内在特性所决定客体的异常行为所致由于离群点产生的机制是不确定的,离群点挖掘算法检测出的“离群点”是否真正对应实际的异常行为,不是由离群点挖掘算法来说明、解释的,只能由领域专家来解释,离群点挖掘算法只能为用户提供可疑的数据
4、,以便用户引起特别的注意并最后确定是否真正的异常。对于异常数据的处理方式也取决于应用,并由领域专家决策。,6.1 概述 (4),离群点挖掘中需要处理的几个问题(1) 全局观点和局部观点离群点与众不同,但具有相对性。(2) 点的离群程度可以通过定义对象的偏离程度来给对象打分离群因子(Outlier Factor)或离群值得分(Outlier Score),即都为离群点的情况下,也还有分高和分低的区别。(3) 离群点的数量及时效性正常点的数量远远超过离群点的数量,离群点的数量在大规模数据集中所占的比例较低,小于5%甚至1%.,6.1 概述 (5),离群点实例一个人的年龄为-999就可能是由于程序处
5、理缺省数据设置默认值所造成的 ;一个公司的高层管理人员的工资明显高于普通员工的工资可能成为离群点但却是合理的数据(如平安保险公司2007年 5位高管税后收入超过了1000万元); 一部住宅电话的话费由每月200元以内增加到数千元可能就因为被盗打或其它特殊原因所致; 一张信用卡出现明显的高额消费也许是因为是盗用的卡。,6.1 概述 (6),离群点与众不同但具有相对性: 高与矮,疯子与常人。类似术语: Outlier mining,Exception mining:异常挖掘、离群挖掘、例外挖掘和稀有事件挖掘 。,6.1 概述 (7),(1)用于定义离群点的属性个数一个对象只有单个属性一个对象具有多
6、个属性:可能某个属性异常,某个属性正常如:对于男生而言, 身高1.6m,体重55kg,这个很正常; 身高1.6m,体重75kg,这个有点离群; 身高1.8m,体重75kg,基本正常。若对于女生,则三组值可能都不太正常。 所以,定义离群点需要指明如何使用多个属性的值确定一个对象是否离群?,6.2 基于相对密度的离群点检测 (1),(2)全局观点和局部观点一个对象可能相对于所有对象看上去离群,但它相对于它的局部近邻不是离群的例如:身高1.85m对于一般人群是不常见的,但对于职业篮球运动员不算什么,6.2 基于相对密度的离群点检测 (2),到k-最近邻的距离的计算定义6-1 对于正整数k,对象p的k
7、最近邻距离k_distance(p)定义为: (1)除p外,至少有k个对象o满足 (2)除p外,至多k-1个对象o满足利用k最近邻距离的大小来判定离群使用k-最近邻的距离度量一个对象是否远离大部分点,一个对象的离群程度由到它的k-最近邻的距离给定 。这种方法对k的取值比较敏感。k太小(例如1),则少量的邻近离群点可能导致较低的离群程度。k太大,则点数少于k的簇中所有的对象可能都成了离群点。,6.2 基于相对密度的离群点检测 (1),定义6-2 (1) 对象的局部邻域密度 (2) 相对密度其中, 是不包含x的k-最近邻的集合, 是该集合的大小,y是一个最近邻。基于相对密度的离群点检测方法通过比较
8、对象的密度与它的邻域中的对象平均密度来检测离群点。 簇内靠近核心点的对象的相对密度接近于1,而处于簇的边缘或是簇的外面的对象的相对较大。定义相对密度为离群因子:,6.2 基于相对密度的离群点检测 (2),基于相对密度离群点检测算法,该算法由三步组成:第一步:对于每一对象x,确定x的k-最近邻集合N(x,k)和密度density(x,k)第二步:对于每一对象x,确定x的相对密度relative density(x,k),并赋值给OF1(x,k)第三步:对OF1(x,k)降序排列,确定离群因子大的若干对象,6.2 基于相对密度的离群点检测 (3),选择合适的离群因子阈值一种形式上简单的方法是指定离
9、群点个数;这里介绍另一种确定OF1(x,k)分割阈值的方法:对OF1(x,k)降序排列,选择OF1(x,k)急剧下降的点作为离群值、正常值的分隔点,如图6-3所示,在该图中,有两个点判定为离群点。,6.2 基于相对密度的离群点检测 (4),例6-1 给定二维数据集,表6-1给出了点的坐标,可视化的图形如图6-2所示(对象间的距离采用曼哈顿(Manhattan)距离计算)。K取2,3,5时,以表格方式给出所有点的局部邻域密度及相对密度的离群因子。表6-1 例6-1二维数据集,K取2,3,5时,所有点的局部邻域密度、相对密度如表6-3所示表6-3 不同k值的计算结果.,6.3 基于聚类的离群点检测
10、方法 (1),6.3.1 基于对象的离群因子的方法6.3.2 基于簇的离群因子的方法6.3.3 基于聚类的动态数据的离群点检测方法,6.3 基于聚类的离群点检测方法 (2),基于聚类的方法有两个共同特点:(1)先采用特殊的聚类算法处理输入数据而得到聚类,再在聚类的基础上来检测离群点。(2)只需要扫描数据集若干次,效率较高,适用于大规模数据集。,6.3 基于聚类的离群点检测方法 (3),静态数据的离群点检测第一阶段对数据进行聚类第二阶段计算对象或簇的离群因子,将离群因子大的对象或簇中对象判定为离群点。动态数据的离群点检测第一步,利用静态数据的离群检测方法建立离群检测模型第二步,利用对象与已有模型
11、间的相似程度来检测离群点关键问题:距离的定义、离群程度的度量,6.3.1 基于对象离群因子的方法 (1),首先聚类所有对象 ,然后评估对象属于簇的程度如果一个对象不强属于任何簇,则称该对象为基于聚类的离群点。可以用对象到它的簇中心的距离来度量对象属于簇的程度。,6.3.1 基于对象离群因子的方法 (2),定义6-3 给定簇C,C 的摘要信息CSI(Cluster Summary Information)定义为: 其中n为簇C 的大小,Summary由分类属性中不同取值的频度信息和数值属性的质心两部分构成,即:定义6-4 假设据集D被聚类算法划分为k个簇 对象p的离群因子(Outlier Fac
12、tor)OF2(p)定义为p与所有簇间距离的加权平均值: OF2(p)度量了对象p偏离整个数据集的程度,其值越大,说明p偏离整体越远。,基于对象的离群因子检测方法描述如下:第一步,对数据集D进行采用一趟聚类算法进行聚类,得到聚类结果第二步,计算数据集D中所有对象p的离群因子OF2(p),对OF2(p)降序排列,确定离群因子大的若干对象。,6.3.1 基于对象离群因子的方法 (3),例6-2 基于聚类的离群点检测示例1对于图所示的二维数据集,比较点P1(6,8),P2(5,2),哪个更有可能成为离群点。假设数据集经过聚类后得到聚类结果为C=C1、C2、C3,图中红色圆圈标注,三个簇的质心分别为:
13、C1(5.5,7.5)、C2(5,2)、C3(1.75,2.25),试计算所有对象的离群因子。,解答:根据定义6-4,公式对于P1点有: 对于P2有:可见,点P1较P2更可能成为离群点。,同理可求得所有对象的离群因子,结果如表所示。,6.3.2 基于簇的离群因子的方法 (1),(1)在某种度量下,相似对象或相同类型的对象会聚集在一起,或者说正常数据与离群数据会聚集在不同的簇中;(2)正常数据占绝大部分,且离群数据与正常数据表现出明显不同,或者说离群数据会偏离正常数据(也就是大部分数据)。,定义6-5 给定簇C,C的摘要信息CSI (Cluster Summary Information)定义为
14、: 其中kind为簇的类别(取值normal或outlier), 为簇C的大小, Cluster为簇C中对象标识的集合,Summary 由分类属性中不同取值的频度信息和数值型属性的质心两部分构成, 即:,6.3.2 基于簇的离群因子的方法 (2),定义6-6 假设据集D被聚类算法划分为k个簇 , 簇 离群因子(Outlier Factor) 定义为簇 与其它所有簇间距离的加权平均值:,如果一个簇离几个大簇的距离都比较远,则表明该簇偏离整体较远,其离群因子也较大。 度量了簇 偏离整个数据集的程度,其值越大,说明 偏离整体越远。,6.3.2 基于簇的离群因子的方法 (3),该方法由两个阶段构成:第
15、一阶段是利用一趟聚类算法对数据集进行聚类;第二阶段是计算每个簇的离群因子,并按离群因子对簇进行排序,最终确定离群簇,也即确定离群对象。,6.3.2 基于簇的离群因子的方法 (4),具体算法描述如下:第一阶段,聚类:对数据集D进行聚类,得到聚类结果 ;第二阶段,确定离群簇:计算每个簇 的离群因子 ,按 递减的顺序重新排列 , 求满足: 的最小 ,将簇 标识为outlier类(即其中每个对象均看成离群),而将 标识为normal类(即其中每个对象均看成正常)。,6.3.2 基于簇的离群因子的方法 (5),例6-3 基于聚类的离群点检测示例2,对例6-3中的数据集,聚类后得到三个簇C=C1、C2、C
16、3,簇心分别为:C1(5.5,7.5)、C2(5,2)、C3(1.75,2.25)。簇之间的距离分别为:进一步计算三个簇的离群因子,具体如下:,基本思想如下:在对训练集聚类的基础上,按照簇的离群因子排序簇,并按一定比例将簇标识为”normal”或”outlier”,以标识的簇作为分类模型,按照对象与分类模型中最接近簇的距离判断它是否离群点。,6.3.3 基于聚类的动态数据的离群点检测方法 (1),6.3.3 基于聚类的动态数据的离群点检测方法 (2),(1) 模型建立第一步,聚类:对训练集 进行聚类,得到聚类结果 ;第二步,给簇作标记:计算每个簇 的离群因子 ,按 递减的顺序重新排列 ,求满足
17、: 的最小b,将簇 识为离群簇,而将 标识为正常簇。第三步,确定模型:以每个簇的摘要信息,聚类半径阈值r作为模型,(2) 模型评估,利用改进的最近邻分类方法INN(Improved Nearest Neighbor) 评估测试集中的每个对象。INN方法具体描述如下:对于测试集 中对象p,计算p与每个簇的距离若 ,则说明p是已知类型的行为,将簇 的标识作为p的标识,否则说明p是一种新的行为,将p标识为可疑对象候选离群点 。,6.3.3 基于聚类的动态数据的离群点检测方法 (3),(3) 模型更新,对于测试集 中对象p,按照前面聚类的方式,对新增对象进行增量式聚类更新用建立模型同样的方法对所有簇重
18、新标记其类别。,6.3.3 基于聚类的动态数据的离群点检测 (3),6.4 离群点挖掘方法的评估 (1),可以通过下表所示混淆矩阵来描述离群点挖掘方法的检测性能。在离群点检测问题中,并不关注预测正确的normal类对象,重点关注的是正确预测的outlier类对象。,离群点检测方法准确性的两个指标检测率(Detection rate)表示被正确检测的离群点记录数占整个离群点记录数的比例;误报率(False positive rate)表示正常记录被检测为离群点记录数占整个正常记录数的比例。期望离群点挖掘方法对离群数据有高的检测率,对正常数据有低的误报率,但两个指标之间会有一些冲突,高的检测率常常会导致高的误报率。也可以采用ROC曲线来显示检测率和误报率之间关系,6.4 离群点挖掘方法的评估 (2),本章小结,(1) 介绍了离群点概念及离群点挖掘的意义。(2) 从技术的角度介绍了基于相对密度和基于聚类的离群点挖掘方法,对这几种方法的优劣进行了分析。并通过实例说明了这些离群点检测方法的应用。,作业:P125:6.1,6.2,6.3,