查看原文
其他

数据挖掘案例—猫池终端识别模型和日间隔预警模型

2015-12-26 王保强 DBAplus社群


本文根据12月24日海南移动架构师王保强老师在【DBA+社群,微信公众号:dbaplus】的主题分享整理!小编特别整理出其中精华内容,供大家学习交流。同时,也非常感谢王保强老师对DBA+社群给予的大力支持。


目录

  • 猫池介绍

  • 终端识别模型

  • 日间隔预警模型


关于数据挖掘,我给大家分享的案例是猫池终端识别模型和日间隔预警模型。当然作为运营商一般是自己很少全程参与的,但这两个模型基本上从需求定义、指标选取、指标确认、挖掘算法、模型结果确认和优化是我参与和把控的


猫池介绍


猫池(外文名:ModemPOOL)就是将相当数量的Modem使用特殊的拨号请求接入设备连接在一起,可以同时接受多个用户拨号连接的设备。


猫池分不同用途,可以单独认为它是仅仅基于电话的一种扩充装备,而不去区分它的上网或者手机讯号收发效应。 它使用电话的中继功能,即一个号码多条线路。


猫池广泛应用于大量具有多用户远程联网需求的单位或需要向从多用户提供电话拨号联网服务的单位。如邮电局、税务局、海关、银行、证券商、各类交易所、期货经纪公司、工商局、各类信息呼叫中心等。



简单说来就是一台设备,这个设备是为了方便人们的批量使用的。


终端识别模型



如果只是简单的设备和应用,没必要大惊小怪的。问题出在哪里呢,运营商是以KPI为导向的,用户数、终端数,为了KPI,运营商的分公司会造假、渠道会造假、甚至部分分公司配合渠道造假。但是移动发放SIM/USIM卡双为了发展新用户、发展市场占有率,同时也发放正常的佣金给渠道。移动卖终端也是为了维系老用户,巩固市场占有率,总的目标是为了“用户”。但渠道不同,他的本质在于逐利。除了正常的佣金/酬金,还想赚取倒卡的利润,低价批量获取移动资源,高价卖给用户。终端也是,争取赚取更多的差价,创造更多利润。


当然运营商也会对渠道进行考核,希望用户用起来卡和终端,而不是虚耗资源。但渠道的对策是采用机卡分离,制造两者使用的假象这就是我们本次挖掘的目标,把渠道制造的假象和行为识别出来。


前面啰里啰唆说了这么多,就是为了找到数据挖掘出发点。渠道套机是为了获利,因此机终端在收入、流量、通话行为、终端行为等指标上会存在相似的特征,且显著有别于正常的终端,因此识别猫池终端存在可行性。基于对猫池终端的以上理解,选择从终端的收入、计费时长、流量、通话时长、通话次数、通话基站数、激活终端数、主用终端数、交往圈终端数、主被叫通话占比、通话行为集中次数等指标。渠道制造使用的假象本质也是为了利润,所以他投入的成本要小于运营商的佣金,这样才有盈利的空间。世面上猫池设备提供这种便利可能性,当然机器终归是机器,其行为必定与正常用户有所区别。



这是我们经过认真分析后得到的指标。主要是终端的消费行为,终端自身的行为、终端与渠道的关系、终端与号码的关系。经分系统的数据表有1万+以上,报表5000+,指标数千,并不是所有的指标都可以直接拿来挖掘的。挖掘的误区是,给我现有的几百个指标,我可以得到任何想要的用户模型,而且成本都是一样的。通话行为集中次数-该终端在一个月中有几次出现这样的情况:在同一天,同一基站下,向同一人通话,且通话时间在30s以内,且通话次数大于2次,光看这个指标就很绕口。实现是从通话清单出的,现有的DB2数据仓库,每天只能跑4、5天的数据。激活终端数,激活该终端的号码激活了另外多少部终端。主用终端数,该终端的主用号码还有多少部主用终端。是从终端找号码,再从号码找终端。


这20个指标的开发用了大约3个月时间。运行2个月数据花了半个月,所以数据准备期是最长的。


接下来是数据探索


探索是对数据进行初步研究,以便更好地理解它的特殊性质。数据探索有助于选择合适的数据预处理和数据分析技术。它甚至可以处理一些通常由数据挖掘解决的问题,例如,有时可以通过对数据进行直观检查来发现模式。


数据探索的一种常用方法是“可视化”。数据可视化是指以图形或表格的形式显示信息。成功的可视化需要将数据(信息)转换成可视的形式,以便能够借此分析或报告数据的特征和数据项或属性之间的关系。在数据分析中,可视化技术(如图和表等)常常是优先选择的方法。尽管数据挖掘强调算法和数学方法,但是可视化技术也能在数据分析中起关键性作用。


就是类似简单的可视化,通过2维可视化来评估各指标的适配度




直方图是一种可视化技术。在统计学中,直方图是一种对数据分布情况的图形表示,是一种二维统计图表,它的两个坐标分别是统计样本和该样本对应的某个属性的度量。



