小白学数据分析-----聚类分析理论之TwoSteps理论篇+实践篇

昨天分享了以前学习的聚类分析算法K-Means的部分知识,其实这个主要是了解一下这个算法的原理和适用条件就行了,作为应用而不是作为深入研究,能够很好的将业务和算法模型紧密结合的又有几人呢?所以一些基本知识还是很必要的,这里就是简单把看过的一些知识点列举一下,梳理一下,快速了解和使用。

今天把TwoSteps的知识也梳理一下,顺便做个小的演示,使用SPSS 19,后续在使用SPSS Modeler或者叫做Clementine再演示一次使用方法。首先上图。

TwoSteps支持数值型和分类型数据,这对于我们而言在使用时就方便很多,此外游戏数据一般来说都很大,TwoStep在这方面来说还是很具有优势的,数据迭代过程中的内存消耗和聚类数目确定,TwoStep表现的都很好,两步聚类避免了距离矩阵过大,导致算法执行效率下降,而这也是优势所在。好了以上的信息看多也没什么意义,还是看看怎么实践吧。

最近换了工作,开始做手机网游的数据分析,也是想尝试一下,面临一个问题就是游戏的留存比较差劲,想来想去就拿这个做一个聚类分析的例子吧。

首先,这里选取的是次日留存用户数据进行分析,之所以选择次日,是由游戏的特点决定的,再者手机游戏的周期相对短一些,所以如果考虑周,双周就不是很好了(当然也不是绝对的),其实3日留存也可以选择,只是需要了解你自己的游戏具体情况再做判断。

其次,选择什么时间的次日留存数据分析呢?这个问题困扰了我很长时间,因为本身分析新登玩家次日登陆的那部分群体的特征(其实这样分类的方式已经有些破坏了聚类分析的本质和诉求),我选取的时间是周五(为什么是周五,这里不说了,大家自己想),且从时间上,全部渠道(手机游戏渠道很多)均以开放,且离最近的开放的渠道有一段周期(数据平稳后)。同时游戏没有重大的更新,BUG,调整时期。

第三,既然要做聚类分析,那我们选什么数据作分析,提取特征呢?我们要做的是提取次日留存用户的特征,因此,根据需要我们提取了一些用户的数据点,如下图所示:

其实,还有很多的数据,然而这里很多都是取不出来的(2进制,你懂得),由于分析的是次日留存,因此用户的游戏进程大多数不会很长,这里也只会取一些和新登用户关联比较大的,比如来源,职业,好友,是否付费,等级(最高和最低等级)。其实按照我们分析的围堵不同还可以取其他的数据,这里就是一个演示,请见谅。下面就用SPSS 19演示一下怎么进行该计算过程。

打开“菜单|分类|两步聚类”,如下图所示:

弹出的菜单如下:

此时,要进行变量选择,如果是分类变量,就选择进入分类变量,如果是连续变量,就选择进入连续变量,选择如下:

距离变量:确定计算两个变量之间的相似性,对数相似值系统使用对数似然距离计算,而欧式距离是以全体变量为连续性变量为前提的,由于我们的数据中存在分类型变量,因此这里选择对数相似值。

聚类数量:允许指定如何确定聚类数。如果自动确定将会使用聚类准则中指定的准则[BIC 或者 AIC],自动确定最佳的聚类数,或者设置最大值。也可以指定一个固定值,不过一般来说就自动确定OK了。

连续变量计数:对一个变量是否进行标准化的设置。

点击选项,弹出如下的面板

离群值处理:这里主要是针对CF填满后,如何对离群值的处理。IBM SPSS手册如下所诉:

“如果选择噪声处理且 CF 树填满,则在将稀疏叶子中的个案放到“噪声”叶子中后,树将重新生长。如果某个叶子包含的个案数占最大叶大小的百分比小于指定的百分比,则将该叶子视为稀疏的。树重新生长之后,如有可能,离群值将放置在 CF 树中。否则,将放弃离群值。
如果不选择噪声处理且 CF 树填满,则它将使用较大的距离更改阈值来重新生长。最终聚类之后,不能分配到聚类的变量标记为离群值。离群值聚类被赋予标识号–1,并且不包含在聚类数的计数中。”

关于噪声处理,此处默认即可。

内存分配:指定聚类算法应使用的最大的内存量。如果该过程超过了此最大值,则将使用磁盘存储内存中放不下的信息。此项默认就行了。

连续变量的标准化:聚类算法处理标准化连续变量。

点击输出:弹出界面如下

图和表:

“显示模型相关的输出,包括表和图表。模型视图中的表包括模型摘要和聚类-特征网格。模型视图中的图形输出包括聚类质量图表、聚类大小、变量重要性、聚类比较网格和单元格信息。”有点用。

评估字段:“这可为未在聚类创建中使用的变量计算聚类数据。通过在“显示”子对话框中选择评估字段,可以在模型查看器中将其与输入特征一起显示。带有缺失值的字段将被忽略”可以不用理。

