上次简单的说了一下SPSS下使用两步聚类分析的大致过程,今天简单说说在Clementine下怎么进行聚类分析,方法同样是两步聚类。

之前说过聚类分析是无指导的,揭示的输入字段集的模式,不是一种预测。在我们输入的字段上进行聚类分析找出组合最佳,能够反映共同属性的模式。两步聚类有两步,第一步是扩展,处理成若干子聚类,第二步利用分层聚类方法进行合并,形成大的聚类,实际上是剪枝合并的过程,此步不再进行数据处理。分层聚类不需要确定聚类数,这点在两步聚类分析中得以避免,因为分层聚类经常因为处理大数据量而失败,但是第一步的数据预处理得以避免了这个问题的出现。

两步聚类分析的数据要求

1)  角色设置必须为输入,其他的目标、两者或者无都会在分析中被忽略;

2)  不处理缺失值;

3)  模型构建时,忽略输入字段包含空白的记录。

下面就说一下在Clementine中操作过程和注意事项。

首先我们打开Clementine[有关Clementine的基础操作以后会慢慢整理],第一件事就是要引入我们要分析的文件,目前clementine支持的数据文件格式非常丰富,如下图:

DESEQ2聚类分析 二步聚类分析_聚类

今天我们使用的文件是SPSS文件的格式,因此,在源选项卡,双击SPSS文件图标,就会出现以下的画面[或者左键点击直接拖入数据流编辑区域]:

DESEQ2聚类分析 二步聚类分析_数据结构与算法_02

之后右键编辑,弹出窗口,在弹出窗口找到要分析的SPSS文件,引入:

DESEQ2聚类分析 二步聚类分析_聚类_03

点击类型的标签,可以看到目前字段的类型、是否缺失、设置方向等等信息,如下图:

DESEQ2聚类分析 二步聚类分析_DESEQ2聚类分析_04

点击确定,完成了数据文件的引入操作,但是往往我们文件中的一些字段在进行分析时是不需要的,有一些字段的属性还需要调整,数据质量还要检验,因此简单说说这个过程。

数据质量检验

输出选项卡,双击数据审核图标,此时就会自动连接数据文件,数据审核帮助简单分析和整理原数据文件的情况。

DESEQ2聚类分析 二步聚类分析_数据结构与算法_05

右键单击数据审核图标,选择执行,弹出窗口,可以看到字段类型、是否有空值、完成度等信息,弹出如下的窗口:

DESEQ2聚类分析 二步聚类分析_大数据_06

分析字段选择

有一些字段在我们分析的时候是不需要的,比如我们这个文件中的playerid字段就没什么实际利用意义,为此这一类的字段我们可以实现进行排除,这样后续的操作和分析会比较便利,此处我们做的是次日留存玩家的特征提取和分析,由于此处我们使用的文件已经是经过处理的,即已经把非新登用户那一部分数据踢出了,否则此处我们就必须使用这个功能[次日留存玩家设置为NO,非新登玩家次日登陆的设置为YES],此处我们通过选择排除playerid这个字段。

单击字段选项,双击选择过滤图标,并使之与源文件连接:

DESEQ2聚类分析 二步聚类分析_DESEQ2聚类分析_07

右键编辑,在打开的窗口中,把playerid过滤掉,点击箭头即可,变成红叉表明被过滤,在后续的分析中不会出现该字段。

DESEQ2聚类分析 二步聚类分析_大数据_08

此时我们可以连接显示一下过滤以后的数据内容形式,在输出选项,双击表图标,连接一个个表,此时右键执行,看到如下的效果,发现playerid木有了。

DESEQ2聚类分析 二步聚类分析_字段_09

下面到了比较重要的地方,我们选择建模,之后选择细分标签里的两步,双击,连接到文件上,效果如下:

DESEQ2聚类分析 二步聚类分析_DESEQ2聚类分析_10

右键两步图标,选择编辑,弹出了两步节点模型的选项

DESEQ2聚类分析 二步聚类分析_DESEQ2聚类分析_11

模型名称

可以选择自己设定,也可以系统生成。

使用分区数据

若定义了分区字段,那么这个选项保证了仅仅训练分区的数据用于构建模型。此处我们没有进行数据的分区操作,不必勾选这个选项。

