【问题标题】:Affinity propagation preference parameter亲和传播偏好参数
【发布时间】:2017-09-21 06:24:56
【问题描述】:

使用 scikit-learn 的相似性传播实现对一组实体名称进行聚类,结果令人鼓舞,使用修改后的 Jaro-Winkler 距离作为相似度指标,但我的聚类仍然太多(即误报太多。 )

我在 scikit-learn 文档中看到存在一个影响集群数量的“偏好”参数,描述如下:

首选项:类数组,形状 (n_samples,) 或浮点数,可选

每个点的偏好 - 偏好值较大的点更有可能被选为样本。样本的数量,即集群的数量,受输入偏好值的影响。如果首选项不作为参数传递,它们将被设置为输入相似度的中位数。[0]

然而,当我开始修改这个值时,我发现一个非常窄的值范围给我的集群要么太多 (preference=-11.13) 要么太少 (preference=-11.11)。

有什么方法可以确定偏好参数的“合理”值应该是多少?为什么我无法获得非极端数量的集群?

类似问题:

Affinity Propagation - Cluster Imbalance

Affinity Propagation preferences initialization

【问题讨论】:

  • 不要过度拟合参数!
  • 我知道!在这种情况下,我们手动检查输出,因此我们对“正确”应该是什么样子有一个很好的了解。
  • 我尝试过使用均值和最小值(点相似性)及其函数来获得不错的偏好。我仍在努力寻找一种实际可行的方法。
  • 您是否找到了一种在不过度拟合模型的同时获得更好的超参数的好方法?

标签: python scikit-learn cluster-analysis unsupervised-learning


【解决方案1】:

您可以尝试使用sklearn.model_selection.GridSearchCVsklearn.model_selection.RandomizedSearchCV

您可以定义一个自定义错误度量,以鼓励超参数搜索生成更小的集群。然后,您可以根据验证集搜索多个值以找到适合您的数据集的值。

更多信息: http://scikit-learn.org/stable/modules/grid_search.html

【讨论】:

    猜你喜欢
    • 2019-09-28
    • 1970-01-01
    • 2016-05-31
    • 2017-06-19
    • 2014-01-24
    • 2019-10-15
    • 2017-04-13
    • 2013-08-06
    • 1970-01-01
    相关资源
    最近更新 更多