聚类分析
市场细分
聚类与分类的不同在于,聚类所要求划分的类是未知的。
聚类是将数据分类到不同的类或者簇这样的一个过程,所以同一个簇中的对象有很大的相似性,而不同簇间的对象有很大的相异性。
从统计学的观点看,聚类分析是通过数据建模简化数据的一种方法。传统的统计聚类分析方法包括系统聚类法、分解法、加入法、动态聚类法、有序样品聚类、有重叠聚类和模糊聚类等。
从机器学习的角度讲,簇相当于隐藏模式。聚类是搜索簇的无监督学习过程。与分类不同,无监督学习不依赖预先定义的类或带类标记的训练实例,需要由聚类学习算法自动确定标记,而分类学习的实例或数据对象有类别标记。聚类是观察式学习,而不是示例式的学习。
聚类分析是一种探索性的分析,在分类的过程中,人们不必事先给出一个分类的标准,聚类分析能够从样本数据出发,自动进行分类。聚类分析所使用方法的不同,常常会得到不同的结论。不同研究者对于同一组数据进行聚类分析,所得到的聚类数未必一致。
从实际应用的角度看,聚类分析是数据挖掘的主要任务之一。而且聚类能够
作为一个独立的工具获得数据的分布状况,观察每一簇数据的特征,集中对特定的聚簇集合作进一步地分析。聚类分析还可以作为其他算法(如分类和定性归纳算法)的预处理步骤。
聚类分析的核心思想就是物以类聚,人以群分。在市场细分领域,消费同一种类的商品或服务时,不同的客户有不同的消费特点,通过研究这些特点,企业可以制定出不同的营销组合,从而获取最大的消费者剩余,这就是客户细分的主要目的。在销售片区划分中,只有合理地将企业所拥有的子市场归成几个大的片区,才能有效地制定符合片区特点的市场营销战略和策略。金融领域,对基金或者股票进行分类,以选择分类投资风险。
下面以一个汽车销售的案例来介绍聚类分析在市场细分中的应用。

商业目标
业务理解:数据名称:汽车销售。该案例所用的数据是一份关于汽车的数据,该数据文件包含销售值、订价以及各种品牌和型号的车辆的物理规格。订价和物理规格可以从 edmunds.com 和制造商处获得。定价为美国本土售价。如下:

表 1:数据视图
**业务目标:**对市场进行准确定位,为汽车的设计和市场份额预测提供参考。**数据挖掘目标:**通过聚类的方式对现有的车型进行分类。
数据准备
通过数据探索对数据的质量和字段的分布进行了解,并排除有问题的行或者列优化数据质量。

第一步,我们使用统计节点审核数据的质量,从审核结果中我们发现存在缺失的数据,如下图所示:

第二步,对缺失的数据进行处理,我们选择使用缺失填充节点删除这些记录。配置如下:
建模
我们选择层次聚类进行分析,尝试根据各种汽车的销售量、价格、引擎、马力、轴距、车宽、车长、制动、排量、油耗等指标对其分类。
建模前,需要对数据的每个字段进行计算,或更新字段,包字段测量类型、值域和缺失等,这时需要类型节点,配置如下:

因为K-means不能自动确定分类数量,因此需要我们以自定义的方式规定最后聚类的类别数。K-means节点配置如下(默认配置):
可以使用交互表或者右击 K-means 节点查看聚类的结果,如下图所示:

查看聚类概述图,了解每个聚类簇的分布:

结果如下:
从图中可见,分成的五个类样本数差异太大,cluster_2 和 cluster_3 包含的样本数都小于 20,这样的分类是没有意义的,因此需要重新分类。
我们尝试在 K-means 节点的配置中,重新指定分类数。新的聚类样本数分布如下:
对数据初步确认好分类后,可以分类查看数据的各项指标,来评估分类是否达到最终目的。
如我们看一下每类的销售量分布情况,配置如下:

每类汽车的销售量分布:

小结
通过这个案例,大家可以发现聚类分析确实很简单。进行聚类计算后,主要通过图形化探索的方式评估聚类合理性,以及在确定聚类后,分析每类的特征。
媒体分级
下面这个案例主要介绍如何对媒体进行分级。分级不同与分类,通过聚类分析将物或人分成几类,只是根据相似性定义的,没有哪类好哪类坏之分。而分级则是定义优劣级别。不过案例对媒体分级的方法使用的仍然是聚类算法,也只有在特定场景下,才可以通过聚类对对象进行分级。下面讲述的案例是关于一家专
门做网络游戏广告投放的广告公司。这家广告公司有 1 万多个网络广告位,帮助游戏公司投放广告,以往都是由他们的媒介专家(媒介经理或者媒介总监)选择满足客户目标最大化的媒介组合,这显然不是一件容易事,为了提高筛选媒介组合的效率,该公司借助我们的数据挖掘工具对其媒介进行分级,以便快速找到最优的媒介组合,这个工作只是他们分析中的一部分。工作流如下:

