【发布时间】:2014-11-22 06:03:18
【问题描述】:
DBSCAN 算法究竟将什么作为输入?
为什么我在weka 和编码算法中有不同的输出?
在编码算法中,它只需要 2 个输入,而在 weka 中可能需要 3 个。
有人可以帮我理解算法吗?
【问题讨论】:
标签: cluster-analysis data-mining dbscan
DBSCAN 算法究竟将什么作为输入?
为什么我在weka 和编码算法中有不同的输出?
在编码算法中,它只需要 2 个输入,而在 weka 中可能需要 3 个。
有人可以帮我理解算法吗?
【问题讨论】:
标签: cluster-analysis data-mining dbscan
“2 个输入”是指两个变量(维度)吗?
如果您的代码仅适用于二维,请阅读距离函数。大多数距离函数可以很容易地计算超过二维的......例如,欧几里得距离被定义为
sqrt(pow(x_i-y_i, 2).sum())
当您将 i 从 1 循环到 n > 2 时,效果也很好。
DBSCAN有2个明显参数和1个隐藏参数:minPts和epsilon是明显参数,隐藏参数是距离函数。哪个对结果的影响最大,需要数据理解才能选择。不幸的是,没有经验法则来选择这个参数。这真的取决于你的数据。
如果您在 Weka 实现中得到不同的结果,我并不感到惊讶。它包含隐式数据规范化,往往会产生意想不到的结果...... DBSCAN 的最佳实现可以在 ELKI 恕我直言。如果启用数据索引,速度真的很快。
【讨论】:
Wikipedia 中很好地描述了该算法。配置输入为:
eps:epsilon 邻域的最大距离。minPts:形成一个区域所需的点数。简而言之:如果数据点周围的 epsilon 邻域至少包含 minPts,则会创建一个新集群。进一步输入:
【讨论】: