【问题标题】:retrieve closest tree to input tree with k nearest neighbor?检索最近的树到具有 k 个最近邻居的输入树?
【发布时间】:2013-08-16 21:14:18
【问题描述】:

我想使用 K-最近邻方法从数据集中检索与输入树最近的树。树中的节点有值,但每棵树中的分支没有标签。

例如:

树 1: (S (V c) (N (P y)) (V (Vo) (N (D t) (N d)))))

树 2: (S (V (Vp) (P (R o)) (N (D t) (N d)))))

我想使用 k 近邻来解决这个问题。你有什么想法可以用这种方法解决这个问题吗?

【问题讨论】:

    标签: search data-structures machine-learning nearest-neighbor knn


    【解决方案1】:

    您必须为树木定义距离度量以应用KNN 算法。树有许多可能的度量标准,最流行的选择之一是树编辑距离 (How do I calculate tree edit distance?)

    KNN 不是一种搜索算法。它不用于查找最近的对象,而是将对象分类为预定义标签之一。它只是搜索给定点 X 的 K 个最近邻居,并返回一个包含大多数邻居的标签。

    为了找到最近的树,假设您已经定义了TED(树编辑距离),只需遍历trees 中的所有tree 并选择最小化TED(tree,X) 的那一个。

    关于树编辑距离的非常好的资源也位于此处: http://www.inf.unibz.it/dis/projects/tree-edit-distance/tree-edit-distance.php

    【讨论】:

    • 感谢您的回答。如果我使用树编辑距离,我如何(或在哪里)使用 KNN 算法?
    • 更新答案 = KNN 不是搜索算法,而是 - 监督分类模型
    • 我知道 KNN 用于分类,但我想找到一种方法来使用它来查找最近的树。
    • 但是你不能,这就像“我知道这个函数是用来计算字母'a'的数量,但我希望它画出一张快乐的脸”。 KNN 不是搜索工具。您的问题可以(并且应该)通过一个简单的 for 循环来解决。当然从理论上来说,你可以创建一个(X,X)形式的训练集(输入也是一个标签,或者(X,Xid),其中XidX的标识符),然后问一个@987654333 @ 和 K=1 作为标签,它会返回最近的树,但不要这样做,这将是高度人工、低效和怪异的......但可能。
    • 好的,谢谢。如何找到最接近的树,它就像从根到叶节点的输入树? (我有 3 棵树:树 1 和树 2 有相似的叶子,但内部节点不同。树 1 和树 3 有不同的叶子但内部节点相似。我想使用算法为树 1 选择树 3。)
    猜你喜欢
    • 2013-03-16
    • 2012-11-10
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 2015-02-03
    • 2019-12-20
    • 2011-05-09
    • 2016-09-10
    相关资源
    最近更新 更多