商业目标
业务理解:数据名称:媒体信息。该案例所用的数据是一份关于媒体投放的数据,该数据文件包含媒体名称、平时单价以及假日单价、项目购买金额、参与项目数等信息。如下:
表 1:数据视图
业务目标:对媒体进行分级,评价媒体投放收益。
数据挖掘目标:通过聚类的方式对现有的媒体进行分级。
建模
第一步,选择 K-Means 聚类进行分析。将媒体分成 5 类,节点配置如下:

聚类结果如下:

再使用饼图探索每类的大小分布,结果如下:

第二步,探索每类的重要性。我们仍然使用饼图进行探索,分析每类媒体参与项目的情况,节点配置如下:
每类平均参与项目次数的情况如下:

从图中可以看出 cluster_1 中的媒体平均使用次数最多,其次是 cluster_3、 cluster_0、cluster_2、cluster_4。由于每次广告的媒体投放的媒介组合都是由媒介 经理或者媒介总监这些专家认真选择的,因此,如果我们默认每次广告投放使用的媒介组合都是正确的,那么使用越多,则可以说明这些媒体越好用,也就越好。由此,我们把平均使用次数越多的类别定义为更高(好)的级别。我们可以将聚类中的,_1,3,0,2,4_分别定义为_A_级、_B_级、_C_级、_D_级、_E_级。
第三步,定义媒体级别。
首先,使用创建表节点定义聚类类别和级别值的对应表。配置如下:

其次,使用填充节点替换原表中的聚类类别,配置如下:

然后,再使用过滤节点对聚类字段重命名。配置如下:

最后,您可以使用交互表格节点查看分级结果,如下:

另外,您还可以使用多系条形图探索每个级别的特征
小结
通过该案例,我们掌握如何使用聚类算法进行分级,分级的方法有很多,尤其在零售业经常用到客户分级,这里就不一一介绍了,以后再逐一分享。但是值 得注意的是,聚类算法本身并不用于分级,仅当聚类的结果结合实际业务具有优劣特性时才可以采用聚类的结果建立分级规则。
异常诊断
通过这个案例,我们要掌握数据挖掘在异常分析方面应用的基本思路,大家都知道,企业里面经常会有类似这样的需求,而这也是数据挖掘的一个重点的应用方向。今天,我们主要围绕这个主题进行讲解,结合这个主题,我们主要探讨以下几个知识点:
第一,如何结合业务理解,通过业务规则来进行异常分析,当然这是一个典型的以业务为驱动的数据挖掘项目;
第二,围绕如何通过数据挖掘的手段派生一个参考变量指标,来评估与实际值的偏差是否有异常,来进行异常分析。在这个案例里面,主要讲解两种派生参考变量的方法,一个是通过变量的相关性进行参考变量的派生,另一个是通过分类预测,尤其是分类目标变量为数值型的分类预测来派生参考变量。
第三,我们来重点讲解一下,如何通过可视化的方式,来探索一个数值型字段和一个字符型字段的相关性。这是大家需要掌握的,很有效,很好用,也很简单的一个方法。
第四,我们通过这个案例,讲一下,通过聚类分析算法来进行异常诊断的方法。该案例介绍的是聚类算法的另外一种灵活运用。采用的是聚类的思想对异常对象进行判断,主要思想是这样的:首先,我们使用聚类算法将对象(每条记录为一个对象)分成两类,其次,计算每一个对象到类中心的距离,距离类中小较远的点即为异常点。
第五个,通过这个案例,再学习一下分类预测的另外一种应用场景。工作流如下:
商业目标
业务理解:该案例所用的数据是一份关于农业补贴的数据,如下:

表 1:数据视图
其中,农业补贴数据包括住户姓名、所在区域、拥有田地的大小、降雨量、田地质量水平、田地收入、主要农作物、申请补贴的类型和申请补贴的金额。
业务目标:分析哪些住户领用补贴存在异常,并输出可疑的名单。数据挖掘目标:建立异常检测模型,输出可疑名单。
注:该案例是一个典型的以业务驱动为核心的数据挖掘项目。此案例从业务入手,探索分析思路,比 如,从领用次数来看,正常情况下每户都会一次领用全部补贴,因此如果领用次数在_2_次以上的住户即可认为存在可疑。其次,每家的田地收入主要有两方面来源,一个是农作物收入,一个是农业补贴收入。因此,如果田地收入明显超出预计田地收入,则很可能是过多的领用农业补贴。另外,判断领用是否可疑的更直接的办法是直接判断申请的补贴金额是否过多。最后,我们采用聚类算法判断异常。根据以上四个思路展开以下分析。
领用次数异常分析

