我正在尝试使用树冠集群为 mahout 中的 KMeans 提供初始集群。
有没有办法通过算法确定/近似距离阈值 T1 和 T2 的值?现在我有 T1 = 100 和 T2 = 1 这似乎没有做任何好事。
我正在尝试使用树冠集群为 mahout 中的 KMeans 提供初始集群。
有没有办法通过算法确定/近似距离阈值 T1 和 T2 的值?现在我有 T1 = 100 和 T2 = 1 这似乎没有做任何好事。
正如 whuber 所指出的,树冠聚类算法的作者建议 T1 和 T2 可以通过交叉验证来设置。然而,这些参数可以像任何其他超参数一样进行调整。最常见的技术之一是网格搜索,其中为每个参数指定了一个范围,以及在每次迭代中如何更改参数的步长。例如,假设我们指定 T1 的值范围为 25 到 100,步长为 25。这意味着要尝试的 T1 的可能值将是 (25, 50, 75, 100)。同样,我们可以将 T2 设置为 1-4 之间的可能值,步长为 1,使得可能值为 (1,2,3,4)。这意味着有 16 组可能的参数可供尝试。与任何其他分类或聚类算法一样,您是否会通过计算其 F1 分数、准确度/错误或其他性能指标来评估其功效,以确定 16 组参数中的最佳组。除了网格搜索,其他超参数优化算法包括Nelder-Mead,遗传算法、模拟退火和粒子群优化等等。这些算法将帮助您以自动方式确定 T1 和 T2 的适当值。
您在上面提到您有一个 100K 维的数据集。您是指数据中的行数还是列数?如果您指的是列数,我建议根据单个特征的方差和通过主成分分析 (PCA)或Kernel-PCA进行特征提取来执行某种特征选择组合。即使您的许多功能很有用(即提供信息增益以区分集群/类/输出变量值),拥有太多功能可能意味着您的聚类算法无法确定实例之间的适当距离。