2011-05-02 42 views
1

E.g.人們可能想說「鯨魚」是動物的「孩子」,但「鯨魚」更像「海豚」而不是「狗」。 「鯨魚」,「海豚」,「狗」在這種情況下都是動物的孩子,但「鯨魚」和「海豚」顯然有關係。樹中的兄弟姐妹之間的親密程度如何表示?

我不想簡單地定義更多的子類(例如「海洋動物」,「陸地動物」)上面的例子只是爲了說明......假設我們不能「定義」我們的出路問題。

是否只是簡單地定義一個加權的部分 - 無環圖,知道該圖的某個子集真的是一棵樹(不一定是跨越)?

編輯:一些人要求更多的澄清。我會用同樣的例子,但可能進入更詳細

說我們有以下幾類:

Animals, Place, Object. 
    The following sub categories: [land animals, sea animals], [country, state], 
[heavy object, light object] 
    And we have the following entries: Whale, Dolphin, Dog, Cat, Hawaii, Japan, 
London, Stone, Rock, Leaf, Car. 

    I have an isLike(entry x) function that I can call on any of the entries. 

    for example say whale.isLike(dolphin) = 0.7, whale.isLike(dog) = 0.2 and 
a table like the following one stores all the values for the isLike() function 

      Whale dolphin dog cat hawaii japan london stone 
    whale 1  0.7  0.2 0.2 0.01 0.01 0.01 0.008 
    dolphin 0.7 1  0.2 0.2 0.01 0.01 0.01 0.008 
    dog  etc 
    cat  etc 
    hawaii etc 
    japan etc 
    london etc 
    stone etc 

什麼是代表這個數據的最佳方式?

我最關注的是如何保持分層信息(樹)以及在isLike()(加權圖)關係的信息

所以只是詢問是否做標準就是用定向圖(對於樹)+加權無向圖(對於關係)類型的結構?這是標準還是有更標準的方法?

+0

我不清楚你到底想表達什麼,爲什麼。有無數的方法來比較動物。一些關係可以用數字表示(如游泳速度),其他可以用圖表表示更好。你的輸入數據是什麼?另外,你最終想達到什麼目的? – Rotsor 2011-05-02 03:07:20

回答

1

您可能想要使用加權的無向邊來表示圖中的接近度。然而,目前還不清楚你在這裏試圖完成什麼。根據您要完成的內容,您可能需要將關係與分類層次結構分開。

+0

邁克爾我編輯了這個問題,以提供更清晰的...你現在怎麼想?..謝謝! – algorithmicCoder 2011-05-02 06:37:27

1

有各種方法可以定義樹中節點之間的距離。您可以使用父母,兄弟姐妹,叔叔等。要了解更多信息,請查看Red-Black Trees

您對定義的規定沒有意義。我們可以定義距離的唯一方法是向樹添加一些結構信息,以便我們知道如何排列節點。這就是「子類」在層次關係中所做的事情。鏈接基本上只是「邊緣」,與任何tree can be transformed into a graph一樣。

如果你的節點只是標籤,那麼它們就是數據的nominal pieces。您無法計算任何比率或間隔,因此任何距離度量都必須等於來自所需節點的鏈接數量。

如果樹中的節點與數據結構(例如動物)相對應,那麼我們可以假設每個結構都具有共享屬性。 (例如:眼睛顏色,體重,身高,isFurry等)這些屬性可能具有間隔或比例尺度的域和範圍,在這種情況下,我們可以計算一個有意義的距離。爲了表示物體之間的距離,你可以意識到你真正在做的是定義一組變量(x =眼睛顏色,y =重量,z =身高,isFurry = q)的座標空間。所以每個單獨的節點實際上是由該組公共屬性定義的座標空間中的矢量。因此,您可以計算歐幾里德距離,Mahabolis距離,曼哈頓距離,餘弦相似度或任何其他您想要的距離度量。

+0

定義意味着不使用相似性度量,而是將事物分組在一起更多...我所說的有意義... – algorithmicCoder 2011-05-02 03:35:43

+0

但是爲了使用相似性度量,我們必須有一種比較相似性的方法。分組創建定義相似性度量時我們利用的關聯和結構。你分組的方式隱含地創造了距離。 – 2011-05-02 03:46:45

0

我認爲你要做的是hierarchical clustering,你有什麼叫做距離矩陣。

+0

這似乎更適用於人們試圖在數據中查找模式的情況,而不是在已知道模式的地方,而只是試圖表示它。 – algorithmicCoder 2011-05-02 05:05:59

+0

您已經擁有的是矩陣。如果你對它滿意,矩陣就是答案。但我雖然想要一些樹狀結構,但你還沒有那種結構。分層聚類及其生成的樹結構(簡單分組的元素)就是這樣。 – sawa 2011-05-03 06:02:41

+1

基於對問題所做的編輯以及提供的示例(確實定義了距離矩陣),這聽起來像這裏所發生的一樣。我不確定他是否瞭解他的目標。如果您事先知道分層關係,那麼您已經有了距離,並且可以存儲每個節點與其他節點之間的鏈接。所以是的,你把所有東西都存儲在一張圖中。如果您想使用該信息對新節點進行分類,則可以使用K-最近鄰居。如果你不知道層次關係,你可以用HAC發現它們。 – 2011-05-05 18:38:14