模拟退火和 k-means

机器算法验证 matlab k-均值 主成分分析 svd
2022-03-30 18:10:37

我的问题之一https://stackoverflow.com/questions/7783933/clustering-data-outputs-irregular-plot-graph 遭受维数灾难,这也使得穷举搜索或分析方法不可行,组合问题的元启发式像模拟退火可能有助于我的努力在我的示例问题中如何将模拟退火与 k-means 结合起来?

对不起,我仍然试图让我的头脑了解模拟退火以及它如何可能提供帮助。

其他可能有帮助的问题是模拟退火与 pca、vds 的比较或如何结合使用。(对不起,我有点晚了)如果您了解我缺乏知识以及我可能试图了解的内容,欢迎进行编辑。

2个回答

听起来您正在对具有大量变量的数据集进行聚类分析;由于大量变量(如您提到的维度诅咒)而难以获得良好的结果;并且您正在考虑使用诸如模拟退火之类的优化技术来搜索您的变量,以发现您是否可以只使用一个子集 - 对吗?

如果是这样,该活动通常称为特征选择(有时称为特征提取),并且有大量文献描述了如何处理它。特征选择涉及选择原始变量的子集,并且与降维并不完全相同,降维通常涉及创建汇总它们的原始变量的少量线性组合(这是 PCA 或 SVD 等技术所做的)。

我可能给出的一个建议是注意您正在尝试搜索什么是离散空间(变量的幂集)。模拟退火作为一种优化技术,根据我的经验,更容易应用于搜索连续空间。在 MATLAB Global Optimization Toolbox中的实现尤其如此(因为我注意到您添加了 MATLAB 标记)。如果您为此使用 MATLAB,我建议遗传算法可能更容易适应通过离散空间进行搜索。

不久前,我为 MATLAB Digest 写了一篇文章,将遗传算法应用于相关问题(分类而不是聚类分析),附带示例代码。您可能会发现可以根据您的需要调整该代码。不过,这篇文章对分类问题进行了特征选择,因此它最大限度地提高了分类准确性——您需要为算法提供一个聚类指标来优化,例如分离、异质性或差距统计。

希望有帮助!

模拟退火是启发式搜索优化算法。您需要定义一个损失函数。SA 将对此进行优化并收敛到局部最小值。

根据定义,K-means 聚类还包括优化。它最小化了实例到集群中心的距离。该距离可以是欧几里德距离或曼哈顿距离。查看http://www.iro.umontreal.ca/~lisa/pointeurs/kmeans-nips7.pdf 了解其收敛特性和与梯度下降的相似性。

根据我有限的理解,使用 SA ve K-Means 的唯一方法是定义 K-Means 损失与距离最小化不同。

例如,您可以定义一个损失函数:使用不同的距离度量或不同的特征子集。

损失函数=特征的度量距离和特征的不同组合的总和

SA 将尝试最小化这个损失函数。