2011-06-20 50 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的開源實現。