版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、侦查欺诈交易,郝召 马骁,为什么研究欺诈交易,数据挖掘的结果有助于公司的事后检查活动 数据挖掘过程能够提供某种欺诈概率排序作为输出结果,可以使公司以最佳方式来利用其事后检查资源 应用方面:信用卡交易、税务申报检验等 本章新的数据挖掘主题: 离群值活异常值检验、聚类分析、办监督预测模型,问题的描述与目标,欺诈行为通常与异常的观测值相关联,因为这些欺诈行为是偏离常规的。在多个数据分析领域,这些偏离常规的行为经常称为离群值,问题的描述与目标,本案例使用的数据时某公司的销售员所报告的交易数据。这些销售员负责销售该公司的产品并定期报告销售情况。 销售员可以按照自己的策略和市场情况来自由设置销售价格。月末
2、,向公司报告销售情况。 数据挖掘应用的目的是根据公司过去发现的交易报告肿的错误和欺诈企图,帮助公司完成核实这些销售报告的真实性的工作。提供一份欺诈率排名报告,这个欺诈率排名将允许公司把有限的检验资源分配给系统提示的更“可疑”的那些报告,可用的数据,数据来自一个未公开的渠道 共401 146行,每一行包括来自销售员报告的信息。包括: ID:说明销售员ID的一个因子变量 Prod:说明销售产品ID号的一个因子变量 Quant:报告该产品销售的数量 Val:报告销售记录的总价值 Insp:有三个可能值的因子变量ok表示公司检查了该交易并认为该交易有效;fraud表示发现该交易为欺诈;unkn表示该交
3、易未经过公司审核。,加载数据,library(DMwR) data(sales) head(sales) 得到一个名为sales的数据框,探索数据集,Summary()函数可以使人们出不了解数据的统计特征 summary(sales) 数据中有大量的产品和销售人员信息,探索数据集,还可以用nlevels( )来确认这一点 nlevels(sales$ID) nlevels(sales$Prod),探索数据集,如果在同一个交易中Quant列和Val列有大量的缺失值,就会产生比较严重的问题,这回导致一条销售交易中的有关销售量的关键信息缺失。检验如下: length(which(is.na(sale
4、s$Quant) & is.na(sales$Val) sum(is.na(sales$Quant) & is.na(sales$Val),探索数据集,欺诈行为的比例对于总体而言是很低的 table(sales$Insp)/nrow(sales)*100 绘制每个交易人员的交易数量和每个产品的交易数量图形 totS - table(sales$ID) totP - table(sales$Prod) barplot(totS,main=Transactions per salespeople,names.arg=,xlab=Salespeople, ylab=Amount) barplot(t
5、otP,main=Transactions per product,names.arg=,xlab=Products, ylab=Amount),探索数据集,探索数据集,检查产品单位价格的分布: sales$Uprice - sales$Val/sales$Quant summary(sales$Uprice) Min. 1st Qu. Median Mean 3rd Qu. Max. NAs 0.00 8.46 11.89 20.30 19.11 26460.00 14136,探索数据集,检查最贵的和最便宜的产品 用单位价格的中位数来代表已经销售的产品的标准价格 attach(sales)
6、upp - aggregate(Uprice,list(Prod),median,na.rm=T) topP - sapply(c(T,F),function(o) upporder(upp,2,decreasing=o)1:5,1) colnames(topP) - c(Expensive,Cheap) topP,探索数据集,用上述5个产品的单位价格的箱图来确认它们完全不同的价格分布: tops - salesProd %in% topP1,c(Prod,Uprice) tops$Prod - factor(tops$Prod) boxplot(Uprice Prod,data=tops,y
7、lab=Uprice,log=y),探索数据集,找出那些给公司带来更多(少)资金的销售人员: vs - aggregate(Val,list(ID),sum,na.rm=T) scoresSs - sapply(c(T,F),function(o) vsorder(vs$x,decreasing=o)1:5,1) colnames(scoresSs) - c(Most,Least) scoresSs,探索数据集,给公司带来更多资金的前100名销售人员的资金收入几乎占公司资金收入的40%,而底部的2000人的总收入不足公司总收入的2%。这说明,该公司需要进行内部改革。 sum(vsorder(v
8、s$x,decreasing=T)1:100,2)/sum(Val,na.rm=T)*100 sum(vsorder(vs$x,decreasing=F)1:2000,2)/sum(Val,na.rm=T)*100,探索数据集,对每个产品所销售的数量进行类似的分析,有: qs - aggregate(Quant,list(Prod),sum,na.rm=T) scoresPs - sapply(c(T,F),function(o) qsorder(qs$x,decreasing=o)1:5,1) colnames(scoresPs) - c(Most,Least) scoresPs sum(a
9、s.double(qsorder(qs$x,decreasing=T)1:100,2)/ sum(as.double(Quant),na.rm=T)*100 sum(as.double(qsorder(qs$x,decreasing=F)1:4000,2)/ sum(as.double(Quant),na.rm=T)*100,探索数据集,确定每个产品的异常值个数: out - tapply(Uprice,list(Prod=Prod), function(x) length(boxplot.stats(x)$out) outorder(out,decreasing=T)1:10,探索数据集,找
10、到29446个被认为是离群值的教一,相当于总交易的7% sum(out) sum(out)/nrow(sales)*100,数据问题,处理缺失值的办法: 1)剔除这些个案 2)用某些策略来填补缺失数据 3)运用可以处理缺失值的工具,数据问题,前面提到,主要的问题是变量Quant和Val都有数据缺失的交易,如果移除所有的888个个案将导致剔除某些产品或是销售人员的大部分交易,这时候全部剔除888个个案是有问题的, 下面,检查这种情况是否会发生,数据问题,可以用下面的代码显示与存在问题的交易有关的销售人员和产品,以及变量Quant和Val同时有缺失值的交易占很大比例的交易人员: 至少从销售人员方面
11、来看,直接剔除这些同时在两个变量有缺失值的交易时合理的,因为它们代表了很小的一部分交易,数据问题,两个变量都有缺失值的交易占较大的比例的产品: 多个产品将被剔除的交易超过20%,特别是产品p2689将有近40%的交易被删除。有点太多了,数据问题,如果剔除有缺失数据的交易后只有少量的交易,那么我们就可以和类似产品的交易相结合一增加离群值检验的统计可靠性。总之,剔除所有同事在数量和价格上有缺失值的交易时最好的选择 detach(sales) sales - sales-which(is.na(sales$Quant) & is.na(sales$Val), detach()函数是用来禁止直接访问数
12、据框的列,数据问题,分析剩余的在数量或者价格变量上有缺失值的交易。计算每一种产品在数量上有缺失值的交易: P2442和p2443两个产品所有的交易数量是缺失的,因此我们无法计算其标准价格,所以这些产品的交易信息不可能进行任何分析。 标记为ok的报告,意味着检查员掌握了比这个数据集更多的信息,或者我们得到的数据有输入错误,因为从这些交易中似乎不可能得到任何结论,基于此,将删除这些交易报告:,数据问题,sales - sales!sales$Prod %in% c(p2442,p2443), 删除了两种产品,得到新的的Prod的水平 nlevels(sales$Prod) sales$Prod -
13、 factor(sales$Prod) nlevels(sales$Prod),数据问题,是否有销售人员的所有交易数量为缺失值? 从结果上看,有几个销售人员没有在报告中填写交易的数量信息。 我们只要有其他销售人员报告的相同产品的交易,就可以尝试使用此信息来填补那些缺失值,数据问题,对交易的Val列的缺失值进行类似的分析 这些数字是合理的,因为删除这些交易是没有意义的,我们将用其他的交易来填补这些缺失值,数据问题,从销售人员方面,计算这些数字的方法如下: 同样,这个比例不是太高 在这个阶段,我们已经删除了所有没有足够信息来填补缺失值的报告 我们将首先获得每一个产品的标准单价,计算标准价格时,跳过
14、标记为欺诈的交易价格,数据问题,对剩余的交易,我们将使用每个产品单位价格的中位数作为相应产品的标准价格: tPrice - tapply(salessales$Insp != fraud,Uprice, list(salessales$Insp != fraud,Prod), median,na.rm=T),数据问题,因为我们没有交易同时在这两个变量上有缺失值,所以每一个产品有了一个标准单价后,我们就可以用它来计算两个可能的缺失值(Quant和Val)。下面的代码将填补所有剩余的缺失值。 然后重新计算Uprice列的值来填补先前未知的单位价格 保存数据集,数据问题,有些产品只有极少的交易,因为
15、太少的交易,在要求的统计学显著性下很难做出决定。这种情况下,考虑是否可以喝一些产品的交易一起分析来避免这个问题 尽管缺失产品之间关系的信息,但可以尝试通过观察产品单价分部之间的相似性来推断其中的一些关系,如果可以发现具有类似价格的产品,我们可以考虑合并它们相应的交易并对它们一起进行分析,从而找到异常值 比较两个分布的一种方法是可视化检查法(在此不可行);另一种是比较总结分布的一些统计特性。 连续变量分布 的两个重要属性是集中趋势和离散趋势 这里使用中位数作为衡量中心的统计量,应用四分位距(IQR)作为离散指标的统计量更有意义,数据问题,上面的代码使用函数boxplot()获得中位数、第一个四分
16、位数和第三个四分位数。对每个产品的所有交易,计算这些统计量,从分析中剔除有欺诈的交易。有了这些统计量以后,得到含有每个产品的中位数和四分位距的一个矩阵,数据问题,根据每个产品的中位数和IQR绘制的图形 par(mfrow=c(1,2) plot(ms,1,ms,2,xlab=Median,ylab=IQR,main=) plot(ms,1,ms,2,xlab=Median,ylab=IQR,main=,col=grey,log=xy) smalls - which(table(Prod) 20) points(log(mssmalls,1),log(mssmalls,2),pch=+),数据问
17、题,对于交易数量少于20的产品,我们将寻找与它的单位价格分布最相似的产品,然后用Kolmogorow-Smirnov检验来检查两个产品是否在统计意义上相似。 下面的代码用来获得一个矩阵(similar)。矩阵中存储的事这种少于20个交易的每个产品的检查信息,用对象ms来保存前面获得的每个产品的单位价格的中位数和IQR,数据问题,dms - scale(ms) smalls - which(table(Prod) 20) prods - tapply(sales$Uprice,sales$Prod,list) similar - matrix(NA,length(smalls),7,dimnam
18、es=list(names(smalls), c(Simil,ks.stat,ks.p,medP,iqrP,medS,iqrS) for(i in seq(along=smalls) d - scale(dms,dmssmallsi,FALSE) d - sqrt(drop(d2 %*% rep(1,ncol(d) stat - ks.test(prodssmallsi,prodsorder(d)2) similari, - c(order(d)2,stat$statistic,stat$p.value,mssmallsi, msorder(d)2,) head(similar),数据问题,矩
19、阵similar对象的前几行,数据问题,用下面的代码得到矩阵similar前几行相应产品的ID: levels(Prod)similar1,1 在90%的显著水平下,我们可以检查单位价格分布有相似性的产品的数量: nrow(similarsimilar,ks.p = 0.9,) 或者是 sum(similar,ks.p = 0.9) 保存similar对象 save(similar,file=similarProducts.Rdata),定义数据挖掘任务,有些交易报告被强烈怀疑为欺诈交易,这个应用程序的主要目的是运用数据挖掘工具,为确定是否核查这些交易提供指导。由于可用于该检查任务的资源师有限
20、的并且是变化的,因此这个指导应该以欺诈概率排序的形式给出,问题的不同解决方法,主要问题是大多数可用的报告没有被检验 从确定已有报告是否为欺诈的任务角度来看,变量Insp中的unkn值和缺失值的意义是一样的。这个值代表缺少这笔交易是OK还是欺诈信息。 也就是说,我们的数据集有两种类型的观测值,我们有一个较小的数据集,其中的数据有标记,它有交易的特征描述和检验的结果。另一个较大的数据集是没有标记的,它们没有被检验,列Insp的值为unkn。在这种情况下,取决于用于建模的观测值的类型,我们有不同的建模方法。,1、无监督技术,我们面临的不是预测任务(即有监督方法的目标),而是一个描述性的数据挖掘任务
21、对于未被检验的报告,Insp列没有任何信息,所以它对分析没有影响。对于这些观测值,我们只有对交易的描述。这意味着这些销售报告仅仅有描述他的自变量,这种类型的数据适用于非监督学习技术。即它们的目标不是像有监督的方法那样在“老师”的监督下学习概念。,无监督技术,聚类分析是描述性数据挖掘的一个例子。 聚类方法师徒对一组观测值形成多个聚类,一个聚类内的个案相似,从而找到这些观测值的“自然”组别。 相似性概念通常要求由描述观测值的变量所定义的空间给出一个距离定义 这个距离定义是衡量一个观测值和其他观测值之间距离的函数 距离靠近的个案通常认为属于同一个自然组,无监督技术,异常值检验也可以看做是描述性的数据
22、挖掘任务。 有些异常值(或称为离群值)检验方法假定数据的预期分布,把背离这一分布的任何标记值记为异常值。 另一个常见的异常值检验策略是假定一个变量空间的距离度量,然后把距离其他观测值“太远”的观测值标记为异常观测值,无监督技术,我们的目标是得到一组观测值的异常值排序 这个排序作为公司内检验决策的基础 这意味着选择的无监督工具必须可以用来识别和排列异常值,有监督技术,目标:是找到目标变量(需要学习的概念)和一组自变量(预测变量或者属性)之间的关系 这个模型可以认为是一个与描述了目标变量Y和预测变量 之间关系的未知函数Y=f( )的近似。这个模型技术的任务是得到能够优化某些选择准则的模型参数,半监
23、督技术,找到标记观测值的成本很大,或是有目标变量取值的个案很难找到,因此有了半监督办法,这种信息通常需要领域专家的工作,这增加了数据收集的成本。 另一方面,随着传感器和其他类型数据自动采集装置的广泛使用,没有标签的数据往往是容易获得的。 因此,经常遇到的问题是很大比例的数据没有标记,二只有少量的带标记数据和它们一起。,半监督技术,半监督技术之所以这么命名是因为它可以处理这种存在有标记个案和为标记个案的数据集 通常有两种不同的半监督方法: 一种是:借助未标记个案提供的额外信息来提高标准的监督分类算法的性能 另一种是:半监督聚类方法,它尝试在聚类过程中形成组别的准则上包含一些约束,这些约束是基于标
24、记的数据,这样就可以对聚类过程进行纠偏,半监督技术,半监督聚类的思想是利用现有的标签来对聚类过程纠偏,使相同的个案在同一类中(must-link),或者把不同的个案放入不同的组中(cannot-link),评价准则,当给出交易报告的一个测试集时,每个模型将产生这些报告的排序。 本节讨论怎么评价这个排序 我们数据集的特性是同事包含标记和未标记的数据。在这个应用中,它们被转换为检验和为检验的报告。着增加了模型比较的困难,因为对监督和无监督方法的评价方法通常是不同的。模型得到的排序很可能同时包含标记和未标记的观测值。对前者而言,很容易评价将标记数据列入待检查报告集合的正确性。 在为标记的情况下,因为
25、我们不能确定这些个案是否为欺诈,所以这种评价是比较困难的,决策精准度与回溯精确度,一个成功模型应该得到一个交易排序,其中已知的欺诈交易在排序的顶部。我们的数据中有欺诈的报告占少数。给定一个我们的资源所允许检验的报告个数k,我们希望在排序的顶部k个位置中,或许只有欺诈交易的报告或者为检验的报告。然而,我们希望这个测试集中所有已知的欺骗报告出现在这k个位置中,决策精准度与回溯精确度,当我们的目的是预测一个小集合的罕见事件(这里是欺骗)时,决策精确度和回溯精确度是合适的评价指标。 给定检验限制k值,我们可以计算排序的最顶端k个位置的决策精确度和回溯精确度。这个限定值k决定了根据模型那些报告应被检验
26、从监督分类的角度看,这相当于把顶端的k个位置预测为fraud类,其余的则为正常报告。 决策精确度告诉我们顶端的k个值的多大比例事实上是标记为欺诈报告。 回溯精确度的值给出这个k个位置所包含的测试集的欺诈行为的比例。 我们所获得的值是悲观的,如果如果顶端k个值包括的是未标记的报告,它们不会进行决策精确度和回溯精确度的计算。但是,如果对它们进行了检验,我们就可以发现它们实际上是诈骗交易,因此决策精确度和回溯精确度可能会更高,提升图和PR曲线,不同的模型可能会在不同的水平上占据一定的优势,而且在比较模型时,着也可能成为有用的信息。 决策精确度/回溯精确度(PR)曲线是模型性能对这两者的一种可视化表示
27、。通过在不同的工作点得到上面的两个统计量的插值,从而得到该曲线。这些工作点由模型提供的感兴趣的类别排序的中断点给出,提升图和PR曲线,需要添加包ROCR 通过函数prediction()来做预测,提升图和PR曲线,产生的PR曲线具有锯齿形状。 这通常认为是不正确的,有一种方法可以克服这种情况。在一个确定的会随精确度r下,可以计算任何大于或等于r的回溯精确度水平所对应的决策精确度的最大值Precint,并把该值作为水平r的决策精确度,提升图和PR曲线,在performance()函数的返回值,我们发现一个名为y.values的属性,它包含图像y轴上的值,即所绘的决策精确度。我们依据上式计算插值的决策精确度,并用它替换y轴坐标值,就可以得到一个无锯齿效果的图。代码如下: PRcurve - function(preds,trues,.) require(ROCR,quietly=T)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024标准合作生产合同
- 04年云存储服务合同
- 2024施工合同备案表范本
- 04年光伏发电项目开发与建设合同
- 2024年互联网公司提供在线教育服务合同
- 2024年光伏发电项目开发与合作建设合同
- 2024年企业宣传与推广合同
- 2024建设银行外汇的借款合同范本
- 2024古董古玩版权使用许可合同
- 公司营销部门年终工作总结
- 电力工程施工售后保障方案
- 2024年小学心理咨询室管理制度(五篇)
- 第16讲 国家出路的探索与挽救民族危亡的斗争 课件高三统编版(2019)必修中外历史纲要上一轮复习
- 机器学习 课件 第10、11章 人工神经网络、强化学习
- 北京市人民大学附属中学2025届高二生物第一学期期末学业水平测试试题含解析
- 书籍小兵张嘎课件
- 氢气中卤化物、甲酸的测定 离子色谱法-编制说明
- 2024秋期国家开放大学专科《机械制图》一平台在线形考(形成性任务四)试题及答案
- 2024年黑龙江哈尔滨市通河县所属事业单位招聘74人(第二批)易考易错模拟试题(共500题)试卷后附参考答案
- 私募基金管理人-廉洁从业管理准则
- 房地产估价机构内部管理制度
评论
0/150
提交评论