Skip to content

Establishing the call fingerprint database basing on the way of data mining to identify users.

Notifications You must be signed in to change notification settings

bupt-bricklayer/Call-Fingerprint

Repository files navigation

Call-Fingerprint

运营商部分电信社会网络数据的最佳呼叫指纹特征提取的研究



项目背景

为了改变当前“数据丰富知识匮乏”的状况,数据挖掘技术得到了众多企业的重视。电信行业竞争激烈,重入网和潮汐用户给运营商带来资源消耗。当前国内外对于使用电信数据建立呼叫指纹库的研究主要集中于重入网侦测和用户离网预警手段研究等方面,通过数据挖掘的算法探求数据和用户特征的关系,并通过历史数据搭建一个呼叫指纹库,再利用现有数据构建用户特征,判别用户的重入网现象和预警用户离网,以实现资源的合理分配。本项目主要着重于利用分类和比对算法研究对电信社会网络数据的特征提取,即对呼叫指纹库的建立,并希望借用数据挖掘算法探究出一套可行的特征提取方案,建立某一特定条件下性能最佳的呼叫指纹库。
随着大数据概念的普及,数据挖掘算法越来越受到运营商的重视。首先其坐拥大量用户数据,有充足的数据量来对其用户进行行为特征研究,其次,其对于用户特征研究的需求随着用户行为的异常而不断提高,例如本项目的研究方向即服务于用户的重入网识别,许多实际上相同的用户会恶意申请多个号码进行一些特殊操作,以达到获利的目的。在这样的背景下,在一定的用户范围下研究用户特征的提取算法,以达到识别最优化的目的,这一研究变得日益重要。故本项目基于运营商的部分用户社会网络数据,从对数据最基本的理论认识提取特征开始,通过分类和比对算法来对比特征提取的优劣,并逐步深入理解各数据类对结果的贡献度,从而逐渐优化呼叫指纹库的提取方案,提出在一定条件下最优化的电信社会网络数据特征提取算法。

运营商部分社会网络数据类型介绍

原始数据格式

下面介绍运营商部分电信数据的格式。由于运营商数据难以获得,下面介绍的是部分经过加密后的数据以及数据类型。我们希望通过这一介绍逐步深入建立对这一特殊数据类型的理解,从而初步建立其社会网络模型。如图一所示为该数据的基本数据类型,其中字段call_type即为呼叫类型,其中1代表主叫,2代表被叫;字段cus_num代表本端号码,即发起通话的号码(经过加密的);字段opp_num代表对端的号码,其可能有本运营商的同时也有其它运营商的(也是经过加密的);字段start_time代表该通话发起的时间;字段call_dur代表该通话持续的时间(秒);lac和cellid字段都是用户的位置信息,即位置区识别码和蜂窝小区id;attr_code字段代表本端的归属区号;roam_code字段表示其漫游地的归属区号;opp_attr_code字段表示对端的归属区号;roam_type字段代表漫游类型,属性值可为1至5;opp_operator代表对端运营商,属性值可以为1至3;longdis_type代表长途通话类型,属性值可以为1至5。



图一 数据格式类型


如图二,原始数据的格式为“一对多”的形式,即一个cus_num对应着多个opp_num,对应每个cus_num分为一个部分的话,每个部分都详细的描述了该cus_num在一定时间范围内的通话信息,包括每一个通话记录的详细信息,由此可见原始数据提供的信息量非常大而且非常具体,不考虑算法可实现性和复杂度的问题时,可直接利用原始数据进行比对,但由于数据挖掘领域研究的不断深入,呼叫指纹的概念被提出,对原始数据进行比对分析,通过手工提取或数学理论算法进行特征提取以建立完备的特征库,该特征库即为呼叫指纹库,提取出的用户特征即称为呼叫指纹,这可以是多元的非网络数据的特征提取问题,也可以是社会网络节点特征提取的问题。



图二 部分数据


社会网络构图初步

依据上述数据,考虑构建其社会网络的数据形式。我们依据opp_operator字段提取出与其同运营商的部分数据,并与全数据集比较,若存在cus_num与其opp_num号码相同的则为第一类数据,与其不同的或运营商不同的数据为第二类,故可以依据第一类数据来构图,再依据第二类数据来部分完善该图的节点属性。在完善节点和边属性的部分,依据原始数据里的字段,call_type、start_time、call_dur、roam_code、roam_type、longdis_type均可归为边属性,而cus_num、lac、cellid、attr_code则作为节点属性,opp_num、opp_attr_num作为对端节点属性,再通过另外一条对应数据完善其lac和cellid,这样便可以构建出一个运营商内部的社会网络,便可利用社会网络的方法分析问题。
根据上面的方法,可以得出初步的原始运营商内部的电信社会网络,虽然对于大数据集来说其网络的组建信息仍十分有限,但该方法由于其社会网络特性可以作为一个切入方向。
如下为网络中的一条路径:



