一、距离定义
1.1 点-点 距离
距离用来衡量观测变量的属性,第 i i i个特征的观测值 X i = ( x i 1 , x i 2 , . . . , x i p ) X_{i}=(x_{i1},x_{i2},...,x_{ip}) Xi=(xi1,xi2,...,xip),第 j j j个特征的观测值 X j = ( x j 1 , x j 2 , . . . , x j p ) X_{j}=(x_{j1},x_{j2},...,x_{jp}) Xj=(xj1,xj2,...,xjp), X i X_{i} Xi和 X j X_{j} Xj的距离有几种计算方式:
(1)曼哈顿距离 :可用于既有连续变量也有分类变量的聚类分析(分类变量需要做哑变量转换)
d
i
j
=
∑
k
=
1
p
∣
x
i
k
−
x
j
k
∣
d_{ij}=\sum_{k=1}^{p}\left | x_{ik}-x_{jk} \right |
dij=k=1∑p∣xik−xjk∣
p
p
p为特征个数。
(2)欧氏距离:适用于只有连续变量的聚类分析
d
i
j
=
∑
k
=
1
p
(
x
i
k
−
x
j
k
)
2
d_{ij}=\sqrt{\sum_{k=1}^{p}( x_{ik}-x_{jk} )^2}
dij=k=1∑p(xik−xjk)2
(3)闵可夫斯基距离
d
i
j
=
[
∑
k
=
1
p
∣
x
i
k
−
x
j
k
∣
q
]
1
/
q
d_{ij}=\left [ \sum_{k=1}^{p}\left | x_{ik}-x_{jk} \right |^q\right ]^{1/q}
dij=[k=1∑p∣xik−xjk∣q]1/q
1.2 类-类 距离
(1)平均距离:倾向于将大的类分开,对异常值敏感
D
(
C
i
,
C
j
)
=
[
1
n
i
n
j
∑
x
i
ϵ
C
i
,
x
j
ϵ
C
j
d
i
j
2
]
1
/
2
D_{(C_{i},C_{j})}=\left [ \frac{1}{n_{i}n_{j}}\sum_{x_{i}\epsilon C_{i},x_{j}\epsilon C_{j}}d_{ij}^2\right ]^{1/2}
D(Ci,Cj)=⎣⎡ninj1xiϵCi,xjϵCj∑dij2⎦⎤1/2
n
i
、
n
j
n_{i}、n_{j}
ni、nj分别是类
C
i
、
C
j
C_{i}、C_{j}
Ci、Cj中点的个数,
d
i
j
d_{ij}
dij为任意两类中节点之间距离。
(2)中心距离:较少受异常值影响,但类间的距离没有单调递增的趋势,在树状聚类图上可能出现逆转,限制了使用范围。
D
(
C
i
,
C
j
)
=
d
(
r
i
,
r
j
)
D_{(C_{i},C_{j})}=d(r_{i},r_{j})
D(Ci,Cj)=d(ri,rj)
d
(
r
i
,
r
j
)
d(r_{i},r_{j})
d(ri,rj)为两类各自质心之间的距离,“质心”(centroids)是类中所有数据的均值。在二维平面中,一类数据点的质心的
横坐标就是这一类数据点的横坐标的均值,质心的纵坐标就是这一类数据点的纵坐标的均值。
(3)Ward最小方差:受异常值影响小,适用范围广泛
D
(
C
i
,
C
j
)
=
∑
x
ϵ
C
i
j
(
x
−
r
i
j
)
2
−
∑
x
ϵ
C
i
(
x
−
r
i
)
2
−
∑
x
ϵ
C
j
(
x
−
r
j
)
2
D_{(C_{i},C_{j})}=\sum_{x\epsilon C_{ij}}(x-r_{ij})^{2}-\sum_{x\epsilon C_{i}}(x-r_{i})^{2}-\sum_{x\epsilon C_{j}}(x-r_{j})^{2}
D(Ci,Cj)=xϵCij∑(x−rij)2−xϵCi∑(x−ri)2−xϵCj∑(x−rj)2
C
i
j
C_{ij}
Cij为两类中所有样本点的集合,即两类间距离 = 两类中所有样本点的总离差平方和 - 两类样本的整体组内离差平方和。
1.3 离差平方和
(1)组内离差平方和(Within-Cluster Sum-of-Squares):一个类中所有样本点到质心的距离的平方和
W
C
S
S
C
i
=
∑
x
ϵ
C
i
(
x
−
r
i
)
2
=
∑
j
=
0
n
i
∑
k
=
0
m
(
x
i
j
k
−
r
i
k
)
2
WCSS_{C_{i}}=\sum_{x\epsilon C_{i}}(x-r_{i})^{2}=\sum_{j=0}^{n_{i}}\sum_{k=0}^{m}(x_{ijk}-r_{ik})^{2}
WCSSCi=xϵCi∑(x−ri)2=j=0∑nik=0∑m(xijk−rik)2
类
C
i
C_{i}
Ci中有
n
i
n_{i}
ni个样本,每个点存在
m
m
m个特征,
x
i
j
k
x_{ijk}
xijk是类
C
i
C_{i}
Ci中第
j
j
j个样本的第
k
k
k个特征值,
r
i
k
r_{ik}
rik是类
C
i
C_{i}
Ci中
k
k
k个特征的均值。
(2)整体组内离差平方和
将一个数据集中的所有簇的簇内平方和相加,就得到了整体组内平方和:
W
C
S
S
=
∑
i
=
0
n
C
S
S
C
i
WCSS=\sum_{i=0}^{n}CSS_{C_{i}}
WCSS=i=0∑nCSSCi
n
n
n为数据集中类的个数。
(3)联系
整体组间离差平方和 = 所有样本点的总离差平方和 - 整体组内离差平方和,与Ward最小方差求类间距离的思想一致。
二、数据处理
(1)特征变量的选择应符合分析主题,选择与主题相关特征;
(2)聚类分析应尽量少使用/避免使用分类变量,如必须使用,应先将分类变量做哑变量转换;
(4)聚类分析的数据不可以存在缺失值(回归模型也不智慧缺失值,但决策树允许缺失值);
(4)特征的量纲不一致时,要进行标准化处理,如中心标准化、极差标准化(若因子分析降维或分布形态转化等过程中已经标准化,则不需要再标准化);
(5)不同特征应尽量避免共线性,可使用主成分分析和因子分子降维,但考虑聚类分析重视模型的可解释性,因此通常使用因子分析降维。
(6)① 若利用聚类分析识别异常值,无需对异常值处理;② 若根据变量特征聚类分群,则需要对异常值进行处理,但为了使数据特征不丢失,异常值在聚类分析中的处理并非是删除,通常做特征变量的分布形态转换,如百分位秩转换、Tukey正态分布打分。
特别说明:(4)消除量纲的标准化处理不一定改变分布形态, (6)② 取对数、 百分位秩、 Tukey评分等方法可以同时消除量纲、改变分布形态,取对数一般用于回归分析中,百分位秩、 Tukey评分用于聚类。根据变量特征聚类分群时,通常同时需要标准化和改变分布形态。
三、聚类步骤
(1)利用聚类分析识别异常值
(2)根据变量特征聚类分群(一般聚类)
四、层次(系统)聚类
形成类相似度层次图谱, 便于直观的确定类之间的划分。 该方法可以得到较理想的分类, 但是难以处理大量样本。
步骤为:
(1)计算每两个观测之间的距离;
(2)将最近的两个观测聚为一类, 将其看作一个整体计算与其它观测(类) 之间的距离;
(3)一直重复上述过程, 直至所有的观测被聚为一类。
五、Kmeans聚类
Kmeans聚类是非层次聚类算法,将观测分为预先指定的不重叠的类。 该方法可以处理样本量巨大的数据, 但是不能提供类相似度信息, 不能交互的决定聚类个数。
5.1 步骤
(1)设定K值, 确定聚类数( 随机分配聚类中心所需的种子);
(2)计算每个点到类中心的距离( 欧式距离),将点并入与类中心距离最近的类;
(3)重新计算类中心( 均值),作为新的中心;
(4)重新计算距离,迭代到分类结果不再变化 / 达到迭代步数 / 收敛标准( Ward最小二乘准则)停止 。
5.2 确定类的数量
(1)树状图
树状图中,横坐标为类的数量,纵坐标为距离,一般取距离(纵坐标)宽度大的情况所对应的类的数目,此时聚类结果更稳定。如下图所示,水平线与树状图中的垂直线有几个交点就表示此时是分几类的结果,本图可以看到2类和3类的水平线,通过分析可知3类的结果更稳定,因为从3类可以在最大的距离宽度下存在。
(2)肘部法
肘部法的思想与树状图法类似,横坐标是类的数目,纵坐标是成本函数,成本函数是类别畸变程度之和(WCSS),若类内部的成员彼此间越紧凑则类的畸变程度越小,反之,若类内部的成员彼此间越分散则类的畸变程度越大。随着类的数目增大,平均畸变程度会减小;每个类包含的样本数会减少,于是样本离其重心会更近。但是,随着类的数目继续增大,平均畸变程度的改善效果会不断减低。值增大过程中,畸变程度的改善效果下降幅度最大的位置对应的值就是肘部,即曲率最高的点为类的数目取值。
(3)CCC值
CCC值测量模型分类结果和随机分类结果的差别,如果差别越大,则模型分群越佳。CCC值越大越好。
(4)F值
F值测量分组的紧密性,F值越大越好。
(5)轮廓系数
轮廓系数的思路与Ward方法类似,是组内与组间不相似程度的差比:
S
i
=
b
i
−
a
i
m
a
x
(
a
i
,
b
i
)
S_{i}=\frac{b_{i}-a_{i}}{max(a_{i},b_{i})}
Si=max(ai,bi)bi−ai
a
i
a_{i}
ai是点
i
i
i在组内与其他点的不相似程度平均值;
b
i
b_{i}
bi是点
i
i
i与其他组的点的不相似程度平均值。轮廓系数介于[-1,1],越接近于1代表内聚性越强,组间分离度越好。
六、两步法聚类
先使用K均值法聚类, 然后使用层次方法。