如何在数据集非常小的情况下为更好的聚类加权特征?

4
我正在开发一个程序,该程序接收在特征空间中具有高维度(1000+维)的多个点(小于50个),并通过递归使用标准k聚类对它们执行分层聚类。
我的问题是,在任何一个k聚类步骤中,高维表示的不同部分是冗余的。我知道这个问题属于特征提取、选择或加权的范畴。
一般来说,当选择特定的特征提取/选择/加权算法时,要考虑哪些因素?在我这种情况下,最好的准备数据进行聚类的算法是什么?

我想知道对于这个问题,http://stats.stackexchange.com/ 是否是更适合的网站。 - Michael McGowan
1
我认为这个问题适合在这里,因为它是一个算法问题,而且Stack Overflow似乎处理了许多机器学习问题。 - zergylord
2个回答

3

请查看这篇论文:

Witten DM和R Tibshirani(2010)提出了一种聚类特征选择的框架。《美国统计协会杂志》105(490):713-726。

以及Friedman的相关论文COSA。它们都深入讨论了这些问题。


哇,谢谢你提供的链接。那篇论文完美地回答了我的问题。 - zergylord

1
我建议结合基于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解决无监督问题感觉很自然。您也可以在第一次迭代后尝试有监督的特征选择,因为您已经有了聚类标签。


只有在您不想在每个级别的每个聚类中执行 PCA 时才有意义。由于您拥有少量样本,因此对于每个聚类执行 PCA 也可能足够。 - Tugrul Ates

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接