我已经看到许多DBSCAN算法使用公式实现,以基于群集(k)内的给定最小点来估计邻域半径(Eps)。
[完整代码] http://toolz.googlecode.com/svn/trunk/CWT/dbscan.py
% Analytical calculation of rad if not given
function [Eps] = epsilon(x,k)
[m,n] = size(x);
Eps = ((prod(max(x)-min(x))*k*gamma(.5*n+1))/(m*sqrt(pi.^n))).^(1/n);
我已经进行了广泛的搜索,以了解这个分析公式是如何得出的但是没有成功。
答案 0 :(得分:1)
它是否带有科学参考,或者这只是某人自己编造的东西?
公式看起来像volume formula of n-balls。
所以它可能基于 if 数据均匀分布在立方体上,并且所有边具有相同长度的想法,这个 L 2 -sphere 应该有这个点数,而不考虑边界效应。
但是,如果您的数据看起来像这样,则无需运行群集。这些假设很多太强大,无法在实际应用中理解。
特别是,如果你在文献中找不到证据或解释。
我也建议不要使用此代码。他的“OPTICS”实现是什么,但是OPTICS algorithm ......那里有更好,更合适的实现。为了获得最佳效果,您还需要索引支持。
答案 1 :(得分:0)
OPTICS论文
中描述了次优半径的估计寻找分析数据中的自然模式。 2.追踪本地 密度与光学
如本文所述,有一些假设可以使这种配方有用。
总而言之,引用该文章,可以将数据集对象的密度与在数据集相同的体积中均匀分布的相同数量的对象的密度进行比较。如果数据集具有均匀分布,则邻域半径 eps ,包含 k 点< / strong>可以估计。