如何使用非常小的数据集对功能进行加权以实现更好的聚类?

时间:2011-07-14 22:48:34

标签: statistics machine-learning cluster-analysis feature-extraction feature-selection

我正在开发一个程序,该程序在特征空间(1000+维度)中包含多个(<50)高维点,并通过递归使用标准k聚类对它们执行层次聚类。

我的问题是,在任何一个k-聚类过程中,高维表示的不同部分都是多余的。我知道这个问题是在特征提取,选择或加权的保护下进行的。

一般来说,在选择特定的特征提取/选择/加权算法时会考虑什么?具体而言,在我的情况下,哪种算法是准备数据聚类的最佳方法?

2 个答案:

答案 0 :(得分:2)

查看本文:

Witten DM和R Tibshirani(2010)聚类中的特征选择框架。 Journal of the American Statistical Association 105(490):713-726。

弗里德曼的相关论文COSA。他们都深入讨论了这些问题。

答案 1 :(得分:0)

我建议将基于PCA的特征选择与k-means结合起来。

找出您的主要成分并按重量订购。并且在您的层次结构的每个深度消耗那些权重。

例如,假设您有一个四个深度的集群层次结构,您可以获得这样的组件权重:

W1: 0.32
W2: 0.20
W3: 0.18
W4: 0.09
...
W1000: 0.00

我们希望从每个深度的顶部消耗1/N的权重,其中N是深度计数。在此处N4。第一个组件的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用于无人监督的问题是很自然的。您也可以在第一次迭代后尝试有监督的特征选择,因为您手头有集群标签。