【问题标题】:DBSCAN Input explainationDBSCAN 输入说明
【发布时间】:2014-11-22 06:03:18
【问题描述】:

DBSCAN 算法究竟将什么作为输入?

为什么我在weka 和编码算法中有不同的输出?

在编码算法中,它只需要 2 个输入,而在 weka 中可能需要 3 个。

有人可以帮我理解算法吗?

【问题讨论】:

    标签: cluster-analysis data-mining dbscan


    【解决方案1】:

    “2 个输入”是指两个变量(维度)吗?

    如果您的代码仅适用于二维,请阅读距离函数。大多数距离函数可以很容易地计算超过二维的......例如,欧几里得距离被定义为

    sqrt(pow(x_i-y_i, 2).sum())
    

    当您将 i 从 1 循环到 n > 2 时,效果也很好。

    DBSCAN有2个明显参数和1个隐藏参数:minPts和epsilon是明显参数,隐藏参数是距离函数。哪个对结果的影响最大,需要数据理解才能选择。不幸的是,没有经验法则来选择这个参数。这真的取决于你的数据。

    如果您在 Weka 实现中得到不同的结果,我并不感到惊讶。它包含隐式数据规范化,往往会产生意想不到的结果...... DBSCAN 的最佳实现可以在 ELKI 恕我直言。如果启用数据索引,速度真的很快。

    【讨论】:

    • 感谢您的回复。还有一件事:我应该把欧几里得距离公式放在代码的哪一部分?它在我的 regionQuery() 函数中吗?
    【解决方案2】:

    Wikipedia 中很好地描述了该算法。配置输入为:

    • eps:epsilon 邻域的最大距离。
    • minPts:形成一个区域所需的点数。

    简而言之:如果数据点周围的 epsilon 邻域至少包含 minPts,则会创建一个新集群。进一步输入:

    • 数据集(显然)
    • (也许)一个距离函数,如果算法允许在这方面进行参数化

    【讨论】:

    • 我的意思是我有 3 个变量作为我的输入。在编码的 DBSCAN 算法中,它只需要 2 作为输入。我该怎么办?
    • 如果不知道这些参数是什么(名称、类型、文档等),就无法回答这个问题。
    • 好吧,我有课程、兴趣(一组兴趣)和俱乐部。我正在尝试将俱乐部会员的兴趣与他们的俱乐部相关联
    • 如果你有源代码,尝试与维基百科文章中给出的伪代码进行比较。这样,您应该能够对变量的含义进行逆向工程。
    猜你喜欢
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多