可以看出该图中节点属性为四维向量,边属性为七维向量,这对于存储来说是非常不利的,无论是采用edgelist形式还是邻接矩阵形式都需要采用其它文件和标签来记录节点和边的属性向量,还需要通过记录第二类数据来完善该节点属性信息,其数据处理复杂度和处理完成后的数据集大小都是巨大的,故这里可采用一些降维的方法来缩减数据量,并通过结果来变更降维方法,以达到更优化的特征提取的目的。

手工特征提取方法的探究

我们尝试了不同的手工特征提取的方法,包括从多元的非网络数据和社会网络节点特征提取方向,并利用距离算法来初步比对了各种不同方法的优劣,虽然使用距离算法并不能完全展现出特征提取的优劣,只能展示它们的线性分类的好坏,但可以初步判别一些异常较为明显的提取方法。我们的工作目前仅限于在多元的非网络数据方向提出了特征提取的一套方案,社会网络节点特征方向的比对仍需继续研究。

非网络方向目前的提取方法

为了达到效果,我们在研究了不同的通信数据理论的基础上,在整理了数据之后,对比分析了原始数据中各条的差异度后得出了一些结论。例如:



图三 漫游区号和对端号码归属区号归一化后对比图


由图可以看出漫游地区号和对端号码归属区号的异常率(即不在本区的次数占总次数的比例)分布起伏较大,不同客户的位置移动频率是不同的,有很大差别。但大多数用户的位置信息异常率为0,因此异常率对于异常率不为0的用户识别贡献度很高,但对异常率为0的用户识别贡献率为0。



图四 不同用户通话次数趋势图


由于不同用户的工作需要和交通圈大小不同,其月通话次数也会有很大不同。从其分布图来看,不同用户的通话次数分布变化很大,对识别不同的用户贡献度较高。



图五 用户通话时间分布对比


用户每次通话时间以30s为间隔分类,用来反映用户每次通话时间趋势。由上图可看出:在选取的用户中,通话时间基本控制在60s以内,其中绝大部分在30s以内,这可以作为用户的通话特征。
具体的对比结果将展示在项目主页中。我们通过这些结论,初步总结了以下原则:

  • 通话类型:有其固定的类型不予以处理;
  • 对端号码以及位置信息:由于对端号码和位置信息由唯一码编码加密,本项目取其频率最高的几位建立起交往圈。其中选取频率最高的五个对端号码以及频率最高的三个lac以及ceilid号码并去其后四位。
  • 通话时长:分为十个维度区分不同的通话时长。
  • 通话开始时间:全天分为四个时段、全月分为上中下旬进行统计。
  • 漫游地区号和对端号码归属区号:由于用户通话位置的确定性,这两个属性少有变动,只需计算其异常率即可。

并且对比了不依据该原则的一些其它特征提取方法,发现这些方法在距离对比上明显劣势,故采用该特征提取方法,并采用不同的提取参数进行方案设计。
下面介绍具体的提取方案。根据以上原则,我们进行手工的特征提取,提取出后每个月数据共有一千个用户,即一千行,并设计了以下字段:
fre1_num4 call_fre1 fre2_num4 call_fre2 fre3_num4 call_fre3 fre4_num4 call_fre4 fre5_num4 call_fre5 lacfre1_num4 lac_fre1 lacfre2_num4 lac_fre2 lacfre3_num4 lac_fre3 cefre1_num4 cellid_fre1 cefre2_num4 cellid_fre2 cefre3_num4 cellid_fre3 T1_fre T2_fre T3_fre T4_fre T5_fre T6_fre early_fre late_fre mid_term_fre opp_attr_code_ur roam_code_ur single_num call_type1 call_type2 dur_type120<x<=150 dur_type150<x<=180 dur_type180<x<=210 dur_type210<x<=240 dur_type240<x<=270 dur_type30<x<=60 dur_type60<x<=90 dur_type90<x<=120 dur_typex<=30 dur_typex>270 longdis_type0 longdis_type2 longdis_type3 longdis_type4 longdis_type5 opp_operator0 opp_operator1 opp_operator2 opp_operator3 opp_operator4 roam_type0 roam_type1 roam_type4 roam_type5
其中,fre(x)_num4是指对端通话出现频率高低排序第x个的用户号码后四位;call_fre(x)是对应于前一个字段,指出现频率高低排序第x个用户的次数;lacfre(x)_num4和lac_fre(x)、T(x)_fre、cellid_fre(x),cefre(x)_num4字段同理;single_num字段代表通话次数;dur_type代表通话持续时间,该类项用于统计其不同通话时间出现的次数;后面的字段均为统计类别出现的次数。
经过这样的提取后,我们得到的特征库如图六所示。



图六 手工提取的呼叫指纹库数据


我们对原始数据的6个月分别作了该处理,并将前五个月分别与第六个月进行比对,综合比对结果,然后将前五个月的数据进行加权平均处理后再与第六个月进行比对,我们发现对于这样的数据,其由距离比对的准确度可以达到半数以上。我们均匀提取了加权后的数据的部分置于项目主页中作为对照。

社会网络数据方向的特征提取与比对构想

