CN105574649A - 一种基于多阶段MapReduce模型的纳税人偷漏税嫌疑群组检测方法 - Google Patents
一种基于多阶段MapReduce模型的纳税人偷漏税嫌疑群组检测方法 Download PDFInfo
- Publication number
- CN105574649A CN105574649A CN201510920257.3A CN201510920257A CN105574649A CN 105574649 A CN105574649 A CN 105574649A CN 201510920257 A CN201510920257 A CN 201510920257A CN 105574649 A CN105574649 A CN 105574649A
- Authority
- CN
- China
- Prior art keywords
- node
- key
- value
- network
- task
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 11
- 238000000034 method Methods 0.000 claims abstract description 134
- 230000009467 reduction Effects 0.000 claims abstract description 4
- 230000008569 process Effects 0.000 claims description 67
- 230000000875 corresponding effect Effects 0.000 claims description 47
- 230000002776 aggregation Effects 0.000 claims description 29
- 238000004220 aggregation Methods 0.000 claims description 29
- 239000003086 colorant Substances 0.000 claims description 15
- 239000003638 chemical reducing agent Substances 0.000 claims description 12
- 239000012634 fragment Substances 0.000 claims description 12
- 239000003550 marker Substances 0.000 claims description 9
- 238000006116 polymerization reaction Methods 0.000 claims description 9
- 239000000284 extract Substances 0.000 claims description 7
- 239000000203 mixture Substances 0.000 claims description 7
- 230000002457 bidirectional effect Effects 0.000 claims description 6
- 238000010276 construction Methods 0.000 claims description 4
- 230000008878 coupling Effects 0.000 claims description 4
- 238000010168 coupling process Methods 0.000 claims description 4
- 238000005859 coupling reaction Methods 0.000 claims description 4
- 230000000694 effects Effects 0.000 claims description 4
- 230000001174 ascending effect Effects 0.000 claims description 3
- 238000004040 coloring Methods 0.000 claims description 3
- 230000002596 correlated effect Effects 0.000 claims description 3
- 238000004458 analytical method Methods 0.000 abstract description 5
- 230000008901 benefit Effects 0.000 abstract description 5
- 238000004364 calculation method Methods 0.000 abstract description 4
- 230000010354 integration Effects 0.000 abstract 1
- 238000009412 basement excavation Methods 0.000 description 3
- 238000004880 explosion Methods 0.000 description 2
- 241000238876 Acari Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0639—Performance analysis of employees; Performance analysis of enterprise or organisation operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/10—Tax strategies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
- G06Q50/26—Government or public services
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Human Resources & Organizations (AREA)
- Development Economics (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- Theoretical Computer Science (AREA)
- Educational Administration (AREA)
- Marketing (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Tourism & Hospitality (AREA)
- Entrepreneurship & Innovation (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Primary Health Care (AREA)
- Technology Law (AREA)
- Game Theory and Decision Science (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于多阶段MapReduce模型的纳税人偷漏税嫌疑群组检测方法,包括以下步骤:首先,提出了利用多网融合来构建基于着色图的纳税人利益关联网络的方法;其次,提出了基于强连通分量的纳税人利益关联网络的约减方法;然后,引入利益前件网络的概念,在利益前件网络中发现所有的极大弱连通子图,最后,利用多阶段MapReduce模型,对每个极大弱连通子图及其对应的交易边构建模式树,然后遍历模式树来生成模式库,进而对模式库中的模式进行两两匹配,找到所有符合匹配原则的模式对,最终生成所有的纳税人偷漏税嫌疑群组。其中,多阶段MapReduce模型由于采用分布式计算,能够极大地提高国家税务部门的嫌疑偷漏税分析效率,为国家挽回税务流失的损失。
Description
技术领域
本发明涉及一种基于多阶段MapReduce模型的纳税人偷漏税嫌疑群组检测方法。
背景技术
随着信息技术的不断发展,国家税务信息化已初步建立了统一的电子申报、缴税、审批的一体化技术支撑与服务平台,并生成海量税务数据。但是对于企业偷税漏税的分析都是人工分析,且税务数据跨区域异质存储,难以发现纳税人之间隐式的利益关联。
专利“基于纳税人利益关联网络模型的偷漏税关联企业识别方法”(CN103383767B)利用着色加权图进行建模,并给出了基于边和节点颜色的五种聚合算子,结合这些聚合算子发现纳税人利益关联最小网络,同时对基于着色加权图的纳税人利益关联网络进行简化;然后,引入了节点环介数的概念,在简化后的网络中发现最大介数约束的有向闭环集的纳税人利益关联集团,最后,利用企业之间的交易行为权重,识别纳税人利益关联最小网络和纳税人利益关联集团中的偷漏税行为。
专利“一种基于纳税人利益关联网络的可疑纳税人识别方法”(CN104103011B)提出了一种基于纳税人利益关联网络的拓扑特征来识别可疑纳税人的方法。首先,对纳税人利益关联网络进行拓扑特征的分析,采用Motif寻找频繁子图,并根据度中心度和聚集系数拓扑指标寻找正常和可疑纳税人的差异;其次,选择拓扑特征,使用C4.5分类器实验,从而实现自动识别可疑纳税人的功能。
以上现有的纳税人偷漏税嫌疑群组检测方法存在如下问题:1.所构建纳税人利益关联网络没有考虑大规模节点和复杂的边关系导致的图处理时间和空间复杂度高的问题;2.图约减与图挖掘方面存在模式组合爆炸问题;3.专利CN104103011B难以发现非motif结构(如五边形、六边形等)的偷漏税企业群组。以上三点导致了它们必然在处理大规模图数据时效率低下。
发明内容
为克服现有技术中的问题,本发明的目的在于提供基于多阶段MapReduce模型的纳税人偷漏税嫌疑群组检测方法。
为了达到以上目的,本发明是采取如下技术方案予以实现的:
一种基于多阶段MapReduce模型的纳税人偷漏税嫌疑群组检测方法,包括以下步骤:
(一)基于着色图的纳税人利益关联网络的构建
纳税人利益关联网络表示为四元组:TPIIN=(V,E,VColor,EColor);其中V={vp|p=1,…,Np}表示节点集合,其中Np表示网络中的节点个数;E表示图中所有存在边的集合,且令E={epq}={(vp,vq)|0<p,q≤Np},其中epq=(vp,vq)表示存在从第p个节点到第q个节点的有向连线;节点着色集合表示为VColor={LC,CC,BC},其中LC表示法人代表颜色;CC表示企业颜色;BC表示董事颜色;通过VColor中的颜色对TPIIN中的V节点分类可得:V=L∪C∪B,其中L={vl|l=1,…,NL,NL<Np}表示所有标记颜色为LC的法人代表节点,NL表示网络中的法人代表节点的个数,C={vc|c=1,…,NC,NC<Np}表示所有标记颜色为CC的企业节点,NC表示网络中的企业节点的个数,B={vb|b=1,…,NB,NB<Np}表示所有标记颜色为BC的董事节点,NB表示网络中的董事节点的个数,则有NL+NC+NB=Np;有向边着色集合表示为其中表示法人代表与企业之间的单向实际控制人关系;表示董事与企业之间的单向控股关系;表示企业之间的单向控股关系;表示法人代表之间双向的亲属关系;表示多个董事间的双向互锁关系;表示企业间的单向交易关系;
基于着色图的纳税人利益关联网络的构建是采用多网融合方法来生成一个纳税人利益关联网络,具体步骤如下:
Step1:从证监会、公安户籍部门、税务局获得的相关税务信息中,提取出所有的企业C、法人代表L、董事B的信息以及它们之间不同的关系信息,具体包括:企业之间的控股关系和交易关系法人代表与企业之间的实际控制人关系董事与企业之间的控股关系法人代表之间的亲属关系以及董事之间的互锁关系
Step2:利用上述6种同构关系分别构建相关的同构关系网络;
Step3:合并Step2中生成的六种同构关系网络,则构成了一个纳税人利益关联网络TPIIN;
(二)基于强连通分量的纳税人利益关联网络的约减
依据以下步骤对纳税人利益关联网络TPIIN进行逐次约减操作:
Step1:将TPIIN中法人代表与企业之间的控制人关系、董事与企业之间的控股关系与企业之间的控股关系统一归约为“利益控制关系”,用表示,即因此,由上述三种利益控制关系所分别构成的三种同构关系网络,包括企业控股关系网络IN-Net、实际控制人关系网络CL-Net以及董事控股关系网络HR-Net,也合并为一个同构关系网络,称为“利益控制关系网络”,用IC-Net表示,即IC-Net=CL-Net∪HR-Net∪IN-Net,则TPIIN简化为约减纳税人利益关联网络,用STPIIN表示,即STPIIN=IC-Net∪IR-Net∪IL-Net∪TR-Net;
Step2:对于亲属关系网络IR-Net,利用Tarjan算法找到IR-Net中所有的强连通分量,这些强连通分量的集合表示为IR-Scc,然后,基于IR-Scc中的强连通分量在STPIIN上进行亲属关系聚合操作,STPIIN变为约减后的I型纳税人利益关联网络,用STPIIN-I表示;
Step3:对于互锁关系网络IL-Net,利用Tarjan算法找到其中所有的强连通分量,这些强连通分量的集合表示为IL-Scc,然后,基于IL-Scc中的强连通分量在STPIIN-I上进行互锁关系聚合操作,STPIIN-I变为约减后的II型纳税人利益关联网络,用STPIIN-II表示;
Step4:对于利益控制关系网络IC-Net,利用Tarjan算法找到其中所有的强连通分量,这些强连通分量的集合表示为IC-Scc,然后,基于IC-Scc中的强连通分量在STPIIN-II上进行利益控制关系聚合操作,STPIIN-II变为约减后的III型纳税人利益关联网络,用STPIIN-III表示;
经过上述步骤,由纳税人利益关联网络TPIIN得到网络TN,即TN=STPIIN-III;
(三)利益前件网络中的所有极大弱连通子图的发现
①生成利益前件网络Ante-TN和交易关系网络Tr-TN
对于网络TN,将其中除交易关系边之外的利益控制关系边及相应的法人代表、董事、企业节点组成的网络称为利益前件网络,用Ante-TN表示,将所有的交易关系边及相应的企业节点组成的网络称为交易关系网络,用Tr-TN表示;
②在Ante-TN中发现所有的极大弱连通子图及其相应的交易边
对于上述①中生成的利益前件网络Ante-TN,利用改进的深度优先搜索算法寻找其中所有的极大弱连通子图,这些极大弱连通子图的集合表示为subgraph={subgraph(i)|i=1,2,…,num}中,其中num表示所发现的极大弱连通子图的个数;同时,利用上述①中生成的交易关系网络Tr-TN,寻找每个极大弱连通子图subgraph(i)中的所有交易关系边,这些交易关系边的集合表示为trade={trade(i)|i=1,2,…,num};
利用改进的深度优先搜索算法寻找Ante-TN中所有的极大弱连通子图的具体步骤如下:
Step1:搜索Ante-TN中的所有入度为0的节点,存入集合node-0-L中;
Step2:访问node-0-L中的任意一个节点V,并令i=1;
Step3:得到Ante-TN所对应的无向利益前件网络,用Undirected-Ante-TN表示;
Step4:在Undirected-Ante-TN中,从V的任一邻接点W出发,若W属于node-0-L,则从node-0-L中移除W;
Step5:若W未被访问过,则访问之,转Step4;若W已被访问,转Step6;
Step6:构建从V到W方向的有向边eVW=(V,W),若eVW属于Ante-TN,则将eVW存入subgraph(i)中,若eVW属于Tr-TN,则将eVW存入trade(i)中;若eVW既不属于Ante-TN也不属于Tr-TN,则构建从W到V方向的边eWV=(W,V),若eWV属于Ante-TN,则将eWV存入subgraph(i)中,若eWV属于Tr-TN,则将eWV存入trade(i)中,并构建二元组(subgraph(i),trade(i));
Step7:若node-0-L不为空,则从中任选一个节点,令i=i+1,转Step4;若node-0-L为空,则输出(subgraph,trade),即利益前件网络Ante-TN中所有的极大弱连通子图及其对应的交易关系边所构成的二元组;
(四)基于多阶段MapReduce模型的纳税人偷漏税嫌疑群组发现
①构建模式树
Step1:Maper1端以二元组(subgraph,trade)为输入,并按照Hadoop分布式文件系统的块大小对其进行分片,设分片个数为M1,则每个分片所包含的极大弱连通子图的个数为n11=N11/M1,其中N11为subgraph中的极大弱连通子图的总数,M1为Maper1任务的个数,然后,作业调度器Job1将每个分片分别交给其对应的一个Maper1任务进行处理;
Step2:调用Maper1任务的方法函数遍历分片中的subgraph(i),计算subgraph(i)中每个节点vm的入度indegreem和出度outdegreem,将subgraph(i)中所有节点的集合表示为v(i)={vm|m=1,2,…,Nv},将subgraph(i)中所有节点的入度indegreem和出度outdegreem的集合分别表示为indegree(i)={indegreem|m=1,2,…,Nv}和outdegree(i)={outdegreem|m=1,2,…,Nv},其中,Nv表示subgraph(i)中的节点总数;构建三元组(v(i),indegree(i),outdegree(i)),首先将v(i)中的各个节点按其相应的入度indegree(i)由小到大进行排序,然后将具有相同入度的节点按其出度outdegree(i)由大到小进行排序,得到排序之后的三元组(v′(i),indegree′(i),outdegree′(i)),用sorted3Tuple(i)表示,并生成键/值对<i,sorted3Tuple(i)>,存入集合keyValuesList1中,keyValuesList1暂时放在本地的内存缓冲区,若缓冲区存满,则将缓冲区的数据写入本地创建的溢写文件中;
Step3:对于keyValuesList1中的所有键/值对,首先在本地进行合并,并按键的值进行排序,然后通过分区类Partitioner1将keyValuesList1中的键/值对分为R1个分区,每个分区包含的键/值对的个数为n12=N12/R1,其中N12为keyValuesList1中的键/值对的总数,R1为Reducer1任务的个数,每个分区分别交给其对应的一个Reducer1任务进行处理;
Step4:Reducer1任务接收Maper1任务传来的有序数据,并顺序读取,把具有相同键的键/值对合并为一类,形成新的键/值对<i,sorted3TupleList>,其中,sorted3TupleList为同一个键所对应的所有三元组sorted3Tuple(i)的集合,合并后的值传给Reducer1任务的方法函数,执行对应的算法;
Step5:Reducer1任务的方法函数构建模式树的过程如下,其中,所有的模式树存入patternTreeList={patternTree(i)|i=1,2,…,num}中:
Step5.1:对键值为i的键/值对<i,sorted3TupleList>,创建一个根节点rooti;
Step5.2:遍历所有输入的<i,sorted3TupleList>,对于sorted3TupleList中的每个三元组sorted3Tuple(i),根据indegree′(i)找到v′(i)中所有入度为0的节点,存入集合startNodes(i)中,同时,将rooti到startNodes(i)中的节点的所有边存入patternTree(i)中;
Step5.3:根据outdegree′(i)判断startNodes(i)中是否存在出度不为0的节点,若存在,转Step5.4,若不存在,则输出patternTree(i),存入模式树列表patternTreeList中;
Step5.4:遍历subgraph(i)和trade(i),判断是否存在以这些出度不为0的节点为起始节点的边,若存在,则将这些边存入集合arcs(i)中,转Step5.5,若不存在,则输出patternTree(i),存入模式树列表patternTreeList中;
Step5.5:将arcs(i)中的边的终止节点存入集合endNodes(i)中,并将arcs(i)中的边存入patternTree(i)中,然后令startNodes(i)=endNodes(i),并清空arcs(i)和endNodes(i),转Step5.4;
②生成模式库
Step1:Maper2端将第1个MapReduce过程输出的模式树列表patternTreeList按照Hadoop分布式文件系统的块大小划分为M2个分片,每个分片包含的模式树的个数为n21=N21/M2,其中N21为patternTreeList中的模式树的总数,M2为Maper2任务的个数,然后,作业调度器Job2将每个分片分别交给其对应的一个Maper2任务进行处理;
Step2:调用Maper2任务的方法函数从每个模式树的根节点rooti开始遍历,遍历历经节点Ar,若遇到出度为0的节点Ar,则模式(rooti,A1,…,Ar),用oldPatternBase1表示,并形成键/值对<rooti,oldPatternBase1>,若首次到达某条交易边的终止节点v,则生成模式(rooti,A1,…,Ar)→v,用oldPatternBase2表示,并形成键/值对<rooti,oldPatternBase2>,将上述两种键/值对均存入集合oldKeyValuesList中,oldKeyValuesList暂时放在本地的内存缓冲区,若缓冲区存满,则将缓冲区的数据写入本地创建的溢写文件中;
Step3:对于oldKeyValuesList中的所有键/值对,首先在本地进行合并,并按键的值进行排序,然后分区类Partitioner2将oldKeyValuesList中的键/值对分为R2个分区,每个分区包含的键/值对的个数为n22=N22/R2,其中N22为oldKeyValuesList中的键/值对的总数,R2为Reducer2任务的个数,每个分区分别交给其对应的一个Reducer2任务进行处理;
Step4:Reducer2任务接收Maper2任务传来的有序数据并顺序读取,把具有相同键的键/值对合并为一类,形成新的键/值对<rooti,oldPatternBaseList>,其中,oldPatternBaseList为同一个键所对应的模式的集合,合并后的值传给Reducer2任务的方法函数,执行对应的算法;
Step5:调用Reducer2任务的方法函数遍历所有输入的<rooti,oldPatternBaseList>,对于oldPatternBaseList中的每个模式,包括oldPatternBase1和oldPatternBase2,删掉其中的根节点rooti,生成模式(A1,…,Ar)和(A1,…,Ar)→v,分别用patternBase1与patternBase2表示,均存入模式列表patternBaseList中;
③生成键值对列表
Step1:Maper3端将第2个MapReduce过程输出的模式列表patternBaseList按照Hadoop分布式文件系统的块大小划分为M3个分片,每个分片包含的模式的个数为n31=N31/M3,其中N31为patternBaseList中的模式的总数,M3为Maper3任务的个数,然后,作业调度器Job3将每个分片分别交给其对应的一个Maper3任务进行处理;
Step2:调用Maper3任务的方法函数提取每个模式patternBase的前件中的所有元素(A1,…,Ar)及后件元素v分别作为键,生成N1个键/值对<A1,patternBase>,…,<Ar,patternBase>,<v,patternBase>,其中N1为patternBase中的节点个数,将这些键/值对存入集合keyValuesList3中,keyValuesList3暂时放在本地的内存缓冲区,若缓冲区存满,则将缓冲区的数据写入本地创建的溢写文件中;
Step3:对于keyValuesList3中的所有键/值对,首先在本地进行合并,并按键的值进行排序,然后分区类Partitioner3将keyValuesList3中的键/值对分为R3个分区,每个分区包含的键/值对的个数为n32=N32/R3,其中N32为keyValuesList3中的键/值对的总数,R3为Reducer3任务的个数,每个分区分别交给其对应的一个Reducer3任务进行处理;
Step4:Reducer3任务接收Maper3任务传来的有序数据并顺序读取,将具有相同键w的键/值对合并为一类,形成新的键/值对<w,newPatternBaseList>,其中,newPatternBaseList为同一个键所对应的所有值的集合,合并后的值传给Reducer3任务的方法函数,执行对应的算法;
Step5:调用Reducer3任务的方法函数遍历所有输入的<w,newPatternBaseList>,对于newPatternBaseList中的每个模式patternBase,若w为其前件元素,则将patternBase放入前件列表r_patternBaseList中;若w为其后件元素,则将patternBase放入后件列表v_patternBaseList中,最后,对每一个键w生成键/值对<w,r_patternBaseList>或<w,v_patternBaseList>;
④利用键值对列表进行前件匹配
Step1:Maper4端将第3个MapReduce过程的输出按照Hadoop分布式文件系统的块大小划分为M4个分片,每个分片包含的模式的个数为n41=N41/M4,其中N41为输入的所有键/值对的个数,M4为Maper4任务的个数,然后,作业调度器Job4将每个分片分别交给其对应的一个Maper4任务进行处理;
Step2:对输入的每一个键w调用Maper4任务的方法函数,首先判断其对应的前件列表r_patternBaseList和后件列表v_patternBaseList是否均存在,若均存在,则每次从r_patternBaseList和v_patternBaseList中各取出一个模式patternBase1和patternBase2进行匹配,直到所有组合匹配完毕;反之,则不考虑该键/值对;其中,上述匹配原则为:若对应的两个模式patternBase1和patternBase2存在相同的前件元素,则匹配成功,将patternBase1和patternBase2放入模式二元组(patternBase1,patternBase2)中,并生成键/值对<w,(patternBase1,patternBase2)>,将这些键/值对存入集合keyValuesList4中,keyValuesList4暂时放在本地的内存缓冲区,若缓冲区存满,则将缓冲区的数据写入本地创建的溢写文件中;
Step3:对于keyValuesList4中的所有键/值对,首先在本地进行合并,并按键的值进行排序,然后分区类Partitioner4将keyValuesList4中的键/值对分为R4个分区,每个分区包含的键/值对的个数为n42=N42/R4,其中N42为keyValuesList4中的键/值对的总数,R4为Reducer4任务的个数,每个分区分别交给其对应的一个Reducer4任务进行处理;
Step4:Reducer4任务接收Maper4任务传来的有序数据并顺序读取,把具有相同键的键/值对合并为一类,形成新的键/值对<w,patternBasePair>,其中,patternBasePair为同一个键所对应的所有模式二元组(patternBase1,patternBase2)的集合,合并后的值传给Reducer4任务的方法函数,执行对应的算法;
Step5:对输入<w,patternBasePair>调用Reducer4任务的方法函数,取出patternBasePair中的二元组(patternBase1,patternBase2),找到patternBase1和patternBase2形成的弱连通子图,将其中包含的所有节点存入集合wccii中,然后将wccii作为输出存入偷漏税嫌疑群组列表susGroups中,即susGroups={wccii|ii=1,2,…,p},其中p表示弱连通子图的数量。
基于着色图的纳税人利益关联网络的构建中Step2:利用上述6种同构关系分别构建相关的同构关系网络,具体构造过程如下:
Step2.1:对于企业C中的所有企业节点,在控股企业和被控股企业之间添加单向控股边形成企业控股关系网络IN-Net;
Step2.2:对于企业C中的所有企业节点,在卖出企业和购入企业之间添加单向交易边形成交易关系网络TR-Net;
Step2.3:对于法人代表L中的所有法人代表节点和企业C中的所有企业节点,若某个法人代表节点和某个企业节点之间存在单向实际控制人关系,则添加单向实际控制人边形成实际控制人关系网络CL-Net;
Step2.4:对于董事B中的所有董事节点和企业C中的所有企业节点,若某个董事节点和某个企业节点之间存在单向控股关系,则添加单向控股边形成董事控股关系网络HR-Net;
Step2.5:对于法人代表L中的所有法人代表节点,在存在亲属关系的两个法人代表节点之间添加双向亲属关系边形成亲属关系网络IR-Net;
Step2.6:对于董事B中的所有董事节点,在存在互锁关系的两个董事节点之间添加双向互锁关系边形成互锁关系网络IL-Net。
基于强连通分量的纳税人利益关联网络的约减中的亲属关系聚合操作、互锁关系聚合操作与利益控制关系聚合操作具体如下:
a)亲属关系聚合操作:
由于亲属关系网络强连通分量集合IR-Scc中的每个强连通分量中的法人代表节点之间存在亲属关系,相应亲属关系边的颜色标记为则在网络STPIIN中,将每个强连通分量所包含的多个法人代表节点聚合为一个新生法人代表聚合节点vl′,并将该新生节点vl′的颜色标记为L′,同时,删除这些聚合的法人代表节点之间的亲属关系边;此外,重新构建与这些聚合的法人代表节点均存在共同连接的企业节点和新生法人代表聚合节点vl′的边,将原有连接强连通分量集合IR-Scc中的每个强连通分量的连接边重新连接到vl′;
b)互锁关系聚合操作:
由于互锁关系网络强连通分量集合IL-Scc中的每个强连通分量中的董事节点之间存在互锁关系边则在网络STPIIN-I中,将每个强连通分量所包含的多个董事节点聚合为一个新生董事聚合节点vb′,并将该新生节点vb′的颜色标记为B′,同时,删除这些聚合的董事节点间的互锁关系边;此外,重新构建与这些聚合的董事节点均存在共同连接的企业节点和新生董事聚合节点vb′的边;在将原有连接强连通分量集合IL-Scc中的每个强连通分量的连接边重新连接到vb′的同时,若存在指向外部同一节点的不同边,则分别按照颜色聚合为不同颜色的边,每种颜色只保留一条;
c)利益控制关系聚合操作:
由于利益控制关系网络强连通分量集合IC-Scc中的每个强连通分量中的企业节点之间存在利益控制关系边则在网络STPIIN-II中,将每个强连通分量所包含的多个企业节点聚合为一个新生企业聚合节点vc′,并将该新生节点vc′的颜色标记为C′,同时,删除这些聚合的企业节点间的利益控制关系边;此外,重新构建与这些聚合的企业节点均存在共同连接的其他节点和新生企业聚合节点vc′的边;在将原有连接强连通分量集合IC-Scc中的每个强连通分量的连接边重新连接到vc′的同时,若存在指向外部同一节点的不同边,则分别按照颜色聚合为不同颜色的边,每种颜色只保留一条。
构建模式树中Step2中所述的计算subgraph(i)中的每个节点vm的入度indegreem和出度outdegreem由以下MapReduce过程实现:
Step2.1:Maper′端把subgraph(i)按照Hadoop分布式文件系统的块大小划分为M′个分片,每个分片包含的边的个数为n1′=N1′/R′,其中N1′为subgraph(i)中的边的总数,M′为Maper′任务的个数,然后,作业调度器Job1’将每个分片分别交给其对应的一个Maper′任务进行处理;
Step2.2:对分片中的每条边e=(vm,vn)调用Maper′任务的方法函数,得到入度为0、出度为1的节点vm,以及入度为1、出度为0的节点vn,分别生成键/值对<vm,0>、<vm,1>,以及<vn,1>、<vn,0>,将入度相关的键/值对<vm,0>和<vn,1>存入入度表inKeyValuesList中,将出度相关的键/值对<vm,1>和<vn,0>存入出度表outKeyValuesList中,inKeyValuesList和outKeyValuesList暂时存放在本地的内存缓冲区,若缓冲区存满,则将缓冲区的数据写入本地创建的溢写文件中;
Step2.3:对于inKeyValuesList和outKeyValuesList中的所有键/值对,首先在本地进行合并,并按键的值进行排序,然后分区类Partitioner′将inKeyValuesList和outKeyValuesList中的键/值对分为R′个分区,每个分区包含的键/值对的个数为n2′=N2′/R′,其中N2′为inKeyValuesList或outKeyValuesList中的键/值对的总数,R′为Reducer′任务的个数,每个分区分别交给其对应的一个Reducer′任务进行处理;
Step2.4:Reducer′任务接收Maper′任务传来的有序数据,顺序读取入度表与出度表中的数据,并分别将入度表和出度表中具有相同键vm的键/值对合并为一类,形成新的键/值对<vm,vminList>和<vm,vmoutList>,其中,vminList和vmoutList分别为同一个键vm所对应的所有入度和出度值的集合,合并后的值传给Reducer2任务的方法函数,执行对应的算法;
Step2.5:对同一个键vm所对应的vminList和vmoutList调用Reducer′任务的方法函数,分别将vminList和vmoutList中的所有值相加,得到节点vm的入度indegreem和出度outdegreem。
与现有技术相比,本发明具有的有益效果:
本发明首先,提出了利用多网融合来构建基于着色图的纳税人利益关联网络的方法;其次,提出了基于强连通分量的纳税人利益关联网络的约减方法;然后,引入利益前件网络的概念,在利益前件网络中发现所有的极大弱连通子图,最后,利用多阶段MapReduce模型,对每个极大弱连通子图及其对应的交易边构建模式树,然后遍历模式树来生成模式库,进而对模式库中的模式进行两两匹配,找到所有符合匹配原则的模式对,最终生成所有的纳税人偷漏税嫌疑群组。其中,多阶段MapReduce模型由于采用分布式计算,能够极大地提高国家税务部门的嫌疑偷漏税分析效率,为国家挽回税务流失的损失。
本发明提出了利用工商、税务、证监会的数据,结合经济学原理以及多网融合的方法构建基于着色图的纳税人利益关联网络模型,提出了基于强连通分量的纳税人利益关联网络的约减方法,然后,引入利益前件网络的概念,找到利益前件网络中的所有极大弱连通子图,最后,利用多阶段MapReduce模型得到每个极大弱连通子图与其对应的交易边所构成的网络中的所有纳税人偷漏税嫌疑群组。与现有技术相比,本发明具有以下两方面的优点:1、多阶段MapReduce模型由于采用分布式计算,能够极大地提高图处理效率,解决了图挖掘方面存在的模式组合爆炸问题。2、利用模式匹配能够发现任意形状的偷漏税嫌疑群组,解决了现有技术中的不足。
附图说明
图1为基于多阶段MapReduce模型的纳税人偷漏税嫌疑群组检测流程图。
图2为着色图表示的纳税人利益关联网络的图例说明及实例。
图3为多网融合示意图。
图4为亲属关系聚合操作图例。
图5为董事互锁关系聚合操作图例。
图6为利益控制关系聚合操作图例。
图7为纳税人利益关联网络约减与偷漏税嫌疑群组判定图例。其中(a)为未约减的纳税人利益关联网络,(b)为约减后的纳税人利益关联网络。
图8为实现纳税人嫌疑群组发现的4个MapReduce过程。
具体实施方式
以下结合附图及具体实施方式对本发明作进一步的详细说明。
为了更清楚的理解本发明,以下结合附图对本发明作进一步的详细描述。本发明方法涉及的一种纳税人偷漏税嫌疑群组的发现过程如图1所示。
(一)本发明中使用的若干概念的相关定义
定义1:强联通分量
在有向图G中,如果两个顶点vi,vj之间有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称这两个顶点强连通(stronglyconnected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子图,称为强连通分量(stronglyconnectedcomponents)。
定义2:极大弱连通子图
将有向图G的所有有向边替换为无向边,所得到的图称为原图的基图G′。在G′中,如果从顶点vi到顶点vj有路径,则称vi和vj连通,G′中的极大连通子图称为有向图G的极大弱连通子图。
定义3:模式
一条模式表示一个节点序列,该序列起于入度为0的节点,止于出度为0的节点或首次到达的某条交易边的终止节点。
一条模式可以用以下两种形式表示:
形式一:(A1,A2,…,Ar);
形式二:(A1,A2,…,Ar)→Cs;
其中,(Ar,r=1,2,…,NP)表示网络中的第r个节点,(Cs,s=1,2,…,NC)表示第s个企业节点,箭头表示交易关系,NP表示网络中的节点总数,NC表示网络中的企业节点总数,显然有NC<NP;(A1,A2,…,Ar)称为前件;Cs称为后件。
(二)基于着色图的纳税人利益关联网络的构建
纳税人利益关联网络表示为四元组:TPIIN=(V,E,VColor,EColor)。其中V={vp|p=1,…,Np}表示节点集合,其中Np表示网络中的节点个数;E表示图中所有存在边的集合,且令E={epq}={(vp,vq)|0<p,q≤Np},其中epq=(vp,vq)表示存在从第p个节点到第q个节点的有向连线;节点着色集合表示为VColor={LC,CC,BC},其中LC表示法人代表颜色;CC表示企业颜色;BC表示董事颜色;通过VColor中的颜色对TPIIN中的V节点分类可得:V=L∪C∪B,其中L={vl|l=1,…,NL,NL<Np}表示所有标记颜色为LC的法人代表节点,NL表示网络中的法人代表节点的个数,C={vc|c=1,…,NC,NC<Np}表示所有标记颜色为CC的企业节点,NC表示网络中的企业节点的个数,B={vb|b=1,…,NB,NB<Np}表示所有标记颜色为BC的董事节点,NB表示网络中的董事节点的个数,则有NL+NC+NB=Np;有向边着色集合表示为其中表示法人代表与企业之间的单向实际控制人关系;表示董事与企业之间的单向控股关系;表示企业之间的单向控股关系;表示法人代表之间双向的亲属关系;表示多个董事间的双向互锁关系;表示企业间的单向交易关系。
一个TPIIN的图例说明及实例如图2所示,结合图2(a)中的图例说明,由图2(b)可知:L1和L2表示法人代表,B1和B2表示董事,C1、C2和C3表示企业,其中L1与L2之间存在亲属关系B1和B2之间存在互锁关系L1与C1、L2与C1之间存在实际控制人关系B1与C3、B2与C3之间存在董事控股关系C1与C3之间存在企业控股关系C1与C2,C2与C3之间存在交易关系上述这些节点和它们之间的边组成了一个简单的纳税人利益关联网络。
基于着色图的纳税人利益关联网络的构建是采用多网融合方法来生成一个纳税人利益关联网络,如图3所示。该方法具体步骤如下:
Step1:从证监会、公安户籍部门、税务局等信息源获得的相关税务信息中,提取出所有的企业C、法人代表L、董事B的信息以及它们之间不同的关系信息,具体包括:企业之间的控股关系和交易关系法人代表与企业之间的实际控制人关系董事与企业之间的控股关系法人代表之间的亲属关系以及董事之间的互锁关系
Step2:利用上述6种同构关系分别构建相关的同构关系网络,具体构造过程如下:
Step2.1:对于C中的所有企业节点,在控股企业和被控股企业之间添加单向控股边形成企业控股关系网络IN-Net;
Step2.2:对于C中的所有企业节点,在卖出企业和购入企业之间添加单向交易边形成交易关系网络TR-Net;
Step2.3:对于L中的所有法人代表节点和C中的所有企业节点,若某个法人代表节点和某个企业节点之间存在单向实际控制人关系,则添加单向实际控制人边形成实际控制人关系网络CL-Net;
Step2.4:对于B中的所有董事节点和C中的所有企业节点,若某个董事节点和某个企业节点之间存在单向控股关系,则添加单向控股边形成董事控股关系网络HR-Net;
Step2.5:对于L中的所有法人代表节点,在存在亲属关系的两个法人代表节点之间添加双向亲属关系边形成亲属关系网络IR-Net;
Step2.6:对于B中的所有董事节点,在存在互锁关系的两个董事节点之间添加双向互锁关系边形成互锁关系网络IL-Net;
Step3:合并Step2中生成的六种同构关系网络,即将上述六种同构关系网络的所有节点与边的信息进行保留并生成在同一张网络中,所生成的融合网络即构成了一个纳税人利益关联网络TPIIN,即TPIIN=IN-Net∪TR-Net∪CL-Net∪HR-Net∪IR-Net∪IL-Net。
本发明对于纳税人利益关联网络的构建也与CN103383767B有所不同。CN103383767B中采用的是整体构建的方法,首先生成所有的节点,然后添加所有的关系边;而本发明采用分布式构建,首先分别构建具有相同关系的同构关系网络,然后融合所有的同构关系网络即为纳税人利益关联网络。
(三)基于强连通分量的纳税人利益关联网络的约减
本发明利用Tarjan算法求出有向图TPIIN中的所有强连通分量。Tarjan算法是基于图的深度优先搜索(Depth-FirstSearch,DFS)的算法,从图中任意选择一个节点开始进行DFS(如果DFS结束后图中仍然有未遍历过的节点,则需要从中任选一个节点再次进行DFS)。如果图中的某个节点已经被遍历过,则再次进行DFS时将不再对其进行遍历。在DFS过程中,把当前搜索树中未处理过的节点存入一个堆栈,当从搜索树的子树返回至一个节点时,判断该节点是否是某一个强连通分量的根节点,如果是,则删除堆栈中的该节点,那么,比这个节点先出栈并且还不存在于其他的强连通分量中的节点就构成了该节点所在的强连通分量。
依据以下步骤对纳税人利益关联网络TPIIN进行逐次约减操作:
Step1:将TPIIN中法人代表与企业之间的控制人关系、董事与企业之间的控股关系与企业之间的控股关系统一归约为“利益控制关系”,用表示,即因此,由上述三种利益控制关系所分别构成的三种同构关系网络,包括企业控股关系网络IN-Net、实际控制人关系网络CL-Net以及董事控股关系网络HR-Net,也合并为一个同构关系网络,称为“利益控制关系网络”,用IC-Net表示,即IC-Net=CL-Net∪HR-Net∪IN-Net,则TPIIN简化为约减纳税人利益关联网络,用STPIIN表示,即STPIIN=IC-Net∪IR-Net∪IL-Net∪TR-Net;
Step2:对于亲属关系网络IR-Net,利用Tarjan算法找到IR-Net中所有的强连通分量,这些强连通分量的集合表示为IR-Scc,然后,基于IR-Scc中的强连通分量在STPIIN上进行亲属关系聚合操作,STPIIN变为约减后的I型纳税人利益关联网络,用STPIIN-I表示;
Step3:对于互锁关系网络IL-Net,利用Tarjan算法找到其中所有的强连通分量,这些强连通分量的集合表示为IL-Scc,然后,基于IL-Scc中的强连通分量在STPIIN-I上进行互锁关系聚合操作,STPIIN-I变为约减后的II型纳税人利益关联网络,用STPIIN-II表示;
Step4:对于利益控制关系网络IC-Net,利用Tarjan算法找到其中所有的强连通分量,这些强连通分量的集合表示为IC-Scc,然后,基于IC-Scc中的强连通分量在STPIIN-II上进行利益控制关系聚合操作,STPIIN-II变为约减后的III型纳税人利益关联网络,用STPIIN-III表示;
经过上述步骤,由纳税人利益关联网络TPIIN得到网络TN,即TN=STPIIN-III。
其中,
a)采用Tarjan算法挖掘图中的所有强连通分量的具体步骤如下:
Step1:将图中所有的节点的颜色都初始化白色,并清空栈;
Step2:任意找到一个白色的节点x,并令k=1;
Step3:给节点x一个时间戳DFN[x],令Low[x]=DFN[x],将节点圧入栈中,并将该节点标记为灰色;
Step4:遍历节点x的每条边(x,y)。若color[y]是白色,转Step3,并令Low[x]=min(Low[y],Low[x]);如果color[y]是灰色,令Low[x]=min(Low[x],DFN[y]),转Step5;如果color[x]是黑色,不作任何处理;
Step5:把节点的颜色标记为黑色,如果Low[x]=DFN[x],就把从栈顶到节点x间的元素弹出,存入集合SCC(k)中,令k=k+1;
Step6:重复Step2到Step5,直到图中没有白色节点。
其中,
DFN[x]——指节点x被遍历的时间;
Low[x]——指在搜索树中,节点x和其子孙可以访问到的最早的祖先,Low[x]=min(DFN[x],DFN[y],Low[z]),其中y是x的祖先(把子孙连到祖先的边叫后向边),z是x的子女;
color[x]——用于标记节点x的状态,白色表示还没到搜索到,灰色表示正在被搜索,黑色表示处理完毕;
SCC——所有的强连通分量的集合,SCC={SCC(k)|k=1,2,…,Nscc},其中Nscc表示强连通分量的个数。
b)亲属关系聚合操作的过程是:
由于亲属关系网络强连通分量集合IR-Scc中的每个强连通分量中的法人代表节点之间存在亲属关系,相应亲属关系边的颜色标记为则在网络STPIIN中,将每个强连通分量所包含的多个法人代表节点聚合为一个新生法人代表聚合节点vl′,并将该新生节点vl′的颜色标记为L′,同时,删除这些聚合的法人代表节点之间的亲属关系边;此外,重新构建与这些聚合的法人代表节点均存在共同连接的企业节点和新生法人代表聚合节点vl′的边,将原有连接强连通分量集合IR-Scc中的每个强连通分量的连接边重新连接到vl′。
如图4所示,在图4(a)中,由于节点L1和L2为一个强连通分量,且它们之间存在亲属关系,因此对其进行约减,得到图4(b),其中L′为L1和L2约减后的节点。
c)互锁关系聚合操作的过程是:
由于互锁关系网络强连通分量集合IL-Scc中的每个强连通分量中的董事节点之间存在互锁关系边则在网络STPIIN-I中,将每个强连通分量所包含的多个董事节点聚合为一个新生董事聚合节点vb′,并将该新生节点vb′的颜色标记为B′,同时,删除这些聚合的董事节点间的互锁关系边;此外,重新构建与这些聚合的董事节点均存在共同连接的企业节点和新生董事聚合节点vb′的边;在将原有连接强连通分量集合IL-Scc中的每个强连通分量的连接边重新连接到vb′的同时,若存在指向外部同一节点的不同边,则分别按照颜色聚合为不同颜色的边(每种颜色只保留一条)。
如图5所示,在图5(a)中,由于董事节点B1、B2、B3为一个强连通分量,且它们之间存在互锁关系,因此对其进行约减,得到图5(b),其中B′为B1、B2、B3约减后的节点。
d)利益控制关系聚合操作的过程是:
由于利益控制关系网络强连通分量集合IC-Scc中的每个强连通分量中的企业节点之间存在利益控制关系边则在网络STPIIN-II中,将每个强连通分量所包含的多个企业节点聚合为一个新生企业聚合节点vc′,并将该新生节点vc′的颜色标记为C′,同时,删除这些聚合的企业节点间的利益控制关系边;此外,重新构建与这些聚合的企业节点均存在共同连接的其他节点和新生企业聚合节点vc′的边;在将原有连接强连通分量集合IC-Scc中的每个强连通分量的连接边重新连接到vc′的同时,若存在指向外部同一节点的不同边,则分别按照颜色聚合为不同颜色的边(每种颜色只保留一条)。
如图6所示,在图6(a)中,由于企业节点C4、C5、C6、C7为一个强连通分量,且它们之间存在利益控制关系,因此对其进行约减,得到图6(b),其中C′为C4、C5、C6、C7约减后的节点。
如图7所示,经过上述的计算步骤,图7(a)可以约减为图7(b)。首先,把图7(a)中的企业之间的控股关系、法人代表与企业之间的控制人关系、董事与企业之间的控股关系统一化简为利益控制关系。其次,基于强连通分量对网络进行约减,其中,法人代表节点L11和L12之间存在亲属关系且为强连通分量,对其进行亲属关系聚合操作,可以聚合为L1;董事节点B11和B12之间存在互锁关系且为强连通分量,对其进行互锁关系聚合操作,可以聚合为B1;企业节点C11,C12,C13之间存在利益控制关系且为强连通分量,对其进行利益控制关系聚合操作,可以聚合为C1,最终得到图7(b)。
(四)利益前件网络中的所有极大弱连通子图的发现
①生成利益前件网络(Ante-TN)和交易关系网络(Tr-TN)
对于网络TN,将其中除交易关系边之外的利益控制关系边及相应的法人代表、董事、企业节点组成的网络称为利益前件网络,用Ante-TN表示,将所有的交易关系边及相应的企业节点组成的网络称为交易关系网络,用Tr-TN表示。为方便起见,所有网络均用边链表的形式表示。
以图7(b)为例,利益前件网络Ante-TN表示为{(L1,C1),(L1,C2),(L1,C4),(L2,C3),(L3,C5),(L4,C6),(L4,C7),(B1,C7),(B1,C8),(L5,C8),(C1,C3),(C2,C5)};交易关系网络Tr-TN表示为{(C2,C4),(C3,C5),(C6,C7),(C7,C8),(C6,C8)}。
②在Ante-TN中发现所有的极大弱连通子图及其对应的交易边
对于上述①中生成的利益前件网络Ante-TN,利用改进的深度优先搜索算法寻找其中所有的极大弱连通子图,这些极大弱连通子图的集合表示为subgraph={subgraph(i)|i=1,2,…,num}中,其中num表示所发现的极大弱连通子图的个数;同时,利用上述①中生成的交易关系网络Tr-TN,寻找每个极大弱连通子图subgraph(i)中的所有交易关系边,这些交易关系边的集合表示为trade={trade(i)|i=1,2,…,num}。
上述算法的具体步骤如下:
Step1:搜索Ante-TN中的所有入度为0的节点,存入集合node-0-L中;
Step2:访问node-0-L中的任意一个节点V,并令i=1;
Step3:得到Ante-TN所对应的无向利益前件网络,用Undirected-Ante-TN表示;
Step4:在Undirected-Ante-TN中,从V的任一邻接点W出发,若W属于node-0-L,则从node-0-L中移除W;
Step5:若W未被访问过,则访问之,转Step4;若W已被访问,转Step6;
Step6:构建从V到W方向的有向边eVW=(V,W),若eVW属于Ante-TN,则将eVW存入subgraph(i)中,若eVW属于Tr-TN,则将eVW存入trade(i)中;若eVW既不属于Ante-TN也不属于Tr-TN,则构建从W到V方向的边eWV=(W,V),若eWV属于Ante-TN,则将eWV存入subgraph(i)中,若eWV属于Tr-TN,则将eWV存入trade(i)中,并构建二元组(subgraph(i),trade(i));
Step7:若node-0-L不为空,则从中任选一个节点,令i=i+1,转Step4;若node-0-L为空,则输出(subgraph,trade),即利益前件网络Ante-TN中所有的极大弱连通子图及其对应的交易关系边所构成的二元组。
以图7(b)为例,利用上述的算法,共得到两个极大弱连通子图,其中,subgraph(1)表示为{(L1,C1),(L1,C2),(L1,C4),(L2,C3),(L3,C5),(C1,C3),(C2,C5)},对应的trade(1)表示为{(C2,C4),(C3,C5)};subgraph(2)表示为{(L4,C6),(L4,C7),(B1,C7),(B1,C8),(L5,C8)},对应的trade(2)表示为{(C6,C7),(C7,C8),(C6,C8)},即二元组(subgraph,trade)包含两个元素,分别为(subgraph(1),trade(1))和(subgraph(2),trade(2))。
(五)基于多阶段MapReduce模型的纳税人偷漏税嫌疑群组发现
本方法在使用MapReduce架构实现纳税人偷漏税嫌疑群组发现时,主要涉及以下四个MapReduce过程,包括:
①构建模式树(第1个MapReduce过程)
Step1:Maper1端以二元组(subgraph,trade)为输入,并按照Hadoop分布式文件系统(HDFS)的块大小(缺省设置为64MB)对其进行分片,设分片个数为M1,则每个分片所包含的极大弱连通子图的个数为n11=N11/M1,其中N11为subgraph中的极大弱连通子图的总数,M1为Maper1任务的个数,然后,作业调度器Job1将每个分片分别交给其对应的一个Maper1任务进行处理;
Step2:调用Maper1任务的方法函数遍历分片中的subgraph(i),计算subgraph(i)中每个节点vm的入度indegreem和出度outdegreem,将subgraph(i)中所有节点的集合表示为v(i)={vm|m=1,2,…,Nv},将subgraph(i)中所有节点的入度indegreem和出度outdegreem的集合分别表示为indegree(i)={indegreem|m=1,2,…,Nv}和outdegree(i)={outdegreem|m=1,2,…,Nv},其中,Nv表示subgraph(i)中的节点总数。构建三元组(v(i),indegree(i),outdegree(i)),首先将v(i)中的各个节点按其相应的入度indegree(i)由小到大进行排序,然后将具有相同入度的节点按其出度outdegree(i)由大到小进行排序,得到排序之后的三元组(v′(i),indegree′(i),outdegree′(i)),用sorted3Tuple(i)表示,并生成键/值对<i,sorted3Tuple(i)>,存入集合keyValuesList1中,keyValuesList1暂时放在本地的内存缓冲区,若缓冲区存满,则将缓冲区的数据写入本地创建的溢写文件中;
Step3:对于keyValuesList1中的所有键/值对,首先在本地进行合并,并按键的值进行排序,然后通过分区类Partitioner1将keyValuesList1中的键/值对分为R1个分区,每个分区包含的键/值对的个数为n12=N12/R1,其中N12为keyValuesList1中的键/值对的总数,R1为Reducer1任务的个数,每个分区分别交给其对应的一个Reducer1任务进行处理;
Step4:Reducer1任务接收Maper1任务传来的有序数据,并顺序读取,把具有相同键的键/值对合并为一类,形成新的键/值对<i,sorted3TupleList>,其中,sorted3TupleList为同一个键所对应的所有三元组sorted3Tuple(i)的集合,合并后的值传给Reducer1任务的方法函数,执行对应的算法;
Step5:Reducer1任务的方法函数构建模式树的过程如下,其中,所有的模式树存入patternTreeList={patternTree(i)|i=1,2,…,num}中:
Step5.1:对键值为i的键/值对<i,sorted3TupleList>,创建一个根节点rooti;
Step5.2:遍历所有输入的<i,sorted3TupleList>,对于sorted3TupleList中的每个三元组sorted3Tuple(i),根据indegree′(i)找到v′(i)中所有入度为0的节点,存入集合startNodes(i)中,同时,将rooti到startNodes(i)中的节点的所有边存入patternTree(i)中;
Step5.3:根据outdegree′(i)判断startNodes(i)中是否存在出度不为0的节点,若存在,转Step5.4,若不存在,则输出patternTree(i),存入模式树列表patternTreeList中;
Step5.4:遍历subgraph(i)和trade(i),判断是否存在以这些出度不为0的节点为起始节点的边,若存在,则将这些边存入集合arcs(i)中,转Step5.5,若不存在,则输出patternTree(i),存入模式树列表patternTreeList中;
Step5.5:将arcs(i)中的边的终止节点存入集合endNodes(i)中,并将arcs(i)中的边存入patternTree(i)中,然后令startNodes(i)=endNodes(i),并清空arcs(i)和endNodes(i),转Step5.4。
其中,上述Step2中所述的计算subgraph(i)中的每个节点vm的入度indegreem和出度outdegreem可由以下MapReduce过程实现:
Step2.1:Maper′端把subgraph(i)按照HDFS的块大小划分为M′个分片,每个分片包含的边的个数为n1′=N1′/R′,其中N1′为subgraph(i)中的边的总数,M′为Maper′任务的个数,然后,作业调度器Job1’将每个分片分别交给其对应的一个Maper′任务进行处理;
Step2.2:对分片中的每条边e=(vm,vn)调用Maper′任务的方法函数,得到入度为0、出度为1的节点vm,以及入度为1、出度为0的节点vn,分别生成键/值对<vm,0>、<vm,1>,以及<vn,1>、<vn,0>,将入度相关的键/值对<vm,0>和<vn,1>存入入度表inKeyValuesList中,将出度相关的键/值对<vm,1>和<vn,0>存入出度表outKeyValuesList中,inKeyValuesList和outKeyValuesList暂时存放在本地的内存缓冲区,若缓冲区存满,则将缓冲区的数据写入本地创建的溢写文件中;
Step2.3:对于inKeyValuesList和outKeyValuesList中的所有键/值对,首先在本地进行合并,并按键的值进行排序,然后分区类Partitioner′将inKeyValuesList和outKeyValuesList中的键/值对分为R′个分区,每个分区包含的键/值对的个数为n2′=N2′/R′,其中N2′为inKeyValuesList或outKeyValuesList中的键/值对的总数,R′为Reducer′任务的个数,每个分区分别交给其对应的一个Reducer′任务进行处理;
Step2.4:Reducer′任务接收Maper′任务传来的有序数据,顺序读取入度表与出度表中的数据,并分别将入度表和出度表中具有相同键(如vm)的键/值对合并为一类,形成新的键/值对<vm,vminList>和<vm,vmoutList>,其中,vminList和vmoutList分别为同一个键vm所对应的所有入度和出度值的集合,合并后的值传给Reducer2任务的方法函数,执行对应的算法;
Step2.5:对同一个键vm所对应的vminList和vmoutList调用Reducer′任务的方法函数,分别将vminList和vmoutList中的所有值相加,得到节点vm的入度indegreem和出度outdegreem。
以(4)中生成的二元组(subgraph,trade)={(subgraph(1),trade(1)),(subgraph(2),trade(2))}为例,作为第一个MapReduce过程(见图8第一行)的输入,经过上述步骤后,输出的模式树列表patternTreeList中包含两个模式树patternTree(1)和patternTree(2),其中patternTree(1)表示为{(L1,C1),(L1,C2),(L1,C4),(L2,C3),(L3,C5),(C1,C3),(C2,C5),(C2,C4),(C3,C5)};patternTree(2)表示为{(L4,C6),(L4,C7),(B1,C7),(B1,C8),(L5,C8),(C6,C7),(C7,C8),(C6,C8)}。
②生成模式库(第2个MapReduce过程)
Step1:Maper2端将第1个MapReduce过程输出的模式树列表patternTreeList按照HDFS的块大小划分为M2个分片,每个分片包含的模式树的个数为n21=N21/M2,其中N21为patternTreeList中的模式树的总数,M2为Maper2任务的个数,然后,作业调度器Job2将每个分片分别交给其对应的一个Maper2任务进行处理;
Step2:调用Maper2任务的方法函数从每个模式树的根节点rooti开始遍历,遍历历经节点Ar,若遇到出度为0的节点Ar,则生成模式(rooti,A1,…,Ar),用oldPatternBase1表示,并形成键/值对<rooti,oldPatternBase1>,若首次到达某条交易边的终止节点v,则生成模式(rooti,A1,…,Ar)→v,用oldPatternBase2表示,并形成键/值对<rooti,oldPatternBase2>,将上述两种键/值对均存入集合oldKeyValuesList中,oldKeyValuesList暂时放在本地的内存缓冲区,若缓冲区存满,则将缓冲区的数据写入本地创建的溢写文件中;
Step3:对于oldKeyValuesList中的所有键/值对,首先在本地进行合并,并按键的值进行排序,然后分区类Partitioner2将oldKeyValuesList中的键/值对分为R2个分区,每个分区包含的键/值对的个数为n22=N22/R2,其中N22为oldKeyValuesList中的键/值对的总数,R2为Reducer2任务的个数,每个分区分别交给其对应的一个Reducer2任务进行处理;
Step4:Reducer2任务接收Maper2任务传来的有序数据并顺序读取,把具有相同键的键/值对合并为一类,形成新的键/值对<rooti,oldPatternBaseList>,其中,oldPatternBaseList为同一个键所对应的模式(oldPatternBase1,oldPatternBase2)的集合,合并后的值传给Reducer2任务的方法函数,执行对应的算法;
Step5:调用Reducer2任务的方法函数遍历所有输入的<rooti,oldPatternBaseList>,对于oldPatternBaseList中的每个模式,包括oldPatternBase1和oldPatternBase2,删掉其中的根节点rooti,生成模式(A1,…,Ar)和(A1,…,Ar)→v,分别用patternBase1与patternBase2表示,均存入模式列表patternBaseList中。
以①中生成的模式树列表patternTreeList={patternTree(1),patternTree(2)}为例,作为第二个MapReduce过程(见图8第二行)的输入,经过上述步骤后,输出的模式列表patternBaseList为{(L1,C1,C3)→C5,(L1,C2,C5),(L1,C2)→C4,(L1,C4),(L2,C3)→C5,(L3,C5),(L4,C6)→C7,(L4,C6)→C8,(L4,C7)→C8,(L5,C8),(B1,C7)→C8,(B1,C8)},共包含12条模式。
③生成键值对列表(第3个MapReduce过程)
Step1:Maper3端将第2个MapReduce过程输出的模式列表patternBaseList按照HDFS的块大小划分为M3个分片,每个分片包含的模式的个数为n31=N31/M3,其中N31为patternBaseList中的模式的总数,M3为Maper3任务的个数,然后,作业调度器Job3将每个分片分别交给其对应的一个Maper3任务进行处理;
Step2:调用Maper3任务的方法函数提取每个模式patternBase(包括patternBase1和patternBase2)的前件中的所有元素(A1,…,Ar)及后件元素v分别作为键,生成N1个键/值对<A1,patternBase>,…,<Ar,patternBase>,<v,patternBase>,其中N1为patternBase中的节点个数,将这些键/值对存入集合keyValuesList3中,keyValuesList3暂时放在本地的内存缓冲区,若缓冲区存满,则将缓冲区的数据写入本地创建的溢写文件中;
Step3:对于keyValuesList3中的所有键/值对,首先在本地进行合并,并按键的值进行排序,然后分区类Partitioner3将keyValuesList3中的键/值对分为R3个分区,每个分区包含的键/值对的个数为n32=N32/R3,其中N32为keyValuesList3中的键/值对的总数,R3为Reducer3任务的个数,每个分区分别交给其对应的一个Reducer3任务进行处理;
Step4:Reducer3任务接收Maper3任务传来的有序数据并顺序读取,将具有相同键w(包括键A1,…,Ar,v)的键/值对合并为一类,形成新的键/值对<w,newPatternBaseList>,其中,newPatternBaseList为同一个键所对应的所有值(模式)的集合,合并后的值传给Reducer3任务的方法函数,执行对应的算法;
Step5:调用Reducer3任务的方法函数遍历所有输入的<w,newPatternBaseList>,对于newPatternBaseList中的每个模式patternBase,若w为其前件元素,则将patternBase放入前件列表r_patternBaseList中;若w为其后件元素,则将patternBase放入后件列表v_patternBaseList中,最后,对每一个键w生成键/值对<w,r_patternBaseList>或<w,v_patternBaseList>。
为便于理解上述过程,以②中生成的模式列表patternBaseList中的模式(L1,C1,C3)→C5和(L1,C2,C5)为例,作为第三个MapReduce过程(见图8第三行)的输入,Maper3任务的方法函数提取这两个模式的前件中的所有元素及后件元素分别作为键,生成的键/值对集合keyValuesList3为{<L1,(L1,C1,C3)→C5>,<C1,(L1,C1,C3)→C5>,<C3,(L1,C1,C3)→C5>,<C5,(L1,C1,C3)→C5>,<L1,(L1,C2,C5)>,<C2,(L1,C2,C5)>,<C5,(L1,C2,C5)>},按键值进行排序之后,Reducer3任务把具有相同键的键/值对合并为一类,形成新的键/值对<L1,{(L1,C1,C3)→C5,(L1,C2,C5)}>、<C1,(L1,C1,C3)→C5>、<C2,(L1,C2,C5)>、<C3,(L1,C1,C3)→C5>、<C5,{(L1,C1,C3)→C5,(L1,C2,C5)}>,经过Reducer3任务的方法函数的处理,对于键为L1的键/值对<L1,{(L1,C1,C3)→C5,(L1,C2,C5)}>,生成的前件列表rL1_patternBaseList为{(L1,C1,C3)→C5,(L1,C2,C5)},同时形成键/值对<L1,rL1_patternBaseList>,没有生成后件列表,键值为C1,C2,C3对应的键/值对与此类似;对于键为C5的键/值对<C5,{(L1,C1,C3)→C5,(L1,C2,C5)}>,生成的前件列表rC5_patternBaseList为(L1,C2,C5),形成键/值对<C5,(L1,C2,C5)>,生成的后件列表vC5_patternBaseList为(L1,C1,C3)→C5,形成键/值对<C5,(L1,C1,C3)→C5>。
④利用键值对列表进行前件匹配(第4个MapReduce过程)
Step1:Maper4端将第3个MapReduce过程的输出按照HDFS的块大小划分为M4个分片,每个分片包含的模式的个数为n41=N41/M4,其中N41为输入的所有键/值对的个数,M4为Maper4任务的个数,然后,作业调度器Job4将每个分片分别交给其对应的一个Maper4任务进行处理;
Step2:对输入的每一个键w调用Maper4任务的方法函数,首先判断其对应的前件列表r_patternBaseList和后件列表v_patternBaseList是否均存在,若均存在,则每次从r_patternBaseList和v_patternBaseList中各取出一个模式patternBase1和patternBase2进行匹配,直到所有组合匹配完毕;反之,则不考虑该键/值对。其中,上述匹配原则为:若对应的两个模式patternBase1和patternBase2存在相同的前件元素,则匹配成功,将patternBase1和patternBase2放入模式二元组(patternBase1,patternBase2)中,并生成键/值对<w,(patternBase1,patternBase2)>,将这些键/值对存入集合keyValuesList4中,keyValuesList4暂时放在本地的内存缓冲区,若缓冲区存满,则将缓冲区的数据写入本地创建的溢写文件中;
Step3:对于keyValuesList4中的所有键/值对,首先在本地进行合并,并按键的值进行排序,然后分区类Partitioner4将keyValuesList4中的键/值对分为R4个分区,每个分区包含的键/值对的个数为n42=N42/R4,其中N42为keyValuesList4中的键/值对的总数,R4为Reducer4任务的个数,每个分区分别交给其对应的一个Reducer4任务进行处理;
Step4:Reducer4任务接收Maper4任务传来的有序数据并顺序读取,把具有相同键的键/值对合并为一类,形成新的键/值对<w,patternBasePair>,其中,patternBasePair为同一个键所对应的所有模式二元组(patternBase1,patternBase2)的集合,合并后的值传给Reducer4任务的方法函数,执行对应的算法;
Step5:对输入<w,patternBasePair>调用Reducer4任务的方法函数,取出patternBasePair中的二元组(patternBase1,patternBase2),找到patternBase1和patternBase2形成的弱连通子图,将其中包含的所有节点存入集合wccii中,然后将wccii作为输出存入偷漏税嫌疑群组列表susGroups中,即susGroups={wccii|ii=1,2,…,p},其中p表示弱连通子图的数量。
以③中生成的键/值对<C5,(L1,C2,C5)>和<C5,(L1,C1,C3)→C5>为例,作为第四个MapReduce过程(见图8第四行)的输入,由于键值C5对应的前件列表{(L1,C2,C5)}和后件列表{(L1,C1,C3)→C5}都存在,且这两个模式存在相同的前件元素L1,因此(L1,C2,C5)和(L1,C1,C3)→C5形成的弱连通子图中的所有节点集合{L1,C1,C2,C3,C5},构成了一个偷漏税嫌疑群组。
对于②中生成的模式列表patternBaseList,经过第三个和第四个MapReduce过程的处理,最终生成的偷漏税嫌疑群组列表susGroups为{{L1,C1,C2,C3,C5},{L1,C2,C4},{L4,C6,C7},{B1,C7,C8}},即,图7(b)中存在4个纳税人偷漏税嫌疑群组。
Claims (4)
1.一种基于多阶段MapReduce模型的纳税人偷漏税嫌疑群组检测方法,其特征在于,包括以下步骤:
(一)基于着色图的纳税人利益关联网络的构建
纳税人利益关联网络表示为四元组:TPIIN=(V,E,VColor,EColor);其中V={vp|p=1,…,Np}表示节点集合,其中Np表示网络中的节点个数;E表示图中所有存在边的集合,且令E={epq}={(vp,vq)|0<p,q≤Np},其中epq=(vp,vq)表示存在从第p个节点到第q个节点的有向连线;节点着色集合表示为VColor={LC,CC,BC},其中LC表示法人代表颜色;CC表示企业颜色;BC表示董事颜色;通过VColor中的颜色对TPIIN中的V节点分类可得:V=L∪C∪B,其中L={vl|l=1,…,NL,NL<Np}表示所有标记颜色为LC的法人代表节点,NL表示网络中的法人代表节点的个数,C={vc|c=1,…,NC,NC<Np}表示所有标记颜色为CC的企业节点,NC表示网络中的企业节点的个数,B={vb|b=1,…,NB,NB<Np}表示所有标记颜色为BC的董事节点,NB表示网络中的董事节点的个数,则有NL+NC+NB=Np;有向边着色集合表示为其中表示法人代表与企业之间的单向实际控制人关系;表示董事与企业之间的单向控股关系;表示企业之间的单向控股关系;表示法人代表之间双向的亲属关系;表示多个董事间的双向互锁关系;表示企业间的单向交易关系;
基于着色图的纳税人利益关联网络的构建是采用多网融合方法来生成一个纳税人利益关联网络,具体步骤如下:
Step1:从证监会、公安户籍部门、税务局获得的相关税务信息中,提取出所有的企业C、法人代表L、董事B的信息以及它们之间不同的关系信息,具体包括:企业之间的控股关系和交易关系法人代表与企业之间的实际控制人关系董事与企业之间的控股关系法人代表之间的亲属关系以及董事之间的互锁关系
Step2:利用上述6种同构关系分别构建相关的同构关系网络;
Step3:合并Step2中生成的六种同构关系网络,则构成了一个纳税人利益关联网络TPIIN;
(二)基于强连通分量的纳税人利益关联网络的约减
依据以下步骤对纳税人利益关联网络TPIIN进行逐次约减操作:
Step1:将TPIIN中法人代表与企业之间的控制人关系、董事与企业之间的控股关系与企业之间的控股关系统一归约为“利益控制关系”,用表示,即因此,由上述三种利益控制关系所分别构成的三种同构关系网络,包括企业控股关系网络IN-Net、实际控制人关系网络CL-Net以及董事控股关系网络HR-Net,也合并为一个同构关系网络,称为“利益控制关系网络”,用IC-Net表示,即IC-Net=CL-Net∪HR-Net∪IN-Net,则TPIIN简化为约减纳税人利益关联网络,用STPIIN表示,即STPIIN=IC-Net∪IR-Net∪IL-Net∪TR-Net;
Step2:对于亲属关系网络IR-Net,利用Tarjan算法找到IR-Net中所有的强连通分量,这些强连通分量的集合表示为IR-Scc,然后,基于IR-Scc中的强连通分量在STPIIN上进行亲属关系聚合操作,STPIIN变为约减后的I型纳税人利益关联网络,用STPIIN-I表示;
Step3:对于互锁关系网络IL-Net,利用Tarjan算法找到其中所有的强连通分量,这些强连通分量的集合表示为IL-Scc,然后,基于IL-Scc中的强连通分量在STPIIN-I上进行互锁关系聚合操作,STPIIN-I变为约减后的II型纳税人利益关联网络,用STPIIN-II表示;
Step4:对于利益控制关系网络IC-Net,利用Tarjan算法找到其中所有的强连通分量,这些强连通分量的集合表示为IC-Scc,然后,基于IC-Scc中的强连通分量在STPIIN-II上进行利益控制关系聚合操作,STPIIN-II变为约减后的III型纳税人利益关联网络,用STPIIN-III表示;
经过上述步骤,由纳税人利益关联网络TPIIN得到网络TN,即TN=STPIIN-III;
(三)利益前件网络中的所有极大弱连通子图的发现
①生成利益前件网络Ante-TN和交易关系网络Tr-TN
对于网络TN,将其中除交易关系边之外的利益控制关系边及相应的法人代表、董事、企业节点组成的网络称为利益前件网络,用Ante-TN表示,将所有的交易关系边及相应的企业节点组成的网络称为交易关系网络,用Tr-TN表示;
②在Ante-TN中发现所有的极大弱连通子图及其相应的交易边
对于上述①中生成的利益前件网络Ante-TN,利用改进的深度优先搜索算法寻找其中所有的极大弱连通子图,这些极大弱连通子图的集合表示为subgraph={subgraph(i)|i=1,2,…,num}中,其中num表示所发现的极大弱连通子图的个数;同时,利用上述①中生成的交易关系网络Tr-TN,寻找每个极大弱连通子图subgraph(i)中的所有交易关系边,这些交易关系边的集合表示为trade={trade(i)|i=1,2,…,num};
利用改进的深度优先搜索算法寻找Ante-TN中所有的极大弱连通子图的具体步骤如下:
Step1:搜索Ante-TN中的所有入度为0的节点,存入集合node-0-L中;
Step2:访问node-0-L中的任意一个节点V,并令i=1;
Step3:得到Ante-TN所对应的无向利益前件网络,用Undirected-Ante-TN表示;
Step4:在Undirected-Ante-TN中,从V的任一邻接点W出发,若W属于node-0-L,则从node-0-L中移除W;
Step5:若W未被访问过,则访问之,转Step4;若W已被访问,转Step6;
Step6:构建从V到W方向的有向边eVW=(V,W),若eVW属于Ante-TN,则将eVW存入subgraph(i)中,若eVW属于Tr-TN,则将eVW存入trade(i)中;若eVW既不属于Ante-TN也不属于Tr-TN,则构建从W到V方向的边eWV=(W,V),若eWV属于Ante-TN,则将eWV存入subgraph(i)中,若eWV属于Tr-TN,则将eWV存入trade(i)中,并构建二元组(subgraph(i),trade(i));
Step7:若node-0-L不为空,则从中任选一个节点,令i=i+1,转Step4;若node-0-L为空,则输出(subgraph,trade),即利益前件网络Ante-TN中所有的极大弱连通子图及其对应的交易关系边所构成的二元组;
(四)基于多阶段MapReduce模型的纳税人偷漏税嫌疑群组发现
①构建模式树
Step1:Maper1端以二元组(subgraph,trade)为输入,并按照Hadoop分布式文件系统的块大小对其进行分片,设分片个数为M1,则每个分片所包含的极大弱连通子图的个数为n11=N11/M1,其中N11为subgraph中的极大弱连通子图的总数,M1为Maper1任务的个数,然后,作业调度器Job1将每个分片分别交给其对应的一个Maper1任务进行处理;
Step2:调用Maper1任务的方法函数遍历分片中的subgraph(i),计算subgraph(i)中每个节点vm的入度indegreem和出度outdegreem,将subgraph(i)中所有节点的集合表示为v(i)={vm|m=1,2,…,Nv},将subgraph(i)中所有节点的入度indegreem和出度outdegreem的集合分别表示为indegree(i)={indegreem|m=1,2,…,Nv}和outdegree(i)={outdegreem|m=1,2,…,Nv},其中,Nv表示subgraph(i)中的节点总数;构建三元组(v(i),indegree(i),outdegree(i)),首先将v(i)中的各个节点按其相应的入度indegree(i)由小到大进行排序,然后将具有相同入度的节点按其出度outdegree(i)由大到小进行排序,得到排序之后的三元组(v′(i),indegree′(i),outdegree′(i)),用sorted3Tuple(i)表示,并生成键/值对<i,sorted3Tuple(i)>,存入集合keyValuesList1中,keyValuesList1暂时放在本地的内存缓冲区,若缓冲区存满,则将缓冲区的数据写入本地创建的溢写文件中;
Step3:对于keyValuesList1中的所有键/值对,首先在本地进行合并,并按键的值进行排序,然后通过分区类Partitioner1将keyValuesList1中的键/值对分为R1个分区,每个分区包含的键/值对的个数为n12=N12/R1,其中N12为keyValuesList1中的键/值对的总数,R1为Reducer1任务的个数,每个分区分别交给其对应的一个Reducer1任务进行处理;
Step4:Reducer1任务接收Maper1任务传来的有序数据,并顺序读取,把具有相同键的键/值对合并为一类,形成新的键/值对<i,sorted3TupleList>,其中,sorted3TupleList为同一个键所对应的所有三元组sorted3Tuple(i)的集合,合并后的值传给Reducer1任务的方法函数,执行对应的算法;
Step5:Reducer1任务的方法函数构建模式树的过程如下,其中,所有的模式树存入patternTreeList={patternTree(i)|i=1,2,…,num}中:
Step5.1:对键值为i的键/值对<i,sorted3TupleList>,创建一个根节点rooti;
Step5.2:遍历所有输入的<i,sorted3TupleList>,对于sorted3TupleList中的每个三元组sorted3Tuple(i),根据indegree′(i)找到v′(i)中所有入度为0的节点,存入集合startNodes(i)中,同时,将rooti到startNodes(i)中的节点的所有边存入patternTree(i)中;
Step5.3:根据outdegree′(i)判断startNodes(i)中是否存在出度不为0的节点,若存在,转Step5.4,若不存在,则输出patternTree(i),存入模式树列表patternTreeList中;
Step5.4:遍历subgraph(i)和trade(i),判断是否存在以这些出度不为0的节点为起始节点的边,若存在,则将这些边存入集合arcs(i)中,转Step5.5,若不存在,则输出patternTree(i),存入模式树列表patternTreeList中;
Step5.5:将arcs(i)中的边的终止节点存入集合endNodes(i)中,并将arcs(i)中的边存入patternTree(i)中,然后令startNodes(i)=endNodes(i),并清空arcs(i)和endNodes(i),转Step5.4;
②生成模式库
Step1:Maper2端将第1个MapReduce过程输出的模式树列表patternTreeList按照Hadoop分布式文件系统的块大小划分为M2个分片,每个分片包含的模式树的个数为n21=N21/M2,其中N21为patternTreeList中的模式树的总数,M2为Maper2任务的个数,然后,作业调度器Job2将每个分片分别交给其对应的一个Maper2任务进行处理;
Step2:调用Maper2任务的方法函数从每个模式树的根节点rooti开始遍历,遍历历经节点Ar,若遇到出度为0的节点Ar,则生成的模式(rooti,A1,…,Ar),用oldPatternBase1表示,并形成键/值对<rooti,oldPatternBase1>,若首次到达某条交易边的终止节点v,则生成模式(rooti,A1,…,Ar)→v,用oldPatternBase2表示,并形成键/值对<rooti,oldPatternBase2>,将上述两种键/值对均存入集合oldKeyValuesList中,oldKeyValuesList暂时放在本地的内存缓冲区,若缓冲区存满,则将缓冲区的数据写入本地创建的溢写文件中;
Step3:对于oldKeyValuesList中的所有键/值对,首先在本地进行合并,并按键的值进行排序,然后分区类Partitioner2将oldKeyValuesList中的键/值对分为R2个分区,每个分区包含的键/值对的个数为n22=N22/R2,其中N22为oldKeyValuesList中的键/值对的总数,R2为Reducer2任务的个数,每个分区分别交给其对应的一个Reducer2任务进行处理;
Step4:Reducer2任务接收Maper2任务传来的有序数据并顺序读取,把具有相同键的键/值对合并为一类,形成新的键/值对<rooti,oldPatternBaseList>,其中,oldPatternBaseList为同一个键所对应的模式的集合,合并后的值传给Reducer2任务的方法函数,执行对应的算法;
Step5:调用Reducer2任务的方法函数遍历所有输入的<rooti,oldPatternBaseList>,对于oldPatternBaseList中的每个模式,包括oldPatternBase1和oldPatternBase2,删掉其中的根节点rooti,生成模式(A1,…,Ar)和(A1,…,Ar)→v,分别用patternBase1与patternBase2表示,均存入模式列表patternBaseList中;
③生成键值对列表
Step1:Maper3端将第2个MapReduce过程输出的模式列表patternBaseList按照Hadoop分布式文件系统的块大小划分为M3个分片,每个分片包含的模式的个数为n31=N31/M3,其中N31为patternBaseList中的模式的总数,M3为Maper3任务的个数,然后,作业调度器Job3将每个分片分别交给其对应的一个Maper3任务进行处理;
Step2:调用Maper3任务的方法函数提取每个模式patternBase的前件中的所有元素(A1,…,Ar)及后件元素v分别作为键,生成N1个键/值对<A1,patternBase>,…,<Ar,patternBase>,<v,patternBase>,其中N1为patternBase中的节点个数,将这些键/值对存入集合keyValuesList3中,keyValuesList3暂时放在本地的内存缓冲区,若缓冲区存满,则将缓冲区的数据写入本地创建的溢写文件中;
Step3:对于keyValuesList3中的所有键/值对,首先在本地进行合并,并按键的值进行排序,然后分区类Partitioner3将keyValuesList3中的键/值对分为R3个分区,每个分区包含的键/值对的个数为n32=N32/R3,其中N32为keyValuesList3中的键/值对的总数,R3为Reducer3任务的个数,每个分区分别交给其对应的一个Reducer3任务进行处理;
Step4:Reducer3任务接收Maper3任务传来的有序数据并顺序读取,将具有相同键w的键/值对合并为一类,形成新的键/值对<w,newPatternBaseList>,其中,newPatternBaseList为同一个键所对应的所有值的集合,合并后的值传给Reducer3任务的方法函数,执行对应的算法;
Step5:调用Reducer3任务的方法函数遍历所有输入的<w,newPatternBaseList>,对于newPatternBaseList中的每个模式patternBase,若w为其前件元素,则将patternBase放入前件列表r_patternBaseList中;若w为其后件元素,则将patternBase放入后件列表v_patternBaseList中,最后,对每一个键w生成键/值对<w,r_patternBaseList>或<w,v_patternBaseList>;
④利用键值对列表进行前件匹配
Step1:Maper4端将第3个MapReduce过程的输出按照Hadoop分布式文件系统的块大小划分为M4个分片,每个分片包含的模式的个数为n41=N41/M4,其中N41为输入的所有键/值对的个数,M4为Maper4任务的个数,然后,作业调度器Job4将每个分片分别交给其对应的一个Maper4任务进行处理;
Step2:对输入的每一个键w调用Maper4任务的方法函数,首先判断其对应的前件列表r_patternBaseList和后件列表v_patternBaseList是否均存在,若均存在,则每次从r_patternBaseList和v_patternBaseList中各取出一个模式patternBase1和patternBase2进行匹配,直到所有组合匹配完毕;反之,则不考虑该键/值对;其中,上述匹配原则为:若对应的两个模式patternBase1和patternBase2存在相同的前件元素,则匹配成功,将patternBase1和patternBase2放入模式二元组(patternBase1,patternBase2)中,并生成键/值对<w,(patternBase1,patternBase2)>,将这些键/值对存入集合keyValuesList4中,keyValuesList4暂时放在本地的内存缓冲区,若缓冲区存满,则将缓冲区的数据写入本地创建的溢写文件中;
Step3:对于keyValuesList4中的所有键/值对,首先在本地进行合并,并按键的值进行排序,然后分区类Partitioner4将keyValuesList4中的键/值对分为R4个分区,每个分区包含的键/值对的个数为n42=N42/R4,其中N42为keyValuesList4中的键/值对的总数,R4为Reducer4任务的个数,每个分区分别交给其对应的一个Reducer4任务进行处理;
Step4:Reducer4任务接收Maper4任务传来的有序数据并顺序读取,把具有相同键的键/值对合并为一类,形成新的键/值对<w,patternBasePair>,其中,patternBasePair为同一个键所对应的所有模式二元组(patternBase1,patternBase2)的集合,合并后的值传给Reducer4任务的方法函数,执行对应的算法;
Step5:对输入<w,patternBasePair>调用Reducer4任务的方法函数,取出patternBasePair中的二元组(patternBase1,patternBase2),找到patternBase1和patternBase2形成的弱连通子图,将其中包含的所有节点存入集合wccii中,然后将wccii作为输出存入偷漏税嫌疑群组列表susGroups中,即susGroups={wccii|ii=1,2,…,p},其中p表示弱连通子图的数量。
2.根据权利要求1所述的一种基于多阶段MapReduce模型的纳税人偷漏税嫌疑群组检测方法,其特征在于,基于着色图的纳税人利益关联网络的构建中Step2:利用上述6种同构关系分别构建相关的同构关系网络,具体构造过程如下:
Step2.1:对于企业C中的所有企业节点,在控股企业和被控股企业之间添加单向控股边形成企业控股关系网络IN-Net;
Step2.2:对于企业C中的所有企业节点,在卖出企业和购入企业之间添加单向交易边形成交易关系网络TR-Net;
Step2.3:对于法人代表L中的所有法人代表节点和企业C中的所有企业节点,若某个法人代表节点和某个企业节点之间存在单向实际控制人关系,则添加单向实际控制人边形成实际控制人关系网络CL-Net;
Step2.4:对于董事B中的所有董事节点和企业C中的所有企业节点,若某个董事节点和某个企业节点之间存在单向控股关系,则添加单向控股边形成董事控股关系网络HR-Net;
Step2.5:对于法人代表L中的所有法人代表节点,在存在亲属关系的两个法人代表节点之间添加双向亲属关系边形成亲属关系网络IR-Net;
Step2.6:对于董事B中的所有董事节点,在存在互锁关系的两个董事节点之间添加双向互锁关系边形成互锁关系网络IL-Net。
3.根据权利要求1所述的一种基于多阶段MapReduce模型的纳税人偷漏税嫌疑群组检测方法,其特征在于,基于强连通分量的纳税人利益关联网络的约减中的亲属关系聚合操作、互锁关系聚合操作与利益控制关系聚合操作具体如下:
a)亲属关系聚合操作:
由于亲属关系网络强连通分量集合IR-Scc中的每个强连通分量中的法人代表节点之间存在亲属关系,相应亲属关系边的颜色标记为则在网络STPIIN中,将每个强连通分量所包含的多个法人代表节点聚合为一个新生法人代表聚合节点v′l,并将该新生节点v′l的颜色标记为L′,同时,删除这些聚合的法人代表节点之间的亲属关系边;此外,重新构建与这些聚合的法人代表节点均存在共同连接的企业节点和新生法人代表聚合节点v′l的边,将原有连接强连通分量集合IR-Scc中的每个强连通分量的连接边重新连接到v′l;
b)互锁关系聚合操作:
由于互锁关系网络强连通分量集合IL-Scc中的每个强连通分量中的董事节点之间存在互锁关系边则在网络STPIIN-I中,将每个强连通分量所包含的多个董事节点聚合为一个新生董事聚合节点v′b,并将该新生节点v′b的颜色标记为B′,同时,删除这些聚合的董事节点间的互锁关系边;此外,重新构建与这些聚合的董事节点均存在共同连接的企业节点和新生董事聚合节点v′b的边;在将原有连接强连通分量集合IL-Scc中的每个强连通分量的连接边重新连接到v′b的同时,若存在指向外部同一节点的不同边,则分别按照颜色聚合为不同颜色的边,每种颜色只保留一条;
c)利益控制关系聚合操作:
由于利益控制关系网络强连通分量集合IC-Scc中的每个强连通分量中的企业节点之间存在利益控制关系边则在网络STPIIN-II中,将每个强连通分量所包含的多个企业节点聚合为一个新生企业聚合节点v′c,并将该新生节点v′c的颜色标记为C′,同时,删除这些聚合的企业节点间的利益控制关系边;此外,重新构建与这些聚合的企业节点均存在共同连接的其他节点和新生企业聚合节点v′c的边;在将原有连接强连通分量集合IC-Scc中的每个强连通分量的连接边重新连接到v′c的同时,若存在指向外部同一节点的不同边,则分别按照颜色聚合为不同颜色的边,每种颜色只保留一条。
4.根据权利要求1所述的一种基于多阶段MapReduce模型的纳税人偷漏税嫌疑群组检测方法,其特征在于,构建模式树中Step2中所述的计算subgraph(i)中的每个节点vm的入度indegreem和出度outdegreem由以下MapReduce过程实现:
Step2.1:Maper′端把subgraph(i)按照Hadoop分布式文件系统的块大小划分为M′个分片,每个分片包含的边的个数为n′1=N′1/R′,其中N′1为subgraph(i)中的边的总数,M′为Maper′任务的个数,然后,作业调度器Job1’将每个分片分别交给其对应的一个Maper′任务进行处理;
Step2.2:对分片中的每条边e=(vm,vn)调用Maper′任务的方法函数,得到入度为0、出度为1的节点vm,以及入度为1、出度为0的节点vn,分别生成键/值对<vm,0>、<vm,1>,以及<vn,1>、<vn,0>,将入度相关的键/值对<vm,0>和<vn,1>存入入度表inKeyValuesList中,将出度相关的键/值对<vm,1>和<vn,0>存入出度表outKeyValuesList中,inKeyValuesList和outKeyValuesList暂时存放在本地的内存缓冲区,若缓冲区存满,则将缓冲区的数据写入本地创建的溢写文件中;
Step2.3:对于inKeyValuesList和outKeyValuesList中的所有键/值对,首先在本地进行合并,并按键的值进行排序,然后分区类Partitioner′将inKeyValuesList和outKeyValuesList中的键/值对分为R′个分区,每个分区包含的键/值对的个数为n′2=N′2/R′,其中N′2为inKeyValuesList或outKeyValuesList中的键/值对的总数,R′为Reducer′任务的个数,每个分区分别交给其对应的一个Reducer′任务进行处理;
Step2.4:Reducer′任务接收Maper′任务传来的有序数据,顺序读取入度表与出度表中的数据,并分别将入度表和出度表中具有相同键vm的键/值对合并为一类,形成新的键/值对<vm,vminList>和<vm,vmoutList>,其中,vminList和vmoutList分别为同一个键vm所对应的所有入度和出度值的集合,合并后的值传给Reducer2任务的方法函数,执行对应的算法;
Step2.5:对同一个键vm所对应的vminList和vmoutList调用Reducer′任务的方法函数,分别将vminList和vmoutList中的所有值相加,得到节点vm的入度indegreem和出度outdegreem。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510920257.3A CN105574649B (zh) | 2015-12-10 | 2015-12-10 | 一种基于多阶段MapReduce模型的纳税人偷漏税嫌疑群组检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510920257.3A CN105574649B (zh) | 2015-12-10 | 2015-12-10 | 一种基于多阶段MapReduce模型的纳税人偷漏税嫌疑群组检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105574649A true CN105574649A (zh) | 2016-05-11 |
CN105574649B CN105574649B (zh) | 2021-05-28 |
Family
ID=55884752
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510920257.3A Active CN105574649B (zh) | 2015-12-10 | 2015-12-10 | 一种基于多阶段MapReduce模型的纳税人偷漏税嫌疑群组检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105574649B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106067139A (zh) * | 2016-05-31 | 2016-11-02 | 北京红马传媒文化发展有限公司 | 一种构建特征数据库的方法、系统和装置 |
CN106294834A (zh) * | 2016-08-18 | 2017-01-04 | 西安交通大学 | 基于纳税人利益关联网络的关联交易偷漏税行为识别方法 |
CN107229677A (zh) * | 2017-05-07 | 2017-10-03 | 东北大学 | 一种枚举控制网络所需的所有最小输入节点集合的方法 |
CN110232078A (zh) * | 2019-04-26 | 2019-09-13 | 上海生腾数据科技有限公司 | 一种企业集团关系获取方法及系统 |
CN110288507A (zh) * | 2019-05-06 | 2019-09-27 | 中国科学院信息工程研究所 | 一种基于gpu的多分区强连通图检测方法 |
CN110378559A (zh) * | 2019-06-12 | 2019-10-25 | 西安交通大学 | 一种基于广义最大流的纳税企业信用评估方法 |
CN110826976A (zh) * | 2019-09-18 | 2020-02-21 | 上海生腾数据科技有限公司 | 一种企业实际控制人运算系统及方法 |
WO2022011947A1 (zh) * | 2020-10-23 | 2022-01-20 | 平安科技(深圳)有限公司 | 一种交易数据的处理方法、装置、计算机设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662639A (zh) * | 2012-04-10 | 2012-09-12 | 南京航空航天大学 | 一种基于Mapreduce的多GPU协同计算方法 |
CN103383767A (zh) * | 2013-07-12 | 2013-11-06 | 西安交通大学 | 基于纳税人利益关联网络模型的偷漏税关联企业识别方法 |
CN104103011A (zh) * | 2014-07-10 | 2014-10-15 | 西安交通大学 | 一种基于纳税人利益关联网络的可疑纳税人识别方法 |
CN104156905A (zh) * | 2014-08-15 | 2014-11-19 | 西安交通大学 | 一种基于纳税人利益关联网络的重点监控企业评估方法 |
CN104317942A (zh) * | 2014-10-31 | 2015-01-28 | 北京思特奇信息技术股份有限公司 | 一种基于Hadoop云平台的海量数据比对方法及系统 |
CN104517232A (zh) * | 2014-12-19 | 2015-04-15 | 西安交通大学 | 一种挖掘纳税金额突增的关联纳税人群体的方法 |
-
2015
- 2015-12-10 CN CN201510920257.3A patent/CN105574649B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662639A (zh) * | 2012-04-10 | 2012-09-12 | 南京航空航天大学 | 一种基于Mapreduce的多GPU协同计算方法 |
CN103383767A (zh) * | 2013-07-12 | 2013-11-06 | 西安交通大学 | 基于纳税人利益关联网络模型的偷漏税关联企业识别方法 |
CN104103011A (zh) * | 2014-07-10 | 2014-10-15 | 西安交通大学 | 一种基于纳税人利益关联网络的可疑纳税人识别方法 |
CN104156905A (zh) * | 2014-08-15 | 2014-11-19 | 西安交通大学 | 一种基于纳税人利益关联网络的重点监控企业评估方法 |
CN104317942A (zh) * | 2014-10-31 | 2015-01-28 | 北京思特奇信息技术股份有限公司 | 一种基于Hadoop云平台的海量数据比对方法及系统 |
CN104517232A (zh) * | 2014-12-19 | 2015-04-15 | 西安交通大学 | 一种挖掘纳税金额突增的关联纳税人群体的方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106067139A (zh) * | 2016-05-31 | 2016-11-02 | 北京红马传媒文化发展有限公司 | 一种构建特征数据库的方法、系统和装置 |
CN106294834A (zh) * | 2016-08-18 | 2017-01-04 | 西安交通大学 | 基于纳税人利益关联网络的关联交易偷漏税行为识别方法 |
CN106294834B (zh) * | 2016-08-18 | 2018-04-17 | 西安交通大学 | 基于纳税人利益关联网络的关联交易偷漏税行为识别方法 |
CN107229677A (zh) * | 2017-05-07 | 2017-10-03 | 东北大学 | 一种枚举控制网络所需的所有最小输入节点集合的方法 |
CN110232078A (zh) * | 2019-04-26 | 2019-09-13 | 上海生腾数据科技有限公司 | 一种企业集团关系获取方法及系统 |
CN110232078B (zh) * | 2019-04-26 | 2021-03-30 | 上海合合信息科技股份有限公司 | 一种企业集团关系获取方法及系统 |
CN110288507A (zh) * | 2019-05-06 | 2019-09-27 | 中国科学院信息工程研究所 | 一种基于gpu的多分区强连通图检测方法 |
CN110378559A (zh) * | 2019-06-12 | 2019-10-25 | 西安交通大学 | 一种基于广义最大流的纳税企业信用评估方法 |
CN110378559B (zh) * | 2019-06-12 | 2021-08-13 | 西安交通大学 | 一种基于广义最大流的纳税企业信用评估方法 |
CN110826976A (zh) * | 2019-09-18 | 2020-02-21 | 上海生腾数据科技有限公司 | 一种企业实际控制人运算系统及方法 |
WO2022011947A1 (zh) * | 2020-10-23 | 2022-01-20 | 平安科技(深圳)有限公司 | 一种交易数据的处理方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105574649B (zh) | 2021-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105574649A (zh) | 一种基于多阶段MapReduce模型的纳税人偷漏税嫌疑群组检测方法 | |
CN106897351B (zh) | 有向无环图型区块链的生成方法及系统 | |
CN108228724A (zh) | 基于图数据库的电网gis拓扑分析方法及存储介质 | |
CN108038136A (zh) | 基于图模型的企业知识图谱的建立方法和图形化查询方法 | |
CN102819664B (zh) | 一种基于图形处理单元的影响最大化并行加速方法 | |
CN106203491A (zh) | 一种公路矢量数据的融合更新方法 | |
CN105743871B (zh) | 一种基于判定树的防火墙策略冲突检测方法 | |
CN104270384B (zh) | 防火墙策略冗余检测方法及装置 | |
CN104317886B (zh) | 断层约束下网格节点插值时近邻条件数据点的搜索选取方法 | |
CN104392010A (zh) | 一种子图匹配的查询方法 | |
CN105976048A (zh) | 一种基于改进人工蜂群算法的输电网扩展规划方法 | |
CN103473636A (zh) | 一种收集、分析和分发网络商业信息的系统数据组件 | |
CN115860529A (zh) | 基于工业互联网的供应链碳核算系统 | |
CN106815302A (zh) | 一种应用于游戏道具推荐的频繁项集挖掘方法 | |
CN103793589B (zh) | 一种高速列车故障处理方法 | |
CN105630797A (zh) | 数据处理方法及系统 | |
Alves et al. | A review of network DEA models based on slacks‐based measure: evolution of literature, applications, and further research direction | |
CN106097091A (zh) | 一种面向互锁股东利益输送行为的嫌疑群组识别方法 | |
CN109783696A (zh) | 一种面向弱结构相关性的多模式图索引构建方法及系统 | |
CN114398685A (zh) | 一种政务数据处理方法、装置、计算机设备及存储介质 | |
Aleem et al. | Business process mining approaches: a relative comparison | |
CN103984760B (zh) | 面向内容发布订阅系统的数据结构及其混合事件匹配方法 | |
CN109063089B (zh) | 一种基于社区结构的子图匹配方法及装置 | |
CN105022689A (zh) | 一种发现大型面向对象软件系统关键测试函数的方法 | |
CN108804599A (zh) | 一种相似子图的快速查找方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |