背景我有一棵节点树,我试图运行一些机器学习算法来对它们进行分类。我想使用的特性之一是树中节点的位置,即更接近的节点可能在同一个类中。
我的问题,,我把所有的特性表示为数字的向量。对于如何将树中的位置表示为向量,有什么想法吗?那么距离b/n两个向量对应于树中节点之间的距离吗?(我有一棵深在5-7左右,分枝在2-3左右的小树)
我尝试了 P.S。我读过关于在两个节点之间寻找最短距离的算法(找到每个节点与它们最接近的共同祖先的距离),我发现的一个想法是有一个向量x,其中每个索引对应于树中可能的祖先。然后设置xi =来自该祖先的级别数。问题是-我不知道如何处理那些不是祖先的节点。
发布于 2011-06-20 22:39:51
只要把树的路径作为向量。然后简单地计算这两条路径之间的差的长度。举个例子。2,3,1,5,3是一条道路。2,3,3,5,9,5是另一条路。所以他们有共同之处。所以差的长度是1,5,3,3,5,9,5,7,祝你好运
发布于 2011-07-31 23:01:21
因此,实际上有一种非常好的方法来派生您想要的特性;您可以使用MDS来实现这一点。
MDS所做的是取N乘N个矩阵(这里N是节点数),其中条目a_{i,j}是条目i与项j之间的距离(节点i和节点j),对于每个项目i,它将返回D(预先指定的)位置向量D_i,使得D_i和D_j之间的距离近似为a_{i,j}。
因此,我们可以对你的特征向量进行一些预处理.首先,为每一对节点(可以使用弗洛伊德-沃尔)查找最短距离(以跳数表示),然后使用距离矩阵作为位置向量的输入,并为您的位置向量指定维数,并输出所述维的位置向量。
如果你在网上搜索,我相信你可以找到开源的实现,弗洛伊德-沃尔和MDS。
https://stackoverflow.com/questions/6413381
复制相似问题