标准化数值字段

默认情况下,两步聚类会对所有数值输入字段进行标准化,使它们具有相同的尺度,即均值为 0 且方差为 1。要保留数值字段的原始尺度,可取消选中此选项。符号字段不受影响。

排除离群值

如果选中此选项,则那些与主要聚类似乎格格不入的记录将自动排除在分析之外。这样可以防止此类情况歪曲结果。

IBM官方手册的解释如下:

“离群值检测在预聚类步骤进行。选中此选项时,会将相对于其他子聚类具有较少记录的

子聚类视为潜在离群值,且重新构建不包括这些记录的子聚类树。子聚类被视为包含潜在离群值的下限大小由百分比选项控制。如果其中某些潜在离群值记录与任何新子聚类配置足够相似,则可将其添加到重新构建的子聚类中。将其余无法合并的潜在离群值视为离群值添到“噪声”聚类中并排除在分层聚类步骤之外。

使用经过离群值处理的“两步”模型对数据进行评分时,会将与最近主要聚类的距离大于特定阈值距离(基于对数似然)的新观测值视为离群值分配到“噪声”聚类中,名称为 -1。”

聚类标签

为生成的聚类成员关系字段指定格式

自动计算聚类数

“两步聚类可以非常迅速地对大量聚类解决方案进行分析并为训练数据选择最佳聚类数。通过设置最大聚类数和最小聚类数指定要尝试的聚类解决方案的范围。“两步聚类”通过一个两阶段过程确定最佳聚类数。在第一个阶段,随着所添加聚类的增多,可基于贝叶斯信息准则 (BIC) 中的差异选择模型中聚类数的上限。在第二个阶段,为聚类数比最小 BIC 解决方案还少的所有模型找出聚类间最小距离的差异。距离的最大差异用于识别最终聚类模型。”

指定聚类数

如果确定聚类数,也可以自己自行指定。

距离测量

同样这里有两种,欧式和对数似然,但是由于有分类变量只能选择对数似然。

聚类准则

准则有BIC和AIC,确定自动聚类算法如何确定聚类数。

之后点击执行,但是此时我们发现了如下的错误:

DESEQ2聚类分析 二步聚类分析_DESEQ2聚类分析_12

原来我们对于过滤后的数据,没有进行数据类型的重新指定,为此此处我们要重新指定数据的类型,字段选项卡,双击类型,之后再次连接两步的图标,此时就OK了。如下所示:

DESEQ2聚类分析 二步聚类分析_大数据_13

此后,执行模型,返回聚类模型结果信息,如下所示:

DESEQ2聚类分析 二步聚类分析_聚类_14

双击打开该模型,显示信息如下:

DESEQ2聚类分析 二步聚类分析_数据结构与算法_15

模型显示主要有模型,查看器,汇总三个重要的标签,此处先看汇总:

DESEQ2聚类分析 二步聚类分析_数据结构与算法_16

“两步”聚类模型块的“汇总”选项卡显示找出的聚类数以及有关训练数据、估计过程和所使用的构建设置的信息。

查看器主要是通过图形化手段显示聚类的信息,便于用户更加直观的分析(但是我觉得很蛋疼,没发现直观那里去)。

DESEQ2聚类分析 二步聚类分析_DESEQ2聚类分析_17

相比较而言我觉得比较有用的模型界面,这里能够很直观看到我们使用该算法构建的模型的具体情况,这里我们分析的次日留存的玩家的特征。在确定的变量我们构建了两个类。

DESEQ2聚类分析 二步聚类分析_大数据_18

可以看到一类比较庞大,但是注意:得到的模型一定程度上取决于训练数据的顺序。重排数据顺序并重新构建模型有可能得到不同的聚类模型。并且通过聚类分析得到的以此结果并不能足够说明我们整个玩家的特征,其显著性是需要检验的,这受到诸如游戏活动,聚类分析样本提取时间,等很多的因素影响,换句话要想具有普适性,还是需要迭代,不断的综合和分析整理才能拿出来玩家的特点,切勿选取一批样本数据,得到的玩家特点就放之四海,利用起来,而这也是CRISP-DM所提出的早期的工作重中之重和加入评估阶段的要义。所以还是多多进行如此类的时间,有的放矢才能做好。