数据挖掘 Data Mining 数据挖掘( 二 )


数据挖掘 Data Mining 数据挖掘

文章插图
数据挖掘按常规思维,尿布与啤酒风马牛不相及,若不是藉助数据挖掘技术对大量交易数据进行挖掘分析,沃尔玛是不可能发现数据内在这一有价值的规律的 。数据关联是资料库中存在的一类重要的可被发现的知识 。若两个或多个变数的取值之间存在某种规律性,就称为关联 。关联可分为简单关联、时序关联、因果关联 。关联分析的目的是找出资料库中隐藏的关联网 。有时并不知道资料库中数据的关联函式,即使知道也是不确定的,因此关联分析生成的规则带有可信度 。关联规则挖掘发现大量数据中项集之间有趣的关联或相关联繫 。Agrawal等于1993年首先提出了挖掘顾客交易资料库中项集间的关联规则问题,以后诸多的研究人员对关联规则的挖掘问题进行了大量的研究 。他们的工作包括对原有的算法进行最佳化,如引入随机採样、并行的思想等,以提高算法挖掘规则的效率;对关联规则的套用进行推广 。关联规则挖掘在数据挖掘中是一个重要的课题,最近几年已被业界所广泛研究 。过程关联规则挖掘过程主要包含两个阶段:第一阶段必须先从资料集合中找出所有的高频项目组(FrequentItemsets),第二阶段再由这些高频项目组中产生关联规则(Association Rules) 。关联规则挖掘的第一阶段必须从原始资料集合中,找出所有高频项目组(Large Itemsets) 。高频的意思是指某一项目组出现的频率相对于所有记录而言,必须达到某一水平 。一项目组出现的频率称为支持度(Support),以一个包含A与B两个项目的2-itemset为例,我们可以经由公式(1)求得包含{A,B}项目组的支持度,若支持度大于等于所设定的最小支持度(Minimum Support)门槛值时,则{A,B}称为高频项目组 。一个满足最小支持度的k-itemset,则称为高频k-项目组(Frequent k-itemset),一般表示为Large k或Frequent k 。算法并从Large k的项目组中再产生Large k+1,直到无法再找到更长的高频项目组为止 。关联规则挖掘的第二阶段是要产生关联规则(Association Rules) 。从高频项目组产生关联规则,是利用前一步骤的高频k-项目组来产生规则,在最小信赖度(Minimum Confidence)的条件门槛下,若一规则所求得的信赖度满足最小信赖度,称此规则为关联规则 。例如:经由高频k-项目组{A,B}所产生的规则AB,其信赖度可经由公式(2)求得,若信赖度大于等于最小信赖度,则称AB为关联规则 。就沃尔玛案例而言,使用关联规则挖掘技术,对交易资料库中的纪录进行资料挖掘,首先必须要设定最小支持度与最小信赖度两个门槛值,在此假设最小支持度min_support=5% 且最小信赖度min_confidence=70% 。因此符合此该超市需求的关联规则将必须同时满足以上两个条件 。若经过挖掘过程所找到的关联规则「尿布,啤酒」,满足下列条件,将可接受「尿布,啤酒」的关联规则 。用公式可以描述Support(尿布,啤酒)>=5%且Confidence(尿布,啤酒)>=70% 。其中,Support(尿布,啤酒)>=5%于此套用範例中的意义为:在所有的交易纪录资料中,至少有5%的交易呈现尿布与啤酒这两项商品被同时购买的交易行为 。Confidence(尿布,啤酒)>=70%于此套用範例中的意义为:在所有包含尿布的交易纪录资料中,至少有70%的交易会同时购买啤酒 。因此,今后若有某消费者出现购买尿布的行为,超市将可推荐该消费者同时购买啤酒 。这个商品推荐的行为则是根据「尿布,啤酒」关联规则,因为就该超市过去的交易纪录而言,支持了“大部份购买尿布的交易,会同时购买啤酒”的消费行为 。从上面的介绍还可以看出,关联规则挖掘通常比较适用与记录中的指标取离散值的情况 。如果原始资料库中的指标值是取连续的数据,则在关联规则挖掘之前应该进行适当的数据离散化(实际上就是将某个区间的值对应于某个值),数据的离散化是数据挖掘前的重要环节,离散化的过程是否合理将直接影响关联规则的挖掘结果 。分类按照不同情况,关联规则可以进行分类如下:1.基于规则中处理的变数的类别,关联规则可以分为布尔型和数值型 。布尔型关联规则处理的值都是离散的、种类化的,它显示了这些变数之间的关係;而数值型关联规则可以和多维关联或多层关联规则结合起来,对数值型栏位进行处理,将其进行动态的分割,或者直接对原始的数据进行处理,当然数值型关联规则中也可以包含种类变数 。例如:性别=“女”=>职业=“秘书”,是布尔型关联规则;性别=“女”=>avg(收入)=2300,涉及的收入是数值类型,所以是一个数值型关联规则 。2.基于规则中数据的抽象层次,可以分为单层关联规则和多层关联规则 。在单层的关联规则中,所有的变数都没有考虑到现实的数据是具有多个不同的层次的;而在多层的关联规则中,对数据的多层性已经进行了充分的考虑 。例如:IBM台式机=>Sony印表机,是一个细节数据上的单层关联规则;台式机=>Sony印表机,是一个较高层次和细节层次之间的多层关联规则 。3.基于规则中涉及到的数据的维数,关联规则可以分为单维的和多维的 。在单维的关联规则中,我们只涉及到数据的一个维,如用户购买的物品;而在多维的关联规则中,要处理的数据将会涉及多个维 。换成另一句话,单维关联规则是处理单个属性中的一些关係;多维关联规则是处理各个属性之间的某些关係 。例如:啤酒=>尿布,这条规则只涉及到用户的购买的物品;性别=“女”=>职业=“秘书”,这条规则就涉及到两个栏位的信息,是两个维上的一条关联规则 。算法1.Apriori算法:使用候选项集找频繁项集Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法 。其核心是基于两阶段频集思想的递推算法 。该关联规则在分类上属于单维、单层、布尔关联规则 。在这里,所有支持度大于最小支持度的项集称为频繁项集,简称频集 。该算法的基本思想是:首先找出所有的频集,这些项集出现的频繁性至少和预定义的最小支持度一样 。然后由频集产生强关联规则,这些规则必须满足最小支持度和最小可信度 。然后使用第1步找到的频集产生期望的规则,产生只包含集合的项的所有规则,其中每一条规则的右部只有一项,这里採用的是中规则的定义 。一旦这些规则被生成,那幺只有那些大于用户给定的最小可信度的规则才被留下来 。为了生成所有频集,使用了递推的方法 。可能产生大量的候选集,以及可能需要重複扫描资料库,是Apriori算法的两大缺点 。2.基于划分的算法Savasere等设计了一个基于划分的算法 。这个算法先把资料库从逻辑上分成几个互不相交的块,每次单独考虑一个分块并对它生成所有的频集,然后把产生的频集合併,用来生成所有可能的频集,最后计算这些项集的支持度 。这里分块的大小选择要使得每个分块可以被放入主存,每个阶段只需被扫描一次 。而算法的正确性是由每一个可能的频集至少在某一个分块中是频集保证的 。该算法是可以高度并行的,可以把每一分块分别分配给某一个处理器生成频集 。产生频集的每一个循环结束后,处理器之间进行通信来产生全局的候选k-项集 。通常这里的通信过程是算法执行时间的主要瓶颈;而另一方面,每个独立的处理器生成频集的时间也是一个瓶颈 。3.FP-树频集算法针对Apriori算法的固有缺陷,J. Han等提出了不产生候选挖掘频繁项集的方法:FP-树频集算法 。採用分而治之的策略,在经过第一遍扫描之后,把资料库中的频集压缩进一棵频繁模式树(FP-tree),同时依然保留其中的关联信息,随后再将FP-tree分化成一些条件库,每个库和一个长度为1的频集相关,然后再对这些条件库分别进行挖掘 。当原始数据量很大的时候,也可以结合划分的方法,使得一个FP-tree可以放入主存中 。实验表明,FP-growth对不同长度的规则都有很好的适应性,同时在效率上较之Apriori算法有巨大的提高 。套用就目前而言,关联规则挖掘技术已经被广泛套用在西方金融行业企业中,它可以成功预测银行客户需求 。一旦获得了这些信息,银行就可以改善自身行销 。现在银行天天都在开发新的沟通客户的方法 。各银行在自己的ATM机上就捆绑了顾客可能感兴趣的本行产品信息,供使用本行ATM机的用户了解 。如果资料库中显示,某个高信用限额的客户更换了地址,这个客户很有可能新近购买了一栋更大的住宅,因此会有可能需要更高信用限额,更高端的新信用卡,或者需要一个住房改善贷款,这些产品都可以通过信用卡账单邮寄给客户 。当客户打电话谘询的时候,资料库可以有力地帮助电话销售代表 。销售代表的电脑萤幕上可以显示出客户的特点,同时也可以显示出顾客会对什幺产品感兴趣 。同时,一些知名的电子商务站点也从强大的关联规则挖掘中的受益 。这些电子购物网站使用关联规则中规则进行挖掘,然后设定用户有意要一起购买的捆绑包 。也有一些购物网站使用它们设定相应的交叉销售,也就是购买某种商品的顾客会看到相关的另外一种商品的广告 。但是目前在我国,“数据海量,信息缺乏”是商业银行在数据大集中之后普遍所面对的尴尬 。目前金融业实施的大多数资料库只能实现数据的录入、查询、统计等较低层次的功能,却无法发现数据中存在的各种有用的信息,譬如对这些数据进行分析,发现其数据模式及特徵,然后可能发现某个客户、消费群体或组织的金融和商业兴趣,并可观察金融市场的变化趋势 。可以说,关联规则挖掘的技术在我国的研究与套用并不是很广泛深入 。近年来,电信业从单纯的语音服务演变为提供多种服务的综合信息服务商 。随着网路技术和电信业务的发展,电信市场竞争也日趋激烈,电信业务的发展提出了对数据挖掘技术的迫切需求,以便帮助理解商业行为,识别电信模式,捕捉盗用行为,更好地利用资源,提高服务质量并增强自身的竞争力 。下面运用一些简单的实例说明如何在电信行业使用数据挖掘技术 。可以使用上面提到的K 均值、EM 等聚类算法,针对运营商积累的大量用户消费数据建立客户分群模型,通过客户分群模型对客户进行细分,找出有相同特徵的目标客户群,然后有针对性地进行行销 。而且,聚类算法也可以实现离群点检测,即在对用户消费数据进行聚类的过程中,发现一些用户的异常消费行为,据此判断这些用户是否存在欺诈行为,决定是否採取防範措施 。可以使用上面提到的C4.5、SVM 和贝叶斯等分类算法,针对用户的行为数据,对用户进行信用等级评定,对于信用等级好的客户可以给予某些优惠服务等,对于信用等级差的用户不能享受促销等优惠 。可以使用预测相关的算法,对电信客户的网路使用和客户投诉数据进行建模,建立预测模型,预测大客户离网风险,採取激励和挽留措施防止客户流失 。可以使用相关分析找出选择了多个套餐的客户在套餐组合中的潜在规律,哪些套餐容易被客户同时选取,例如,选择了流量套餐的客户中大部分选择了彩铃业务,然后基于相关性的法则,对选择流量但是没有选择彩铃的客户进行交叉行销,向他们推销彩铃业务 。研究由于许多套用问题往往比超市购买问题更複杂,大量研究从不同的角度对关联规则做了扩展,将更多的因素集成到关联规则挖掘方法之中,以此丰富关联规则的套用领域,拓宽支持管理决策的範围 。如考虑属性之间的类别层次关係,时态关係,多表挖掘等 。近年来围绕关联规则的研究主要集中于两个方面,即扩展经典关联规则能够解决问题的範围,改善经典关联规则挖掘算法效率和规则兴趣性 。类似区别一个经常问的问题是,数据挖掘和OLAP到底有何不同 。下面将会解释,他们是完全不同的工具,基于的技术也大相逕庭 。OLAP是决策支持领域的一部分 。传统的查询和报表工具是告诉你资料库中都有什幺(what happened),OLAP则更进一步告诉你下一步会怎幺样(What next)、和如果我採取这样的措施又会怎幺样(What if) 。用户首先建立一个假设,然后用OLAP检索资料库来验证这个假设是否正确 。比如,一个分析师想找到什幺原因导致了贷款拖欠,他可能先做一个初始的假定,认为低收入的人信用度也低,然后用OLAP来验证他这个假设 。如果这个假设没有被证实,他可能去察看那些高负债的账户,如果还不行,他也许要把收入和负债一起考虑,一直进行下去,直到找到他想要的结果或放弃 。也就是说,OLAP分析师是建立一系列的假设,然后通过OLAP来证实或推翻这些假设来最终得到自己的结论 。OLAP分析过程在本质上是一个演绎推理的过程 。但是如果分析的变数达到几十或上百个,那幺再用OLAP手动分析验证这些假设将是一件非常困难和痛苦的事情 。数据挖掘与OLAP不同的地方是,数据挖掘不是用于验证某个假定的模式(模型)的正确性,而是在资料库中自己寻找模型 。他在本质上是一个归纳的过程 。比如,一个用数据挖掘工具的分析师想找到引起贷款拖欠的风险因素 。数据挖掘工具可能帮他找到高负债和低收入是引起这个问题的因素,甚至还可能发现一些分析师从来没有想过或试过的其他因素,比如年龄 。数据挖掘和OLAP具有一定的互补性 。在利用数据挖掘出来的结论採取行动之前,你也许要验证一下如果採取这样的行动会给公司带来什幺样的影响,那幺OLAP工具能回答你的这些问题 。而且在知识发现的早期阶段,OLAP工具还有其他一些用途 。可以帮你探索数据,找到哪些是对一个问题比较重要的变数,发现异常数据和互相影响的变数 。这都能帮你更好的理解你的数据,加快知识发现的过程 。相关技术数据挖掘利用了人工智慧(AI)和统计分析的进步所带来的好处 。这两门学科都致力于模式发现和预测 。数据挖掘不是为了替代传统的统计分析技术 。相反,他是统计分析方法学的延伸和扩展 。大多数的统计分析技术都基于完善的数学理论和高超的技巧,预测的準确度还是令人满意的,但对使用者的要求很高 。而随着计算机计算能力的不断增强,我们有可能利用计算机强大的计算能力只通过相对简单和固定的方法完成同样的功能 。一些新兴的技术同样在知识发现领域取得了很好的效果,如神经元网路和决策树,在足够多的数据和计算能力下,他们几乎不用人的关照自动就能完成许多有价值的功能 。数据挖掘就是利用了统计和人工智慧技术的应用程式,他把这些高深複杂的技术封装起来,使人们不用自己掌握这些技术也能完成同样的功能,并且更专注于自己所要解决的问题 。相关影响使数据挖掘这件事情成为可能的关键一点是计算机性能价格比的巨大进步 。在过去的几年里磁碟存储器的价格几乎降低了99%,这在很大程度上改变了企业界对数据收集和存储的态度 。如果每兆的价格是¥10,那存放1TB的价格是¥10,000,000,但当每兆的价格降为1毛钱时,存储同样的数据只有¥100,000! 计算机计算能力价格的降低同样非常显着 。每一代晶片的诞生都会把CPU的计算能力提高一大步 。记忆体RAM也同样降价迅速,几年之内每兆记忆体的价格由几百块钱降到现在只要几块钱 。通常PC都有64M记忆体,工作站达到了256M,拥有上G记忆体的伺服器已经不是什幺新鲜事了 。在单个CPU计算能力大幅提升的同时,基于多个CPU的并行系统也取得了很大的进步 。目前几乎所有的伺服器都支持多个CPU,这些SMP伺服器簇甚至能让成百上千个CPU同时工作 。基于并行系统的资料库管理系统也给数据挖掘技术的套用带来了便利 。如果你有一个庞大而複杂的数据挖掘问题要求通过访问资料库取得数据,那幺效率最高的办法就是利用一个本地的并行资料库 。所有这些都为数据挖掘的实施扫清了道路,随着时间的延续,我们相信这条道路会越来越平坦 。隐私与数据挖掘有关的,还牵扯到隐私问题,例如:一个僱主可以通过访问医疗记录来筛选出那些有糖尿病或者严重心脏病的人,从而意图削减保险支出 。然而,这种做法会导致伦理和法律问题 。对于政府和商业数据的挖掘,可能会涉及到的,是国家安全或者商业机密之类的问题 。这对于保密也是个不小的挑战 。数据挖掘有很多合法的用途,例如可以在患者群的资料库中查出某药物和其副作用的关係 。这种关係可能在1000人中也不会出现一例,但药物学相关的项目就可以运用此方法减少对药物有不良反应的病人数量,还有可能挽救生命;但这当中还是存在着资料库可能被滥用的问题 。数据挖掘实现了用其他方法不可能实现的方法来发现信息,但它必须受到规範,应当在适当的说明下使用 。如果数据是收集自特定的个人,那幺就会出现一些涉及保密、法律和伦理的问题 。