如何找到 DBSCAN 的最佳参数?
How to find optimal parametrs for DBSCAN?
有没有什么工具可以计算DBSCAN算法的minpts和eps的最优值?
目前我使用sklearn库来应用DBSCAN算法
from sklearn.cluster import DBSCAN
我尝试了几个 minpts 和 eps 的算法,但没有任何计算。
eps
和 minpts
都被认为是超参数。给定数据集,没有算法可以确定这些的完美值。相反,它们必须在很大程度上根据您要解决的问题进行优化。
关于如何优化的一些想法:
minpts
应该随着数据集大小的增加而变大。
eps
是一个处理您要查找的星团半径的值。要选择一个值,我们可以执行一种肘部技术(一种类似的技术,通常用于确定 K-Means 聚类中的最佳 k
)。
- 令 k = 最近邻的数量
- 对于 k 的值,对于数据集中的每个点,计算每个点与其 k 最近邻点之间的平均距离(某些软件包在某处内置了此功能)
- 在 X 轴上绘制点数,在 y 轴上绘制平均距离。
- 生成的图形应该是递增的(只要您按平均距离对数组进行递增排序)并且向上凹。应该有一个点是增长率急剧跳跃的,这个点叫做肘点,包含你的最优eps,也就是肘点的y值。
- 运行此算法使用不同的k值并比较结果。
如果有一个明确的方法来解决最优值,它会被大量记录下来。现在,我们所能做的就是给出我们最好的计算猜测。再次重申,您尝试解决的问题可能会影响您选择肘点的方式 - 了解这一点很重要。
有没有什么工具可以计算DBSCAN算法的minpts和eps的最优值?
目前我使用sklearn库来应用DBSCAN算法
from sklearn.cluster import DBSCAN
我尝试了几个 minpts 和 eps 的算法,但没有任何计算。
eps
和 minpts
都被认为是超参数。给定数据集,没有算法可以确定这些的完美值。相反,它们必须在很大程度上根据您要解决的问题进行优化。
关于如何优化的一些想法:
minpts
应该随着数据集大小的增加而变大。
eps
是一个处理您要查找的星团半径的值。要选择一个值,我们可以执行一种肘部技术(一种类似的技术,通常用于确定 K-Means 聚类中的最佳 k
)。
- 令 k = 最近邻的数量
- 对于 k 的值,对于数据集中的每个点,计算每个点与其 k 最近邻点之间的平均距离(某些软件包在某处内置了此功能)
- 在 X 轴上绘制点数,在 y 轴上绘制平均距离。
- 生成的图形应该是递增的(只要您按平均距离对数组进行递增排序)并且向上凹。应该有一个点是增长率急剧跳跃的,这个点叫做肘点,包含你的最优eps,也就是肘点的y值。
- 运行此算法使用不同的k值并比较结果。
如果有一个明确的方法来解决最优值,它会被大量记录下来。现在,我们所能做的就是给出我们最好的计算猜测。再次重申,您尝试解决的问题可能会影响您选择肘点的方式 - 了解这一点很重要。