【理论篇】:主成分分析法和变量聚类

压缩变量的思路方法

建模前—主成分、因子分析或变量聚类
建模时—逐步法或者全子集法

  1. 主成分分析:根据变量之间的相关性,把相关性较高的地方拿出来提取一个主成分,即从原始变量中导出几个少数主成分,使他们尽可能多的保留原始变量的信息,且彼此不相关

    选取原则:单个主成分解释的变量不应该小于1,选取主成分累积达到80% ~90%

Paste_Image.png

代码块
1.数据源:该数据记录电信客户业务使用行为信息;
属性说明:
ID:客户编码
cnt_call:打电话次数
cnt_msg:发短信次数
cnt_wei:发微信次数
cnt_web:浏览网站次数

Paste_Image.png
> library(sqldf)
> setwd('E:\\R数据挖掘实战\\第四周\\data数据')
> orgData <- read.csv("profile_telecom.csv") #读取数据框
> names(orgData) #获取数据框的列名
[1] "ID"       "cnt_call" "cnt_msg"  "cnt_wei"  "cnt_web" 
> orgData <- orgData[,2:5] #数据框的切片,2:5行的数据选出并且赋值,只保留参与运算
> head(orgData)
  cnt_call cnt_msg cnt_wei cnt_web
1       46      90      36      31
2       53       2       0       2
3       28      24       5       8
4        9       2       0       4
5      145       2       0       1
6      186       4       3       1
> #主成分分析方法一
> pr1 <- princomp(orgData,cor = TRUE) #最传统主成分分析的方法——princomp 函数
> #cor = TRUE --> 样本的相关矩阵R做主成分分析, = FALSE --> 样本的协方差S做主成分分析
> pr1
Call:
princomp(x = orgData, cor = TRUE)

Standard deviations:
    Comp.1     Comp.2     Comp.3     Comp.4 
1.58127090 0.99237512 0.71374657 0.07307394 

 4  variables and  600 observations.

解析: 做了中心标准化,Comp.1~1.58127090 说明了解释1.58个变量,第四个解释了0.07个变量,则说明了只要保留三个

累积解释情况
> #loading是逻辑变量 
> #当loading=TRUE时表示显示loading 的内容
> #loadings的输出结果为载荷 是主成分对应于原始变量的系数即Q矩阵
> summary(pr1,loadings=TRUE)
Importance of components:
                          Comp.1    Comp.2    Comp.3     Comp.4
Standard deviation     1.5812709 0.9923751 0.7137466 0.07307394
Proportion of Variance 0.6251044 0.2462021 0.1273585 0.00133495
Cumulative Proportion  0.6251044 0.8713065 0.9986650 1.00000000

Loadings:
         Comp.1 Comp.2 Comp.3 Comp.4
cnt_call -0.111  0.990              
cnt_msg  -0.510 -0.127  0.810 -0.262
cnt_wei  -0.579        -0.559 -0.593
cnt_web  -0.627        -0.157  0.762

解析:
分析结果含义
Standard deviation 标准差 其平方为方差=特征值
Proportion of Variance 方差贡献率
Cumulative Proportion 方差累计贡献率--->累积解释力度在80%~90%之间,从而筛选出到底是几个变量

权重矩阵,可以初步看出主成分包含的代表的信息,谁的权重高
comp.1四个都有关系代表着数据业务
Comp.2 代表电话业务
引申出无法解释主成分代表的信息

Paste_Image.png
#画主成分的碎石图
screeplot(pr1,type="lines") #第一个变缓慢的趋势就是保留的变量
Paste_Image.png
还好主成分可以旋转

不旋转情况下和上面一样

> library(psych)

载入程辑包:‘psych’

The following objects are masked from ‘package:ggplot2’:

    %+%, alpha

> pr2<-principal(orgData,nfactors=3,rotate="none",covar=F,score=TRUE) 
> #nfactors=3 ,指定值保留几个组成分,rotate="none" ,表示不做因子旋转
> pr2
Principal Components Analysis
Call: principal(r = orgData, nfactors = 3, rotate = "none", covar = F, 
    scores = TRUE)
