提问人:Chris Coffee 提问时间:10/1/2023 最后编辑:desertnautChris Coffee 更新时间:10/21/2023 访问量:39
minPts=1时调整DBSCAN的弯头方法
Elbow method for tuning DBSCAN when minPts=1
问:
肘部法要求设置,但是当你做什么时?在这种情况下,肘部方法是否仍然可用,如果是,您如何确定?k=MinPts
MinPts=1
k
我尝试了肘部方法,结果所有距离都等于零。k=1
答:
1赞
Michael Hahsler
10/2/2023
#1
对于 dbscan 的弯头方法,您可以设置 k/minPts,这将帮助您为 eps 选择一个好的值。最初的DBSCAN论文建议将minPts设置为数据的维数加1或更高。因此,MinPts < 3 通常没有多大意义。
这是来自 R 包中 dbscan() 的手册页。但这与任何其他实现类似:dbscan
DBSCAN参数设置
参数 和 相互依赖,并且 更改一个通常也需要更改另一个。 原始 DBSCAN 论文建议首先将 数据的维数加 1 或更高。 定义核心点周围的最小密度(即最小值 非噪声区域的密度)。增加要隐含的参数 数据中的噪声更多,需要更多的点来形成集群。 给定固定值的合适邻域大小参数 通过使用 ( 包括点本身,而 k 最近邻距离,可以直观地找到 没有)。k 最近邻距离图对所有数据进行排序 点按其 k 最近邻距离。突然增加 kNN 距离(膝盖)表示指向右侧 很可能是异常值。选择DBSCAN的膝盖 是。
minPts
eps
minPts
minPts
eps
minPts
kNNdistplot()
k = minPts - 1
minPts
eps
评论
0赞
Chris Coffee
10/4/2023
感谢您的参考。如果数据的维度不可用,您会建议怎么做?在 Python 中,Scikit-Learn 的 DBSCAN 实现允许预先计算的距离矩阵,在这种情况下,基础数据的维度可能是未知的。也就是说,除非有某种方法可以从距离矩阵回到维数,但这是一个完全不同的问题。
1赞
Michael Hahsler
10/5/2023
一种选择是通过应用 MDS 来估计数据的内在维度,并查看需要多少个维度。然后,您可以在 MDS 空间上使用 k 最近邻距离图来找到良好的 eps。另一种选择是尝试使用 minPrs 和 eps,直到找到有用的聚类。
评论