我正在开发一个程序,该程序在特征空间(1000+ 维)中接收几个(<50)高维点,并通过递归使用标准 k 聚类对它们执行层次聚类。
我的问题是,在任何一次 k 聚类过程中,高维表示的不同部分都是多余的。我知道这个问题属于特征提取、选择或加权的范畴。
一般来说,在选择特定的特征提取/选择/加权算法时会考虑什么?具体来说,在我的情况下,什么算法是准备我的数据进行聚类的最佳方法?
我正在开发一个程序,该程序在特征空间(1000+ 维)中接收几个(<50)高维点,并通过递归使用标准 k 聚类对它们执行层次聚类。
我的问题是,在任何一次 k 聚类过程中,高维表示的不同部分都是多余的。我知道这个问题属于特征提取、选择或加权的范畴。
一般来说,在选择特定的特征提取/选择/加权算法时会考虑什么?具体来说,在我的情况下,什么算法是准备我的数据进行聚类的最佳方法?
看看这篇论文:
Witten DM 和 R Tibshirani (2010) 聚类中的特征选择框架。美国统计协会杂志 105(490):713-726。
以及弗里德曼的相关论文 COSA。他们都深入讨论了这些问题。
我建议将基于 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 解决无监督问题感觉很自然。您也可以在第一次迭代后尝试监督特征选择,因为您手头有集群标签。