Как представлена ​​близость между братьями и сестрами в дереве? - PullRequest
1 голос
/ 02 мая 2011

Например, можно сказать, что «кит» - это «дитя» животного, но «кит» больше похож на «дельфина», чем на «собаку».«кит», «дельфин», «собака» - все дети животных в этом случае, но «кит» и «дельфин» явно связаны.

Я НЕ заинтересован в простом определении большего количества подклассов (например "морские животные", "наземные животные") приведенный выше пример только для иллюстрации ... предположим, что мы не можем "определить" наш выход из проблемы.

Можно ли просто определить взвешенноечастично-ациклический граф с осознанием того, что некоторое подмножество этого графа действительно является деревом (не обязательно охватывающим)?

РЕДАКТИРОВАТЬ: Ряд людей попросили дополнительных разъяснений.Я буду использовать тот же пример, но, вероятно, более подробно

Скажем, у нас есть следующие категории:

    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 () (взвешенный график)

, поэтому просто спрашиваю, является ли стандартная вещь, которую нужно сделать, это использовать ориентированный граф(для дерева) + взвешенный неориентированный граф (для отношений) тип структуры?Это стандарт или есть более стандартный способ?

Ответы [ 3 ]

1 голос
/ 02 мая 2011

Есть все виды способов определения расстояния между узлами в дереве. Вы можете использовать родителей, братьев и сестер, дядей и т. Д. Чтобы узнать больше, посмотрите Красно-черные деревья .

Ваше определение не имеет смысла. Единственный способ определить расстояние - добавить некоторую структурную информацию к дереву, чтобы мы знали, как расположить узлы. Вот что делают «подклассы» в иерархических отношениях. Ссылки по сути являются просто «ребрами», так как любое дерево может быть преобразовано в граф .

Если ваши узлы - это просто метки, то они являются номинальными частями данных. Вы не можете рассчитать любые отношения или интервалы, поэтому любая метрика расстояния должна быть равна количеству ссылок с нужного узла.

Если ваши узлы в дереве соответствуют структурам данных (например, Animals), то мы можем предположить, что каждая из этих структур имеет общие атрибуты. (например: цвет глаз, вес, рост, isFurry и т. д.) Эти атрибуты могут иметь домен и диапазон в интервалах или масштабах, в этом случае мы можем вычислить значимое расстояние.

Чтобы представить здесь расстояние между объектами, вы можете понять, что на самом деле вы определяете координатное пространство для набора переменных (x = цвет глаз, y = вес, z = рост, isFurry = q). Таким образом, каждый отдельный узел на самом деле является вектором в координатном пространстве, определяемом набором общих атрибутов. Следовательно, вы можете вычислить евклидово расстояние, расстояние Махаболиса, расстояние Манхэттена, сходство косинусов или любую другую метрику расстояния, которую вы хотите.

1 голос
/ 02 мая 2011

Возможно, вы захотите использовать взвешенное, ненаправленное ребро для представления близости на графике. Не ясно, однако, что вы пытаетесь достичь здесь. В зависимости от того, чего вы пытаетесь достичь, вы можете отделить отношения от иерархии классификации.

0 голосов
/ 02 мая 2011

Я думаю, что вы пытаетесь сделать иерархическую кластеризацию , и то, что у вас есть, называется матрицей расстояний.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...