1.聚类的定义
聚类是对大量未标注的数据集,按数据的内在相似性将数据分为多个类别,使类别内的数据相似度较大,而类别间的数据相似度较小。
2.相似度/计算方法相似
闵可夫斯基距离/欧拉距离:
dist
(
X
,
Y
)
=
(
∑
i
=
1
n
∣
x
i
−
y
i
∣
p
)
1
p
\operatorname{dist}(X, Y)=\left(\sum_{i=1}^{n}\left|x_{i}-y_{i}\right|^{p}\right)^{\frac{1}{p}}
dist(X,Y)=(∑i=1n∣xi−yi∣p)p1
p=1,曼哈顿距离
p=2,欧式距离
p取无穷大,是分量差的最大值,也叫切比雪夫距离。
杰卡德相似系数:
J
(
A
,
B
)
=
∣
A
∩
B
∣
∣
A
∪
B
∣
J(A, B)=\frac{|A \cap B|}{|A \cup B|}
J(A,B)=∣A∪B∣∣A∩B∣
余弦相似度:
cos
(
θ
)
=
a
T
b
∣
a
∣
⋅
∣
b
∣
\cos (\theta)=\frac{a^{T} b}{|a| \cdot|b|}
cos(θ)=∣a∣⋅∣b∣aTb
皮尔森相似系数:
ρ
x
y
=
cov
(
X
,
Y
)
σ
X
σ
Y
=
E
[
(
X
−
μ
X
)
(
Y
−
μ
Y
)
]
σ
X
σ
Y
=
∑
i
=
1
n
(
X
i
−
μ
X
)
(
Y
i
−
μ
Y
)
∑
i
=
1
n
(
X
i
−
μ
X
)
2
∑
i
=
1
n
(
Y
i
−
μ
Y
)
2
\rho_{x y}=\frac{\operatorname{cov}(X, Y)}{\sigma_{X} \sigma_{Y}}=\frac{E\left[\left(X-\mu_{X}\right)\left(Y-\mu_{Y}\right)\right]}{\sigma_{X} \sigma_{Y}}=\frac{\sum_{i=1}^{n}\left(X_{i}-\mu_{X}\right)\left(Y_{i}-\mu_{Y}\right)}{\sqrt{\sum_{i=1}^{n}\left(X_{i}-\mu_{X}\right)^{2}} \sqrt{\sum_{i=1}^{n}\left(Y_{i}-\mu_{Y}\right)^{2}}}
ρxy=σXσYcov(X,Y)=σXσYE[(X−μX)(Y−μY)]=∑i=1n(Xi−μX)2∑i=1n(Yi−μY)2∑i=1n(Xi−μX)(Yi−μY)
余弦相似度和皮尔森相似系数之间的关系:
n维向量x和n维向量y的夹角记作
θ
\theta
θ,其余弦值为
cos
(
θ
)
=
x
T
y
∣
x
∣
⋅
∣
y
∣
=
∑
i
=
1
n
x
i
y
i
∑
i
=
1
n
x
i
2
∑
i
=
1
n
y
i
2
\cos (\theta)=\frac{x^{T} y}{|x| \cdot|y|}=\frac{\sum_{i=1}^{n} x_{i} y_{i}}{\sqrt{\sum_{i=1}^{n} x_{i}^{2}} \sqrt{\sum_{i=1}^{n} y_{i}^{2}}}
cos(θ)=∣x∣⋅∣y∣xTy=∑i=1nxi2∑i=1nyi2∑i=1nxiyi
可知,相关系数就是将x,y的坐标各自平移到原点后的余弦值。这即解释了为何文档间求距离使用夹角余弦,这一物理量表征了文档去均值化后的随机向量的相关系数。
相对熵:
D
(
p
∥
q
)
=
∑
x
p
(
x
)
log
p
(
x
)
q
(
x
)
=
E
p
(
x
)
log
p
(
x
)
q
(
x
)
D(p \| q)=\sum_{x} p(x) \log \frac{p(x)}{q(x)}=E_{p(x)} \log \frac{p(x)}{q(x)}
D(p∥q)=x∑p(x)logq(x)p(x)=Ep(x)logq(x)p(x)
Hellinger距离:
D
α
(
p
∥
q
)
=
2
1
−
α
2
(
1
−
∫
p
(
x
)
1
+
α
2
q
(
x
)
1
−
α
2
d
x
)
D_{\alpha}(p \| q)=\frac{2}{1-\alpha^{2}}\left(1-\int p(x)^{\frac{1+\alpha}{2}} q(x)^{\frac{1-\alpha}{2}} d x\right)
Dα(p∥q)=1−α22(1−∫p(x)21+αq(x)21−αdx)
特别地,当
α
=
0
\alpha=0
α=0时,有
D
α
(
p
∥
q
)
=
2
1
−
α
2
(
1
−
∫
p
(
x
)
1
+
α
2
q
(
x
)
1
−
α
2
d
x
)
⇒
D
H
(
p
∥
q
)
=
2
(
1
−
∫
p
(
x
)
q
(
x
)
d
x
)
s.t.
α
=
0
=
2
−
2
∫
p
(
x
)
q
(
x
)
d
x
=
∫
p
(
x
)
d
x
+
∫
q
(
x
)
d
x
−
∫
2
p
(
x
)
q
(
x
)
d
x
=
∫
(
p
(
x
)
−
2
p
(
x
)
q
(
x
)
+
q
(
x
)
)
d
x
=
∫
(
p
(
x
)
−
q
(
x
)
)
2
d
x
\begin{aligned} &D_{\alpha}(p \| q)=\frac{2}{1-\alpha^{2}}\left(1-\int p(x)^{\frac{1+\alpha}{2}} q(x)^{\frac{1-\alpha}{2}} d x\right)\\ &\Rightarrow D_{H}(p \| q)=2\left(1-\int \sqrt{p(x) q(x)} d x\right) \quad \text { s.t. } \alpha=0\\ &=2-2 \int \sqrt{p(x) q(x)} d x\\ &=\int p(x) d x+\int q(x) d x-\int 2 \sqrt{p(x) q(x)} dx\\ &=\int(p(x)-2 \sqrt{p(x) q(x)}+q(x)) d x\\ &=\int(\sqrt{p(x)}-\sqrt{q(x)})^{2} d x \end{aligned}
Dα(p∥q)=1−α22(1−∫p(x)21+αq(x)21−αdx)⇒DH(p∥q)=2(1−∫p(x)q(x)dx) s.t. α=0=2−2∫p(x)q(x)dx=∫p(x)dx+∫q(x)dx−∫2p(x)q(x)dx=∫(p(x)−2p(x)q(x)+q(x))dx=∫(p(x)−q(x))2dx
实际的物理点,使用欧式距离,集合相关杰卡得相似度,nlp相关使用余弦相似度,函数度量使用后面三种。
3.聚类的基本思想:
给定一个有N的对象的数据集,构造数据的k个簇,
k
≤
n
o
\mathrm{k} \leq \mathrm{n}_{\mathrm{o}}
k≤no满足以下条件:
每一个簇至少包含一个对象
每一个对象属于且仅属于一个簇
将满足上述条件的k个簇称为一个合理的划分
对于给定的类别数目k,首先给出合理划分,通过迭代改变样本和簇的隶属关系,使得每一次改进之后的划分方案都比前一次好。
4.K-means算法
假定输入样本为
S
=
x
1
,
x
2
,
…
,
x
m
\mathrm{S}=\mathrm{x}_{1}, \mathrm{x}_{2}, \ldots, \mathrm{x}_{\mathrm{m}}
S=x1,x2,…,xm,则算法步骤为
选择初始的k个类别中心
μ
1
μ
2
…
μ
k
\mu_{1} \mu_{2} \dots \mu_{k}
μ1μ2…μk
对于每个样本
x
i
x_i
xi,将其标记为距离类别中心最近的类别,即
label
i
=
arg
min
1
≤
j
≤
k
∥
x
i
−
μ
j
∥
\text { label }_{i}=\underset{1 \leq j \leq k}{\arg \min }\left\|x_{i}-\mu_{j}\right\|
label i=1≤j≤kargmin∥xi−μj∥
将每个类别中心更新为隶属于改类别的所有样本均值
μ
j
=
1
∣
c
j
∣
∑
i
e
c
j
x
i
\mu_{j}=\frac{1}{\left|c_{j}\right|} \sum_{i e c_{j}} x_{i}
μj=∣cj∣1iecj∑xi
重复最后两步,直到类别中心的变化小于某阀值。
终止条件:
迭代次数/簇中心变化率/最小平方误差MSE。
4.对k-Means的思考
k-Means将簇中所有点的均值作为新质心,若簇中含有异常点,将导致均值偏离严重。以一维数据为例:
数组1,2,3,4,100的均值为22,显然距离大多数数据1,2,3,4比较远;
改成求数组的中位数3,在该实例中更为稳妥。这种聚类方式即为k-Mediods聚类(k中值聚类)
5.k-Means的公式化解释
记K个簇中心为
μ
1
,
μ
2
,
⋯
,
μ
k
\mu_{1}, \mu_{2}, \cdots, \mu_{k}
μ1,μ2,⋯,μk,每个簇的样本数目为
N
1
,
N
2
,
⋯
,
N
k
N_{1}, N_{2}, \cdots, N_{k}
N1,N2,⋯,Nk
使用平方误差作为目标函数:
J
(
μ
1
,
μ
2
,
⋯
μ
k
)
=
1
2
∑
j
=
1
K
∑
i
=
1
N
j
(
x
i
−
μ
j
)
2
J\left(\mu_{1}, \mu_{2}, \cdots \mu_{k}\right)=\frac{1}{2} \sum_{j=1}^{K} \sum_{i=1}^{N_{j}}\left(x_{i}-\mu_{j}\right)^{2}
J(μ1,μ2,⋯μk)=21j=1∑Ki=1∑Nj(xi−μj)2
对关于
μ
1
,
μ
2
,
⋯
,
μ
k
\mu_{1}, \mu_{2}, \cdots, \mu_{k}
μ1,μ2,⋯,μk的函数求偏导
∂
J
∂
μ
j
=
−
∑
i
=
1
N
j
(
x
i
−
μ
j
)
⟶
↔
0
⇒
μ
j
=
1
N
j
∑
i
=
1
N
j
x
i
\frac{\partial J}{\partial \mu_{j}}=-\sum_{i=1}^{N_{j}}\left(x_{i}-\mu_{j}\right) \stackrel{\leftrightarrow}{\longrightarrow} 0 \Rightarrow \mu_{j}=\frac{1}{N_{j}} \sum_{i=1}^{N_{j}} x_{i}
∂μj∂J=−i=1∑Nj(xi−μj)⟶↔0⇒μj=Nj1i=1∑Njxi
6.Mini-batch k-means算法描述
7.k-means聚类算法总结:
优点:是解决聚类问题的一种经典算法,简单,快速;
对处理大数据集,该算法保持可伸缩性和高效率;
当簇近似为高斯分布时,它的效果较好。
缺点:在簇的平均值可被定义的情况下才能使用,可能不适用某些应用;
必须事先给出k(要生成的簇的数目),而且对初值敏感,对于不同的初始值,可能会导致不同的结果;
不适合于发现非凸形状的簇或者大小差别很大的簇;
对噪声和孤立点数据敏感。
可作为其他聚类方法的基础算法,如谱聚类。