第一步,使用数据库节点,读取农业补贴数据。

第二步,使用数据审核节点或者汇总节点统计每个住户领用的次数。配置如下:
第三步,使用选择节点筛选出领用次数大于 1 的名单。其中,该节点第一个
输出端口输出的是计数大于等于 2 的记录,第二个输出端口输出的是等于 1 的记录。节点配置如下:

第四步,使用过滤节点将计数重命名为领用次数。配置如下:

第五步,使用交互表格节点输出领用次数异常名单:

表 2:可疑名单 1
田地收入异常分析

分析田地收入是否存在异常的核心就是估计每个住户的预计田地收入,计算实际田地收入与预计田地收入的差异。
如何计算预计田地收入呢?如果有明确的规则可以直接计算出每个住户的田地收入,则可以直接与实际值对比,但是由于田地收入所受影响因素较多,比如降雨量、土地质量、种植的农作物等,所以很难计算出准确的预计值。不过,我们可以估计一个值,这里是通过强相关的原理,计算一个与预计田地收入强相
关的变量,以此变量作为预计田地收入。而这里强相关的变量可疑使用使用田地收入的主要影响因素相乘(降雨量、田地质量、田地大小)得到。
操作如下:
第一步,使用自定义选择节点去除已经排除的两个住户。节点配置如下:

第二步,使用派生节点生成预期收入字段。节点配置如下:

第三步,使用散点图节点验证预计收入和实际田地收入的相关性。如下图中所示,两个变量之间呈强正相关性,这验证了我们计算预计收入方法的合理性:

图 1:预计收入和实际田地收入相关性分析
第四步,使用派生节点生成偏移字段,计算实际田地收入和预计收入的差异。节点配置如下:
第五步,使用直方图看偏移的分布趋势,直方图配置如下:

从执行结果可以看出,偏移字段有少数分布在尾部,这些即是偏移较大的对象,也就是可疑对象,如下图所示:

第六步,输出可疑名单。
首先,使用选择节点筛选出偏移大于 20 的记录。配置如下:

其次,使用交互表格节点查看可疑名单。如下:

第七步,分析偏移的分布,以及与申请类型的相关性。
在这里,我们使用直方图节点可视化发现,节点配置如下所示:

由执行后的结果可见,申请类型为 B 的偏移都在 20 以内(如下图所示),这说明这类申请类型应该不存在欺诈,由此可以再从业务中印证是否这种申请类型的规定没有漏洞,本身就无漏洞可钻,如果确实是,我们就没有必要再分析这种申请类型。

图 2:偏移直方图分布
申请金额异常分析

分析申请金额是否存在异常的核心就是估计每个住户的预计申请金额,计算实际申请金额与预计申请金额的差异。
如何计算预计申请金额呢?这里我们不能重复使用上一节使用的方法,因为这里我们没有合适的与申请金额强相关的变量。因此,我们采用了另外一个办法,就是使用预测模型,根据输入变量预测每个住户的申请金额,以模型预测值作为申请金额的估计值。
另外,在上一节中分析得出了以下结论:如图 2 所示,申请类型 B 不易进行欺诈。因此,我们接下来可以放弃对申请类型 B 的分析。
操作如下:
第一步,使用名义值过滤节点过滤申请类型为 B 的住户。节点配置如下:

第二步,使用过滤节点过滤不适合参与建模的字段。节点配置如下:

第三步,使用类型节点定义目标变量和线性回归算法建立以申请金额为目标的预测模型。节点配置如下:

第四步,使用数值评估节点评估训练模型的准确性。评估结果如下:

第五步,使用过滤节点对预测结果字段重命名并派生字段节点派生申请金额差异字段。节点配置如下:


第六步,可视化分析。
首先,使用直方图节点可视化发现申请金额差异较集中

第七步,生成可疑名单。
首先,使用选择节点筛选出申请金额差异大于 20 的住户。节点配置如下:

其次,使用交互表格节点查询可疑名单,如下所示:

表 4:可疑名单 3
聚类法异常分析

第一步,使用异常节点找出异常值。节点配置如下:

第二步,名义值过滤,配置如下:

第三步,生成可疑名单 4。
使用追加节点(默认配置)将两个类中的可疑对象合并到一起。再使用交互表格节点查询可疑名单,并定义为可疑名单 4。如下图所示:
小结
以上我们用了四种方法去发现异常,得到了四个可疑名单。而这四个名单中重复度越高的对象,可疑性越大。另外,我们最终输出的可疑名单,应该以上四个名单的并集。还有一点要注意的是,我们做异常分析,诊断的是可疑人员,而不是欺诈分子。我们通过数据挖掘的技术只是将搜索的范围尽可能缩小了,降低了搜索的难度,这只是完成了抓欺诈分子的第一步,接下来要从更多的方面去求证,判断名单中的人是不是存在欺诈。