我有一个1000维的数据集,我正在用Python中的DBSCAN对数据进行聚类。我很难理解该选择什么标准以及为什么。
有人能解释一下吗?我应该如何决定将eps
设置为哪些值?
我对更精细的数据结构感兴趣,所以min_value
被设置为2。现在我使用了常规的度量,在sklearn中对dbscan进行预置,但是对于较小的eps
值(如eps
< 0.07 ),我得到了几个集群,但忽略了许多点,对于较大的值,我得到了几个较小的集群和一个巨大的集群。我明白,一切都取决于手头的数据,但我感兴趣的是如何以连贯和结构化的方式选择eps值,以及选择什么指标!
我读过this question,还有关于10个维度的答案,我有1000 :)而且我也不知道如何评估我的度量,所以用一个更详细的解释会很有趣:评估您的度量!
编辑:或关于使用现有python实现处理高维数据的其他集群算法的提示。
发布于 2013-04-22 07:35:39
首先,使用minPts=2
,您实际上并不是在进行DBSCAN集群,但是结果会使退化为单链接集群。
您确实应该使用minPts=10
或更高版本。
不幸的是,您并没有告诉我们您实际使用的距离度量!
Epsilon在很大程度上依赖于您的数据集和度量。如果不知道参数和数据集,我们就无法在那里帮助您。您是否尝试过绘制距离直方图以查看哪些值是典型的?这可能是选择此阈值的最佳启发式方法:查看距离直方图的分位数(或其中的样本)。
但是,请注意,光学确实消除了这个参数(至少当您有适当的实现时)。当使用Xi方法提取集群时,只需要epsilon大到不需要削减您感兴趣的结构(并且足够小到可以获得所需的运行时-更大的速度,虽然不是线性的)。然后,十一给出一个相对增加的距离,被认为是显着的。
https://stackoverflow.com/questions/16149384
复制