节点在树中的位置是特征向量?

时间:2011-06-20 15:10:19

标签: vector tree machine-learning shortest-path

背景 我有一个节点树,我正在尝试运行一些机器学习算法来对它们进行分类。我想要使​​用的一个特征是树中节点的位置,即较近的节点可能在同一类中。

我的问题 我将所有功能都表示为数字向量。关于如何将树中的位置表示为向量的任何想法?那么距离b / n两个向量对应树中节点之间的距离? (我有一棵小树,深度在5-7左右,分枝在2-3左右)

我尝试了什么 附:我读到了算法,找到2个节点之间的最短距离(找到每个节点到最近的共同祖先的距离)我发现的一个想法是有一个向量x,其中每个索引对应于树中可能的祖先。然后设置x [i] =来自该祖先的级别数。问题是 - 我不知道如何处理非祖先的节点。

2 个答案:

答案 0 :(得分:0)

只需将树的路径作为向量。然后简单地计算两条路径之间差异的长度。所以例如。 2,3,1,5,3是一条路。和2,3,3,5,9,5是另一条道路。所以2,3他们有共同之处。所以差异的长度是1,5,3和3,5,9,5,这是7.祝你好运

答案 1 :(得分:0)

因此,实际上有一种非常好的方法来获得您想要的功能;您可以使用MDS执行此操作。

MDS所做的是它采用N×N矩阵(这里N是节点数),其中条目a_ {i,j}是项目i和项目j(节点i和节点j)之间的距离,并且每个项目i将返回D(预先指定的)位置向量D_i,使得D_i和D_j之间的距离近似为a_ {i,j}。

因此,我们可以让您的特征向量进行一些预处理。首先,找到每对节点的最短距离(跳数)(您可以使用Floyd-Warshall)然后使用距离矩阵作为MDS的输入并指定您的位置向量的维数,MDS将所述维度的输出位置向量。

如果您在网上搜索,我相信您可以找到Floyd-Warshall和MDS的开源实现。