其他章节答案请参考我的汇总统计学习方法答案汇总,都是自己写的。
1、试写出分裂聚类算法,自上而下地对数据进行聚类,并给出其算法复杂度。
解:
算法流程大致如下:
输入:数据集T,指定需要划分的簇数k
输出:k个数据集的子集
- 将数据集T中的所有样本作为一个初始簇。
- 在所有的簇中选择直径最大的簇记为C 0 C_0 C 0 。
- 计算簇C 0 C_0 C 0 中所有的点到其他点的平均距离最大的点p 0 p_0 p 0 放在一个新的簇C n e w C_{new}C n e w 中,C 0 C_0 C 0 中剩余的样本构成的簇记为C o l d C_{old}C o l d
- 然后重复一下过程:对C o l d C_{old}C o l d 中的点x x x,如果x x x到C n e w C_{new}C n e w 的距离比x x x 到C o l d C_{old}C o l d 中距离x x x最近的点的距离要小,那么就将点x x x放在新的簇C n e w C_{new}C n e w 中,除了点x x x剩下的点还记为C o l d C_{old}C o l d ,重复这个过程,直到C o l d C_{old}C o l d 中没有点可以放在C n e w C_{new}C n e w 中。
- 如果不满足停止条件,从步骤2开始继续重复。
时间复杂度是O ( K N 2 M ) O(KN^2M)O (K N 2 M ),其中K K K是类别数,N N N是数据集样本数,M M M是样本的维度。
2、证明类或者簇的四个定义中,第一个定义可以推出其他的三个定义。
证明: