我建议结合基于PCA的特征选择和k-means算法。
找到您的主成分并按权重排序。在您的层次结构的每个深度上使用这些权重。
例如,假设您有一个四层的聚类层次结构,并且您获得了如下的组件权重:
W1: 0.32
W2: 0.20
W3: 0.18
W4: 0.09
...
W1000: 0.00
我们想要在每个深度上消耗顶部的权重 1/N
,其中 N
是深度计数。这里将 N
设为 4
。第一个组件的 0.25
被消耗掉,然后我们得到:
W1: 0.07*
W2: 0.20
W3: 0.18
W4: 0.09
...
W1000: 0.00
第一个组件的新分数变为0.32-0.25=0.07
。在第二次迭代中,我们再次使用顶部的0.25
。
W1: 0.00*
W2: 0.02*
W3: 0.18
W4: 0.09
...
W1000: 0.00
第三次迭代是:
W1: 0.00
W2: 0.00*
W3: 0.00*
W4: 0.04*
...
W1000: 0.00
第四次迭代使用了权重加起来为0.25
的剩余部分。
在每次迭代中,我们只使用消耗权重的特征。例如,在第二次迭代后进行KLT后,我们仅使用特征的PC1和PC2,因为这些是我们消耗权重的唯一组件。因此,每次迭代要聚类的组件如下:
Iteration 1: PC1
Iteration 2: PC1, PC2
Iteration 3: PC2, PC3, PC4
Iteration 4: PC4, ... PC1000
您可以将最终的重量消耗目标设定为小于1.0
,并在较少的权重迭代中进行此操作。这实际上相当于在聚类之前过滤掉所有超出目标重量的组件以进行尺寸缩减。
最后,我不知道是否有一个名称来描述这种方法。使用PCA解决无监督问题感觉很自然。您也可以在第一次迭代后尝试有监督的特征选择,因为您已经有了聚类标签。