2011-06-20 49 views
2

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

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

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

回答

0

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

+0

谢谢,尽管我正在为节点的位置寻找一个固定长度的向量,所以我可以通过直接做x1-x2来获得像两个节点/向量x1和x2之间的距离,但我想这太希望了为:| – Lavanya

+0

哪里有遗嘱,哪里有办法。 –

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的开源实现。