我们完成每个指标的直方图,对其进行解释。分析各指标的数据分布规律性是否符合正态分布,不满足正态分布的指标一般属于重点监测对象,激活终端数、其他主用终端、其他终端这三个指标值的分布很不均匀,值为0的占绝大多数,表明正常终端绝大部分只被一个号码激活,如果激活该终端的号码同时激活了其他一部或多部终端,则套机的可能性增大。另外,主叫占比大致服从正态分布,但是当主叫占比值为100时,明显与右侧的长尾冲突。因此主叫占比100的终端有套机嫌疑。对猫池终端的识别采用的是聚类算法,对聚类出来的结果需要进行进一步业务分析和解读,以确定是否有疑似猫池终端的聚类,确定后,即生成相应的指标规则。


通常指标是满足正态分布的。但是也有长尾的,这很正常,比如收入、时长、流量,这是由于大多数人的消费行为和运营商对用户的认定导致的。激活终端数、其他主用终端、其他终端这三个指标值的分布很不均匀,值为0的占绝大多数,表明正常终端绝大部分只被一个号码激活,如果激活该终端的号码同时激活了其他一部或多部终端,则套机的可能性增大。


这个是可以预想的,正常用户的行为是如何的,极端客户是如何的。


算法的选择


市场部并未给出疑似猫池终端用户的样本,因此无法选用决策树之类的模型。模型的目标是要挖掘出套机终端,由于没有套机样本,因此分类算法无法解决,必须借助于聚类算法。聚类算法的核心思想是“物以类聚,人以群分”,即具有相似特征的个体聚集成一个簇。猫池套机终端存在诸多相似特征,例如终端收入较低、计费时长较短、流量较小和主叫占比较高等特征,而这些特征又显著区别于正常终端,因此聚类算法有效。


聚类是一个不断探索寻优的过程,本次使用k-means算法将数据划分成不同的类,观察聚类结果,选择平方误差和(SSE)最小的分类策略。K-means算法把簇的形心定义为簇内点的均值。首先,在数据集D中随机地选择k个对象,每个对象代表一个簇的初始均值或中心。对剩下的每个对象,根据其与各个簇中心的欧氏距离,将它分配到最相似的簇。然后,使用更新后的均值作为新的簇中心,重新分配所有对象。迭代继续,直到分配稳定,即本轮形成的簇与前一轮形成的簇相同。


k-means聚类过程
第1步:确定要划分的类别数k;
第2步:根据欧氏距离把所有的终端划分到这k个类中;
第3步:重新计算k个类的中心;
第4步:重复第2~3步,直至分类趋于稳定。



我们先是选择了聚类算法,再次选择k-mean聚类。k-mean聚类比较成熟,也容易理解。聚类既不是越多越好,也不是越少越好。聚类越多,干扰项越多,解读也越困难;聚类少了,用户的特征体现不出来,所以一般是10个以内。聚类是一个不断探索寻优的过程,本次使用k-means算法将数据划分成不同的类,观察聚类结果,选择平方误差和(SSE)最小的分类策略。


随着分类个数的增加,分类误差(SSE)越来越小,同时分类耗时(迭代次数)也急剧上升。当聚类个数低于8时,聚类误差下降很快,超过30时则趋于平缓,但迭代次数上升迅速。


聚类个数越多,误差平方和越小,但是个数过多会干扰决策判断,导致业务上的偏差。原则上聚类个数不宜过多,因此模型选择聚类个数10类。


观察结果发现,第10个类的终端收入、基站数和通话交往圈等指标值较其他类低,而激活终端数、主叫占比等指标值较高,根据猫池套机业务分析,此类应该判断为猫池终端。


并把聚类的结果生成指标规则,以便为后续数据提供进一步挖掘依据。



聚类出来的结果要通过业务语言进行解读,为了保证kmeans聚类能力的适用性,模型建立在以下数据集上(样例为随机数)


数据集:2015年5月、6月销售的已激活终端在6月、7月的行为数据;

样本总数:xxxx
观察结果:第10个类的终端收入、基站数和通话交往圈等指标值较其他类低,而激活终端数、主叫占比等指标值较高,根据猫池套机业务分析,此类应该判断为猫池终端。



就是这么一张聚类结果表,要能解析出业务含义,要评估出那些敏感指标的敏感特征数据,不是靠机器,而是靠业务积累。


数据挖掘的应用和输出


数据挖掘的目的不是为了挖掘而挖掘,而是为了让规则持续得到应用,并不断去污求精的完善过程。因此该过程描述的是把规则库应用到新月份的新售终端,且次月已经激活的情况下,通过猫池终端规则库校验,判断是否为疑似猫池终端用户,并通过对预设条件的筛选,最终获取更为精确的结果。


通过以上步骤,完成了终端聚类任务,接下来需要将模型部署到生产环境中。
通过计算欧氏距离,把终端划分到相应的类中,把划分到第10个类的终端套机标签标记为1,划分到其他类的终端标记为0。



我判断出之前数据的疑似猫池用户,要把该模型结果应用到下个月或之后的用户上,才能得到持续应用,产生价值,是吧。



同时我还要给用户去看相关数据,如果用户对相关数据不满意,我还要能设定再次筛选吧。