OK,此时,点击继续,然后确定,等待计算结果出来,这时首先弹出的是查看器:

之后双击这个模型,就会弹出来聚类浏览器:

以下介绍该浏览器的信息来自于IBM SPSS的官方手册,详见:http://www.dmacn.com/viewthread.php?tid=78&extra=page%3D1

“聚类浏览器”包含两个面板,主视图位于左侧,链接或辅助视图位于右侧。有两个主视图:
模型摘要(默认视图)
分群。
有四个链接/辅助视图:
预测变量的重要性.
聚类大小(默认视图)
单元格分布。
聚类比较。

“模型摘要”视图显示聚类模型的快照或摘要,包括加阴影以表示结果较差、尚可或良好的聚类结合和分离的 Silhouette 测量。该快照可让您快速检查质量是否较差,如果较差,可返回建模节点修改聚类模型设置以生成较好的结果。
结果较差、尚可和良好是基于 Kaufman 和 Rousseeuw (1990) 关于聚类结构解释的研究成果来判定的。在“模型摘要”视图中,良好的结果表示数据将 Kaufman 和 Rousseeuw 的评级反映为聚类结构的合理迹象或强迹象,尚可的结果将其评级反映为弱迹象,而较差的结果将其评级反映为无明显迹象。Silhouette 测量所有记录的平均值,(B A) / max(A,B),其中 A 是记录与其聚类中心的距离,B 是记录与其非所属最近聚类中心的距离。Silhouette 系数为 1 表示所有个案直接位于其聚类中心上。 值为 1 表示所有个案位于某些其他聚类的聚类中心上。值为 0
表示在正常情况下个案到其自身聚类中心与到最近其他聚类中心是等距的。
摘要所包含的表格具有以下信息:
算法。所使用的聚类算法,例如“二阶”。
输入功能。字段数量,也称为输入或预测变量。
分群。解中聚类的数量。

关于模型的使用的详细信息这里不再累述,请参考 官方手册 IBM SPSS Statistic 19 Base.pdf [152-159] 

转载于:https://www.cnblogs.com/yuyang-DataAnalysis/archive/2012/06/14/2549662.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475107.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 244. 最短单词距离 II(哈希map+set二分查找)

文章目录1. 题目2. 解题2.1 暴力超时2.2 哈希表set二分查找1. 题目 请设计一个类,使该类的构造函数能够接收一个单词列表。 然后再实现一个方法,该方法能够分别接收两个单词 word1 和 word2,并返回列表中这两个单词之间的最短距离。 您的方法…

从根本上解决 Infopath 2010 重复表的序号问题

经过多长期的查找资料,今天终于找到如何解决Infopath 重复表序号的问题,其实也很简单只用Xpath 语法就可以了 count(../preceding-sibling::*[local-name() "ExpensiveDetail"])1 ExpensiveDetail 是重复表的名字 转载于:https://www.cnblog…

linux怎么将进程调优到8,Linux的性能调优命令

性能调优一直是运维工程师最重要的工作之一,如果您所在的生产环境中遇到了系统响应速度慢,硬盘IO吞吐量异常,数据处理速度低于预期值的情况,又或者如CPU、内存、硬盘、网络等系统资源长期处于耗尽的状态,那么这篇文章将…

LeetCode 161. 相隔为 1 的编辑距离(DP/遍历)

文章目录1. 题目2. 解题2.1 DP超时2.2 一次遍历1. 题目 给定两个字符串 s 和 t,判断他们的编辑距离是否为 1。 注意: 满足编辑距离等于 1 有三种可能的情形: 往 s 中插入一个字符得到 t从 s 中删除一个字符得到 t在 s 中替换一个字符得到 …

Google搜索图片时只显示第一页

用Google搜索图片时出现,只显示第一页,其他页不能显示。 Method 1:未成功。 Method 2:成功。 结果图: 转载于:https://www.cnblogs.com/yfl-IT/archive/2012/06/19/2555429.html

pxe自动部署Linux,Kickstart+PXE自动部署CentOS6.6

生产环境中对于部署大量的相同系统的服务器,如果逐台安装操作系统的话是非常浪费时间的工作,还好CentOS提供了无人值守安装系统的功能,下面就详细介绍一下配置步骤。一、配置本机的yum源因为需要安装一些软件来达到我们的目的,所以…

LeetCode 247. 中心对称数 II(DP)

文章目录1. 题目2. 解题1. 题目 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看)。 找到所有长度为 n 的中心对称数。 示例 : 输入: n 2 输出: ["11","69","88","96"]来…

重新排列参数

