数据挖掘对德州数据探索性研究
目前公司的系统和童靴们做的分析报告大多是分主题的研究,但这样在某些情况下可能会割裂了不同主题数据间的内在联系,人为造成数据断层,也许不同主题间隐含着丰富的潜在知识。今天跟各位分享一种常用的降维技术(主成分分析),并利用聚类分析对不同变量根据相似性原则进行聚类。
------------------------------------------------------------------------------------------------------------------------------------------------------
数据来源:数据后台
数据字段:
字段定义:沉睡用户:30天内没有登录过的用户
活跃用户:30天内有登录过的用户
研究周期:2013年2月--2013年11月
单位: 天
分析工具:R语言
------------------------------------------------------------------------------------------------------------------------------------------------------
分析思路:导入数据--利用相关性探索数据—利用原始数据建立聚类模型(判断结果)--对原始数据进行主成分降维处理—对处理过的数据再次进行聚类分析
1、 将数据读入R工具中:
代码:
setwd("E:\\公司\\技术分享文档") #设置为当前工作目录
w<-read.csv("德州FB数据.csv",T) #读入csv文件
head(w) #查看前六条记录
2、 利用相关性探索数据,研究货币量数据与用户属性间的关系,发现事物间的规律。
相关性分析原理:相关分析就是探索现象之间相关关系的密切程度和表现形式。
说明B随着A的增大有明显的增大。
经验分享:相关分析模型需要是数值型变量,所以必须进行原始数据整理和转换,模型建立后可用相关系数图展示。
选取货币量与活跃用户、新增用户间的关系做可行性研究
代码:
w=w[,c(2:11,16:17)]
#建立相关性分析模型,并进行可视化展示
round(cor(w[,1:6],w[,7:12]),2)
library(corrplot)
corrplot(cor(w[,1:6],w[,7:12]),method="ellipse")
相关系数图:
备注:椭圆越扁说明两者的相关性数值越大,蓝色表示正相关、红色表示负相关。
3、 利用原始数据建立聚类模型(判断结果)
聚类分析基本原理:通过分析事物的内在特点和规律,并根据相似性原则对事物进行分组。
经验分享:R中提供了丰富的关于等级聚类、划分聚类、基于模型聚类等方法的包,用户可以根据自己需求选择相应的包实现预期的效果,并可通过画图将结果可视化。
代码:
w=w[,-1] #剔除日期字段
w<-t(w) #将数据转置
dist.e=dist(w,method="euclidean") #计算其欧氏距离矩阵
heatmap(as.matrix(dist.e)) #将矩阵绘制热图
model1=hclust(dist.e,method="complete") #建立系统聚类模型
plot(model1,main='聚类树图') #画聚类树图
热力图:
聚类树图:
各变量根据相似性原则进行分类,结果如上面的聚类树形图所示。
但果是令人沮丧的,游戏币与纯消耗分在一类、沉睡保险箱结余与活跃保险箱余额分在一类、沉睡身上携带与活跃身上携带分在一类,并不是之前想到研究货币量指标与用户行为指标间关系的目的。
究其原因,是由于货币量指标的数据量级大,故接下对各变量进行标准化处理,然后利用主成分分析进行降维,最后在进行聚类。
4、 对原始数据进行主成分降维处理
主成分分析基本原理:主成分分析是设法将原来众多具有一定相关性(比如P个指标),重新组合成一组新的互相无关的综合指标来代替原来的指标。
主成分几何解释图
经验分享:R中提供了princomp()函数进行主成分分析建模,用户可以根据结果中的方差解释情况和碎石图来判断选择哪几个主要的主成分进行研究。
代码:
w<-w[,-1]#剔除日期字段
w.sc<-scale(w) #将数据标准化
w.pr<-princomp(w.sc)#主成分分析建模
summary(w.pr) #查看模型结果
从结果看,到第五个主成分累积的解释方差就达到85%
碎石图代码:
screeplot(w.pr,type="line",main="主成分分析碎石图",);abline(h=1) #画碎石图
碎石图:
从每个主成分的解释方差比例和碎石图都可以看出,选择前五个主成分都可以解释大部分的信息。
5、 对处理过的数据再次进行聚类分析
代码“
dist.e=dist(x,method="euclidean") #计算其欧氏距离矩阵
model1=hclust(dist.e,method="complete") #建立系统聚类模型
plot(model1,main='聚类树图') #画聚类树图
聚类树图:
------------------------------------------------------------------------------------------------------------------------------------------------
总结:本研究利用了数据挖掘中经典的相关性分析、主成分分析、聚类分析的那个算法。感兴趣的童靴可以自己查找相关资料了解。
顶0
踩