基于目前的社会网络特征提取算法的研究,我们考虑到可以利用网络表示学习来进行社会网络的数学特征提取。网络表示学习的代表性算法DeepWalk最先提出利用语义处理算法Skip-Gram依据网络结构进行社会网络的节点表示学习,随后出现了许多对其算法的完善,例如Text-Associated DeepWalk(TADW)[1]算法就是在其基础上提出了等效的矩阵运算形式并加入文本特征矩阵来代表节点本身的文本属性,大大降低了由于random walk导致的算法复杂度,并在各种文本内容丰富的社会网络表示中性能良好。



图七 网络表示学习各算法在文本属性社会网络上的表示性能对比


在我们研究的问题里,如前文所述,我们构建的社会网络的形式为节点和边属性维数均比较高,在经过PCA算法线性降维后可全部降至一维,然后再根据TADW等一类算法的思想,对节点属性和边属性进行矩阵化,再利用DeepWalk算法进行改进,将属性值和网络结构一起进行表示。由于TADW算法利用的BoW模型进行文本属性的表示,故我们直接在其基础上,将边属性特征直接加进对端节点,从而对BoW数据进行修改,直接调用openNE包种的TADW算法。由于DeepWalk算法的性质决定了其只能进行关联学习,故将五个月的数据包含id,第六个月的数据不包含id进行大网络的集中学习,提取出2000个embedding,其中前五个月为一千个有id数据,第六个月为一千个无id数据,然后再进行比对。虽然这样提取出的特征对原数据信息量的概括比较完善,但在比对方面无法用分类器进行细化分类比对,故其本质是链接预测问题,我们下一步将结合链接预测的方法对该特征库进行比对以比较其性能优劣,故这方面成果暂时不置于项目主页中。

最终指纹库比对方法的探究

虽然我们的本意是为了构建性能更优化的呼叫指纹,但对于特征提取方法来说,最终比对方法的选择是否合理对该特征提取方法亦十分重要,故我们打算进一步探究一些指纹库比对方法以进行更显著的特征提取方法对比。


非网络数据特征提取的比对方法

由于当今大数据领域分类器的成熟,通过分类器的拟合学习能力来解决比对问题的想法已有许多人提出,运营商也开始初步使用决策树等算法对用户进行分类和比对。故在我们的项目中,由于我们的数据特性,即存在前五个月的特征库和第六个月的特征库,可有以下两种思路:

  • 将前五个月数据整合,每五个数据含有一个标签,将总共五千条数据导入分类器进行分类模型的拟合学习,分一千类,然后再将第六个月的数据逐条导入模型进行比对判别计算其准确率。但由于目前分类器性能限制,分一千类的性能会非常不好。
  • 直接对每个月数据按照一些特点进行手工标签分类,考虑到目前分类器的性能,我们打算将其分为百类以内,分几个不同数值,然后在使用第六个月比对时先判定该条数据的类别,然后在该类中进行距离比对,可以提高准确度和算法性能。

以上两种思路都可服务于我们的手工特征提取方案,但受限于分类器性能和新的距离算法的不断提出,我们认为第二种的可实现性较大。
我们是在实现第二种想法时,手工将数据分为10类,20类,50类,100类后,分类标准为各特征向量间的距离的大小,将距离在一定数值范围的分为一类,以便分类后更好的进行距离比对。经过PCA降维后,分别利用SVM和神经网络进行线性的和非线性的分类拟合,由于我们没有完全完成该分类比对工作,故先给出降维后的数据趋势图:



图八 PCA线性降维后的数据趋势图


由图可以直观看出该特征提取方案有较为良好的用户区分特性,并且可以很好地被拟合分类,然后进行距离算法比对。

社会网络数据特征提取的对比方法

由于这方面的理论与算法都已经获得了进一步的发展和探索,故我们在学习了相关方法的基础上提出一些具体思路:

  • 可以对获取的特征同样进行3.1中的比对思路,然后同3.1的结果进行对比,观察哪种方法更加适合这一数据背景。
  • 采用链接预测的方法,由于目前成熟的Link Prediction算法都着重于图的不同特征,对我们的数据难以涵盖全部特征属性,故我们打算选择不同的链接预测算法[2]如Common Neighbor、Preferential Attachment等来进行套用并对算法进行数据适应上的改进。

这些都是我们下一步的工作。

总结展望

对于来说,这一项目涉及的领域比较广,但都集中在分类领域和社会网络领域的研究中。由于运营商间的壁垒存在,该中运营商电信数据的社会网络特性并不足够明显,我们在实际处理时发现,若采用社会网络数据形式,其非网络的属性数据的量比较庞大,因为大部分数据都是来自其它运营商的。所以对于这种数据我们更应该结合两种角度进行更优化的思考。现今对于呼叫指纹库这一课题的研究已非常深入,其商业化速度也很快,但其准确度大都不高,故提出一些更为优化的想法十分必要。
由于我们目前对分类和非网络数据的处理更为熟练,故在有限的时间中总结了以上工作,而对社会网络数据的处理较为生疏,这也是我们下一步需要努力的方向,即结合两种思路找出一种更为良好的综合方法来处理数据,构建呼叫指纹库。我们将继续探究一些新的想法,加强自己的算法实现能力,以更好地研究该工作。

About

Establishing the call fingerprint database basing on the way of data mining to identify users.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages