不要求簇在样本空间中的几何是凸的,可以处理如下图所示的数据。
定义算法参数
定义可连接性
定义簇
对于一个核心样本 $\boldsymbol x \in S$ 而言,其可达的所有样本组成的集合记为 $X(\boldsymbol x) = \{ \boldsymbol u \in X \ | \ \boldsymbol x \to \boldsymbol u \}$,可以证明 $X(\boldsymbol x)$ 是满足连接性与最大性的簇。
所以每次随机选择核心样本 $\boldsymbol x$ 求解其可达集合 $X(\boldsymbol x)$,并不再考虑已经入簇的核心样本,就可以划分出各个簇了。
然而这样的话仍不够,仍可能有某些可达样本会被不同核心样本多次触及(如有 $\boldsymbol x_1 \to \boldsymbol u, \ \boldsymbol x_2 \to \boldsymbol u$,但没有 $\boldsymbol x_1 \to \boldsymbol x_2$ 或 $\boldsymbol x_2 \to \boldsymbol x_1$,如下图),所以还需要一个未访问节点集。
求解方法
十分直白的流程:
树状图
优化:
不同的距离类型(下面的二范数距离都可以换成别的距离):
最小距离:最近点之间的距离。被称为「单链接 (single-linkage)」算法。
$$ d_{\rm min} = \min_{\boldsymbol x \in X} \min_{\boldsymbol y \in Y} {\rm dist} \| \boldsymbol x - \boldsymbol y \| _2 $$
最大距离:最远点之间的距离。被称为「全链接 (complete-linkage)」算法。
$$ d_{\rm max} = \max_{\boldsymbol x \in X} \max_{\boldsymbol y \in Y} {\rm dist} \| \boldsymbol x - \boldsymbol y \| _2 $$
平均距离:每对点间的平均距离。被称为「均链接 (average-linkage)」算法。
$$ d_{\rm avg} = \frac {1}{|X| |Y|} \sum_{\boldsymbol x \in X} \sum_{\boldsymbol y \in Y} {\rm dist} \| \boldsymbol x - \boldsymbol y \| _2 $$
豪斯多夫 (Hausdorff) 距离:若要定义双向豪斯多夫距离 $d_{\rm H}$,先定义单向豪斯多夫距离 $d_{\rm h}$。
$$ d_{\rm H} (X, Y) = \max (d_{\rm h} (X, Y), d_{\rm h} (Y, X)), \\
d_{\rm h} (X, Y) = \max_{\boldsymbol x \in X} \min_{\boldsymbol y \in Y} \| \boldsymbol x - \boldsymbol y \| _2 $$