Standardized loadings (pattern matrix) based upon correlation matrix
          PC1   PC2   PC3 h2      u2 com
cnt_call 0.18  0.98  0.06  1 6.5e-08 1.1
cnt_msg  0.81 -0.13  0.58  1 3.7e-04 1.9
cnt_wei  0.92 -0.02 -0.40  1 1.9e-03 1.4
cnt_web  0.99 -0.05 -0.11  1 3.1e-03 1.0

                       PC1  PC2  PC3
SS loadings           2.50 0.98 0.51
Proportion Var        0.63 0.25 0.13
Cumulative Var        0.63 0.87 1.00
Proportion Explained  0.63 0.25 0.13
Cumulative Proportion 0.63 0.87 1.00

Mean item complexity =  1.3
Test of the hypothesis that 3 components are sufficient.

The root mean square of the residuals (RMSR) is  0 
 with the empirical chi square  0.01  with prob <  NA 

Fit based upon off diagonal values = 1

带旋转

> library(psych)
> fc1<-principal(orgData,nfactors=2,rotate="varimax",covar=F,score=TRUE) #varimax 方差最大化
> fc1
Principal Components Analysis
Call: principal(r = orgData, nfactors = 2, rotate = "varimax", covar = F, 
    scores = TRUE)
Standardized loadings (pattern matrix) based upon correlation matrix
          RC1   RC2   h2     u2 com
cnt_call 0.06  1.00 1.00 0.0037   1
cnt_msg  0.82 -0.03 0.67 0.3343   1
cnt_wei  0.91  0.09 0.84 0.1611   1
cnt_web  0.99  0.06 0.98 0.0156   1

                       RC1  RC2
SS loadings           2.48 1.01
Proportion Var        0.62 0.25
Cumulative Var        0.62 0.87
Proportion Explained  0.71 0.29
Cumulative Proportion 0.71 1.00

Mean item complexity =  1
Test of the hypothesis that 2 components are sufficient.

The root mean square of the residuals (RMSR) is  0.1 
 with the empirical chi square  72.93  with prob <  NA 

Fit based upon off diagonal values = 0.97

解析:

Paste_Image.png

第一个主成分代表总体:微信和微博
第二个主成分代表总体偏差指标的捕捉:电话业务

2 . 变量的聚类:先把几个变量归纳为几个维度,从几个维度里面找到最合理的变量

Paste_Image.png

分为三组变量


Paste_Image.png

给出了所有的情况,选取最大的


Paste_Image.png

由上图可知分为三组


Paste_Image.png
Paste_Image.png
orgData<-read.csv("profile_telecom.csv")
head(orgData)
orgData<-orgData[,2:5]

library(ClustOfVar)#专门对变量的聚类的包
tree <- hclustvar(orgData) 
plot(tree) #先做变量的聚类,做聚类的树形图,可以清晰的看出聚类可以压缩的变量
Paste_Image.png

到底是两类好还是三类好,下面做检验

stability(tree,B=40) #对树形图做一个检验,到底是两类好还是三类好呢?,那个高选择那个
#如果一样的话

> part <- cutreevar(tree,3,matsim = T)#matsim = T 表示变量之间的相关性的观察
> summary(part)

Call:
cutreevar(obj = tree, k = 3, matsim = T)



Data: 
   number of observations:  600
   number of variables:  4
   number of clusters:  3

Cluster  1 : 
         squared loading
cnt_call               1


Cluster  2 : 
        squared loading
cnt_msg               1


Cluster  3 : 
        squared loading
cnt_wei            0.98
cnt_web            0.98


Gain in cohesion (in %):  96.7
> part$var
$cluster1
         squared loading
cnt_call               1

$cluster2
        squared loading
cnt_msg               1

$cluster3
        squared loading
cnt_wei       0.9752462
cnt_web       0.9752462

> part$sim
$cluster1
         cnt_call
cnt_call        1

$cluster2
        cnt_msg
cnt_msg       1

$cluster3
          cnt_wei   cnt_web
cnt_wei 1.0000000 0.9034359
cnt_web 0.9034359 1.0000000

参考资料:CDA《信用风险建模》微专业

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容