聚类分析-关联规则

概述

无监督的学习方式
相近的归类–分类具有一定意义:无监督学习

关键:

  • 亲疏关系:相似性与距离
  • 分类数确定:分多少类合适

距离的度量:

欧几里得距离:两个点坐标距离:
曼哈顿距离:绝对轴距总和:

切比雪夫距离:各坐标数值差的最大值
明可夫斯基距离:多个距离公式的概括性表述

dist(x)
a b
b 10.392305
c 2.828427 10.770330
ac距离更短

相似性度量

余弦相似性的度量:
更注重在方向上的差异
cos ⁡ θ = ∑ 1 n ( A i × B i ) ∑ 1 n A i 2 × ∑ 1 n B i 2 \cos\theta=\frac{\sum_1^n(A_i\times B_i)}{\sqrt {\sum_1^nA_i^2} \times \sqrt{\sum_1^nB_i^2}} cosθ=1nAi2 ×1nBi2 1n(Ai×Bi)

打分计算:
a<-c(10,9,8)
b<-c(4,3,2)
c<-c(8,9,10)
ab在夹角余弦的距离,更适合高维度计算

马氏距离

协方差矩阵,排除向量相关性影响

海明距离

用于编码,变成一样需要替换几次

杰卡德相似系数

两个集合,交集与并集之比

K-means聚类算法

  • 希望将数据分成 K
  • 随机选择k个点做为质心
  • 计算每一个质心得距离
  • 选出分组的新质心

Q about K-means

  • k 取决于经验
  • 初始质心是随机选择的:优化彼此最远点!
  • 不会一直循环,K-means有收敛,利用误差平方和(SSE)的概念
  • 每次聚类的结果很可能不一样“不稳定”与初始值选择有关

##k-means
newiris<-iris
newiris$Species<-NULL

kc<-kmeans(newiris,3)
kc
--------------------------------------------------------------
K-means clustering with 3 clusters of sizes 62, 38, 50

Cluster means://典型的类型数据
  Sepal.Length Sepal.Width Petal.Length Petal.Width
1     5.901613    2.748387     4.393548    1.433871
2     6.850000    3.073684     5.742105    2.071053
3     5.006000    3.428000     1.462000    0.246000

Clustering vector:
  [1] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
 [30] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1 1 2 1 1 1 1 1
 [59] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1
 [88] 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 2 2 2 1 2 2 2 2 2 2 1 1 2
[117] 2 2 2 1 2 1 2 1 2 2 1 1 2 2 2 2 2 1 2 2 2 2 1 2 2 2 1 2 2
[146] 2 1 2 2 1

Within cluster sum of squares by cluster:
[1] 39.82097 23.87947 15.15100
 (between_SS / total_SS =  88.4 %)

Available components:

[1] "cluster"      "centers"      "totss"        "withinss"    
[5] "tot.withinss" "betweenss"    "size"         "iter"        
[9] "ifault"    
---------------------------------------------------

table(kc$cluster,iris$Species)
--------------------------
   setosa versicolor virginica
  1      0         48        14
  2      0          2        36
  3     50          0         0 
  -------------------------------------------------

k-medoids

k-means:

  • 对异常数据敏感
  • 欧式距离不适用
  • 高维度情况,初始值对聚类结果影响大

k-medoids:
选择具体的样本代替质心作用:

  • 选择K个质心的值
  • 计算各个点到质心得距离
  • 将点的类划分为距离它最近的质心,形成K个cluster
  • 计算每个cluster内重新计算质心曼哈顿距离之和,选出最小误差点
    差异在于始终是某个样本点

k-means每一轮只要求一个平均值,k-medoids是所有点到它距离之和。

> ##k-medoids
> library(cluster)
> med<-pam(iris[,-5],3)
> med
Medoids:
      ID Sepal.Length Sepal.Width Petal.Length Petal.Width
[1,]   8          5.0         3.4          1.5         0.2
[2,]  79          6.0         2.9          4.5         1.5
[3,] 113          6.8         3.0          5.5         2.1
Clustering vector:
  [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 [30] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 3 2 2 2 2 2
 [59] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2
 [88] 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 3 3 3 3 2 3 3 3 3 3 3 2 2 3
[117] 3 3 3 2 3 2 3 2 3 3 2 2 3 3 3 3 3 2 3 3 3 3 2 3 3 3 2 3 3
[146] 3 2 3 3 2
Objective function:
    build      swap 
0.6709391 0.6542077 

Available components:
 [1] "medoids"    "id.med"     "clustering" "objective" 
 [5] "isolation"  "clusinfo"   "silinfo"    "diss"      
 [9] "call"       "data"      

其他聚类

  • 基于层次:BIRCH、CURE、Chameleon
  • 基于密度:DBSCAN、OPTICS、DENCLUE,避免仅仅生成球状聚类
  • 基于网格:处理速度很快:STING、CLIQUE、WaveCluster
  • 基于模型:每个簇假设为一个模型,发现数据对模型的最好匹配:COBWEB

关联规则:

发现数据之间有趣的关联或者相关联系

关联规则:A推导B的概率

  • 支持度:support(A ⇒ \Rightarrow B)=P(A ⋃ \bigcup B):既有啤酒又有尿布的交易
  • 置信度:confidence(A ⇒ \Rightarrow B)=p(A ⋃ \bigcup B)/P(A):
  • 提升度:lift(A ⇒ \Rightarrow B)=confidence(A ⇒ \Rightarrow B)/P(B):前件推出后件。提升度大于3,才是必要的。

Apriori性质:
频繁项所有非空子集必须都是频繁的

步骤:

  • 数据筛选:洗掉共有的项目,去掉普遍出现的项目
  • 支持度support:Apriori算法、FP-Growth算法
  • 根据置信度从频繁项中找强关联规则

你可能感兴趣的:(R,聚类,机器学习,python)