所以在最终结果中,还引入了一些用户的基本行为作为筛选项和判断依据。比如疑似猫池用户约为每月5000,用户经过再次筛选后得到2000,然后业务部门再把这2000用户提交给渠道或者做私下调查,以避免模型误判。这是第一个模型。


日间预警模型


第二个模型,日间隔预警模型稍微简单点,是我12年进公司的时候,当时引入的一个模型。


客户生命周期理论,告诉我们要发展新用户,刺激用户消费、维系存量用户,预警和挽留老用户。本模型适用于最后一个目标维系存量用户、预警和挽留老用户的投入是发展新用户成本的十分之一。




RFM模型是基于上述三个要素建立的数据模型,是衡量客户价值和客户创利能力的重要工具和手段。该模型通过一个客户的近期购买行为、购买的总体频率以及花了多少钱三项指标来描述该客户的价值状况。


RFM模型之前我是知道的,但想明白跟日间隔预警模型的关系,却是最近的事儿。



为什么能使用这个模型?是基于假设的,假设正常用户的通话行为是不变的,通话频率、最近一次通话时间间隔等等;假设用户要离网,该行为必定有所改变,你可以设想一下转网或互转或换卡等等。再一个是运营商一般对欠费、离网用户会保留三个月的正常状态,只有持续不通话几个月才会做销号处理。所以我们可以向前推,假如用户8月离网,5月开始通话不正常,则可以观察3、4、5月的通话行为。



当前沉默时间:用户最后一次通话时间距当日23点59分59秒的时间间隔;
期 望 值:用户常态下通话时间间隔的平均值;
标 准 差:用户常态下通话时间间隔稳定度,标准差值越小,说明用户通话间隔越稳定;
T 值 :T =(I-μ)/δ。当T很大时,说明用户的通话时间间隔明显超过用户常态下的使用习惯,用户离网倾向较高。

同RFM模型相比少了个M



基于用户3个月的历史通话详单和5个月的用户资料进行研究。分别运行M月份日通话清单,对比用户M-1、M-2月份(用户通话模式正常期)的通话模型,预测在M+1、M+2月发生离网的概率。以M+1、M+2月真实发生离网的用户评估模型的命中率和覆盖率。这个在2012年时每天也只能处理3天的数据,时间都被耗在模型计算上了。在4+1的MPP上,能计算10天数据。


模型的输入输出



输入的是正常用户的日间隔期望、标准差、最后一次通话日期和时间,以及当前沉默时间,输出的是T值



再一个是查全率和查准率问题,这两个是相互矛盾的,所以必须不停调整T值以求得最佳结果。



模型的调优,因数据量原因,把日调成周了,同时也要解决实际操作问题,预警排重。



最后是模型应用。这个模型也可以调整成中高端用户预警、存量预警等等,再

细化人群


企业的数据挖掘和书本的数据挖掘差别在于对于业务模型的解读、持续的优化。


Q & A 精选


Q1:这种基于特定业务场景的数据分析,你认为模型构建应该着重考虑什么因素

A1:内存泄露其实有两个方面,如果是native的malloc泄露,可以通过 valgrind,jemalloc等工具发现,这个和传统c++应用内存一样的;对于某些因为强引用链无法释放的java对象,一般都是 heapdump之后使用eclipse的mat工具分析“可能泄露的”,因为程序并没有结束,而且还持有强引用,很难得出结论说某些对象是不是内存泄露。


讲师介绍:

  • 16年IT工作经验;关注领域包括证券、航空、制造、电信等。

  • 在数据库开发和优化、数据仓库、系统架构、大中型项目管理、数据分析、Office、大数据方面有一定研究。

  • 《剑破冰山--Oracle开发艺术》一书合著者,《IT项目管理那些事儿》一书主编。

小编精心为大家挑选了近日最受欢迎的几篇热文:

回复001,看杨志洪《【职场心路】一个老DBA的自白》;

回复002,看丁俊的《【重磅干货】看了此文,Oracle SQL优化文章不必再看!》;

回复003,看胡怡文《PG,一道横跨oltp到olap的梦想之桥》;

回复004,看陈科《memcached&redis等分布式缓存的实现原理》;

回复005,看宋日杰《Oracle后台专家解决library cache锁争用的终极武器》;

回复006,看郑晓辉《存储和数据库不得不说的故事》;

回复007,看袁伟翔《揭秘Oracle数据库truncate原理》;

回复008,看杨建荣《立等可取:工具定制让Oracle优化变得更简单快捷》

回复009,看丁启良《LINUX类主机JAVA应用程序占用CPU、内存过高分析手段》;

回复010,看徐桂林《以应用为中心的企业混合云管理》。


关于DBA+社群

DBA+社群是全中国最大的涵盖各种数据库、中间件及架构师线条的微信社群!有100+专家发起人,建有15大城市微信群,6大专业产品群,多达10000+跨界DBA加入队伍。每天1个热议话题,每周2次线上技术分享,不定期线下聚会与原创专家团干货分享,更多精彩,欢迎关注dbaplus微信订阅号!


扫码关注

DBAplus社群

超越DBA圈子,连接的不仅仅是DBA

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存