重新排列参数 重新排列参数操作可以使你重新排列方法、索引器中的参数。你将方法的参数重新排列后,所有使用该方法的地方都会相应调整。以下面代码为例: class Person{public void Print(string name, int age, bool sex){}}class Program{static void M…

LeetCode 251. 展开二维向量

文章目录1. 题目2. 解题1. 题目 请设计并实现一个能够展开二维向量的迭代器。该迭代器需要支持 next 和 hasNext 两种操作。、 示例: Vector2D iterator new Vector2D([[1,2],[3],[4]]);iterator.next(); // 返回 1 iterator.next(); // 返回 2 iterator.next();…

LeetCode 253. 会议室 II(贪心+优先队列)

文章目录1. 题目2. 解题1. 题目 给定一个会议时间安排的数组&#xff0c;每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],…] (si < ei)&#xff0c; 为避免会议冲突&#xff0c;同时要考虑充分利用会议室资源&#xff0c;请你计算至少需要多少间会议室&#xff0…

笨鸟学Android开发(1):HelloWorld

全程视频&#xff08;IE等浏览器中若看不到以下GIF动画&#xff0c;请下载观看&#xff09; 源代码 转载于:https://www.cnblogs.com/beta2013/archive/2012/06/28/3377298.html

LeetCode 254. 因子的组合(回溯)*

文章目录1. 题目2. 解题1. 题目 整数可以被看作是其因子的乘积。 例如&#xff1a;8 2 x 2 x 2; 2 x 4.请实现一个函数&#xff0c;该函数接收一个整数 n 并返回该整数所有的因子组合。 注意&#xff1a; 你可以假定 n 为永远为正数。 因子必须大于 1 并且小于 n。示例 1&a…

使用架构(XSD)验证XML文件

假使说XML是一个数据库&#xff0c;那么XSD就是这个数据库的结构。由此可见&#xff0c;XSD是如此重要&#xff0c;如果没有它&#xff0c;我们如何声明以及验证我们需要的XML数据文件的格式和合法性呢&#xff1f;那是不可能完成的任务&#xff0c;如果你将XML数据文件当作普通…

LeetCode 255. 验证前序遍历序列二叉搜索树(单调栈)*

文章目录1. 题目2. 解题2.1 递归超时解2.2 单调栈1. 题目 给定一个整数数组&#xff0c;你需要验证它是否是一个二叉搜索树正确的先序遍历序列。 你可以假定该序列中的数都是不相同的。 参考以下这颗二叉搜索树&#xff1a;5/ \2 6/ \1 3 示例 1&#xff1a; 输入: [5,2…

LeetCode 259. 较小的三数之和(固定一点,内层双指针)

文章目录1. 题目2. 解题1. 题目 给定一个长度为 n 的整数数组和一个目标值 target&#xff0c;寻找能够使条件 nums[i] nums[j] nums[k] < target 成立的三元组 i, j, k 个数&#xff08;0 < i < j < k < n&#xff09;。 示例&#xff1a; 输入: nums [-2…

linux虚拟中断virq,一种微内核操作系统的分区多核方法与流程

本发明涉及一种计算机领域&#xff0c;特别涉及一种微内核操作系统的分区多核方法。背景技术&#xff1a;在宏内核操作系统(如Linux&#xff0c;Windows)中,网络、文件系统、设备驱动等大量系统服务都在操作系统内核中&#xff0c;微内核操作系统与宏内核操作系统相反&#xff…

LeetCode 487. 最大连续1的个数 II(滑动窗口)

文章目录1. 题目2. 解题1. 题目 给定一个二进制数组&#xff0c;你可以最多将 1 个 0 翻转为 1&#xff0c;找出其中最大连续 1 的个数。 示例 1&#xff1a; 输入&#xff1a;[1,0,1,1,0] 输出&#xff1a;4 解释&#xff1a;翻转第一个 0 可以得到最长的连续 1。当翻转以后…

行向量,列向量,行主序矩阵,列主序矩阵

原理: PS: 很不喜欢OGL的列矩阵方式&#xff0c;不过本质上是一样的。 v2 v1 * ma * mb;        (dx) v2 mb(T) * ma(T) * v1     (ogl) 关于这个话题&#xff0c;网上有n多个版本&#xff0c;今天&#xff0c;我也来说说这个话题。&#xff08;一&#xff09;…

LeetCode 1429. 第一个唯一数字(map+queue)

文章目录1. 题目2. 解题1. 题目 给定一系列整数&#xff0c;插入一个队列中&#xff0c;找出队列中第一个唯一整数。 实现 FirstUnique 类&#xff1a; FirstUnique(int[] nums) 用数组里的数字初始化队列。int showFirstUnique() 返回队列中的 第一个唯一 整数的值。如果没…

LeetCode 1244. 力扣排行榜(map+multiset)

文章目录1. 题目2. 解题1. 题目 新一轮的「力扣杯」编程大赛即将启动&#xff0c;为了动态显示参赛者的得分数据&#xff0c;需要设计一个排行榜 Leaderboard。 请你帮忙来设计这个 Leaderboard 类&#xff0c;使得它有如下 3 个函数&#xff1a; addScore(playerId, score)…