Подходит ли kd-дерево для данных 4D пространства-времени (x, y, z, время)?

Я хочу использовать структуру данных для сортировки пространственно-временных данных (x, y, z, time).

В настоящее время алгоритм обработки ищет набор четырехмерных (x, y, z, время) точек с учетом сферического (3d) пространственного радиуса и линейного (1d) временного радиуса, отмечая для каждой точки, какие другие точки находятся в пределах этих радиусов. Причина в том, что после обработки я могу запросить у любой 4D-точки всех ее соседей за время O(1).

Однако в некоторых распространенных конфигурациях пространственного и временного радиусов первый запуск алгоритма занимает около 12 часов. Хотите верьте, хотите нет, но это на самом деле быстро по сравнению с тем, что существует в нашей отрасли. Тем не менее, я хочу помочь ускорить начальные прогоны, поэтому я хочу знать: Является ли kd- дерево подходит для 4D пространственно-временных данных?

Обратите внимание, что я не ищу реализации поиска ближайших соседей или поиска k ближайших соседей.

Дополнительная информация:

Примерный набор данных содержит 450 000 4D-точек.

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

Время представлено датами в стиле Excel с типичным диапазоном от 30 000 до 39 000 (приблизительно). Пространственные диапазоны иногда представляют собой более высокие значения, иногда более низкие значения, но диапазон между каждой пространственной координатой подобен времени (например, maxX-minX ~ maxT-minT).

Еще больше информации:

Я подумал, что добавлю еще немного нерелевантных данных на случай, если кто-то имел дело с подобным набором данных.

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

Временной интервал этих наборов данных колеблется от 5 до 20 лет данных.

Для действительно старых данных (старше 8 лет) события часто были очень плотными в пространстве по двум причинам: 1) в то время было относительно мало доступных датчиков, и 2) датчики располагались близко друг к другу, чтобы близлежащие события могли быть правильно зафиксированы. подтверждается с низкой ошибкой. Дальнейшие события можно было записать, но они имели слишком большую погрешность

Для более новых данных (‹8 лет) события часто очень плотные по времени по обратным причинам: 1) обычно доступно много датчиков и 2) датчики размещаются через равные промежутки времени на большем расстоянии.

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

Заключение

Я явно должен задавать больше вопросов на этом сайте.

В ближайшее время я буду тестировать несколько решений, которые будут включать в себя 4d-kd-дерево, 3d-kd-дерево с последующей проверкой временного расстояния (предложено Дрю Холлом) и текущий алгоритм, который у меня есть. Кроме того, мне предложили другую структуру данных, называемую деревом TSP (временное разделение пространства), которое использует октодерево для пространства и bsp на каждом узле для времени, поэтому я также могу протестировать это.

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

Спасибо всем


person Community    schedule 25.04.2009    source источник


Ответы (4)


Чтобы немного расширить мои комментарии к ответу выше:

Согласно литературе, для kd-деревьев требуются данные с евклидовыми координатами. Они, вероятно, не являются строго необходимыми, но их, безусловно, достаточно: гарантия того, что все координаты являются евклидовыми, гарантирует применение нормальных пространственных правил и позволяет легко разделить точки по их местоположению и построить древовидную структуру.

Время немного странное. По правилам специальной теории относительности вы используете метрику Минковского, а не стандартную евклидову метрику, когда работаете с временными координатами. Это вызывает всевозможные проблемы (наиболее серьезные из них разрушают смысл «одновременности») и обычно заставляет людей бояться временных координат. Однако этот страх необоснован, потому что, если вы знаете, что работаете над физикой, ваша временная координата почти наверняка будет на практике евклидовой.

Что означает, что координата является евклидовой? Она должна быть независима от всех остальных координат. Сказать, что время является евклидовой координатой, означает, что вы можете ответить на вопрос: «Эти две точки близки друг к другу во времени?» просматривая только их временные координаты и игнорируя любую дополнительную информацию. Легко понять, почему отсутствие этого свойства может нарушить схему, разделяющую точки по значениям их координат; если две точки могут иметь радикально разные временные координаты, но все же считаться «близкими во времени», то дерево, которое сортирует их по временным координатам, не будет работать очень хорошо.

Примером евклидовой временной координаты может быть любое время, указанное в одном согласованном часовом поясе (например, время UTC). Если у вас есть двое часов, одни в Нью-Йорке и одни в Токио, вы знаете, что если у вас есть два измерения с пометкой «12:00 UTC», то они были сделаны в одно и то же время. Но если измерения производятся по местному времени, то есть один говорит «12:00 по нью-йоркскому времени», а другой — «12:00 по токийскому времени», вам придется использовать дополнительную информацию о местоположении и часовых поясах городов, чтобы выяснить сколько времени прошло между двумя измерениями.

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

person kquinn    schedule 25.04.2009

Если бы вы сохранили индекс для ваших точек, отсортированных по временному измерению, не могли бы вы сначала выполнить первоначальную обрезку в одномерном временном измерении, сократив таким образом количество вычислений расстояния? (Или это упрощение?)

person Mitch Wheat    schedule 25.04.2009
comment
Собственно, так алгоритм работает в настоящее время. Данные сортируются во временном измерении, поэтому мы можем выполнять обрезку при обходе во временном порядке. Тем не менее, данные иногда бывают плотными во времени, что приводит к большему количеству вычислений расстояния, чем нам хотелось бы:/ - person ; 25.04.2009
comment
Правильно ли я заключаю, что искомое гипертело представляет собой не гиперсферу, а гиперцилиндр (с 3d-сферическими колпачками на каждом конце)? - person Svante; 25.04.2009
comment
Я не знаю, честно. Смотрите мои обновления для описания данных, надеюсь, это поможет. - person ; 25.04.2009

Вы действительно не дали достаточно информации, чтобы ответить на этот вопрос.

Но, конечно, в целом kd-деревья идеально подходят для 4-х (или 5-ти, или 6-ти, или...) размерных данных --- если пространственное (или, в вашем случае, пространственное/временное) распределение поддается декомпозиции kd-дерева . Другими словами, это зависит (звучит знакомо?).

kd-деревья — это всего лишь один из методов пространственной декомпозиции, который подходит для определенных локализованных поисков. По мере того, как вы переходите к более высоким измерениям, проблема проклятия размерности, конечно, поднимает голову, но 4d не так уж и плох (хотя вы, вероятно, хотите, по крайней мере, несколько сотен точек).

Чтобы узнать, сработает ли это для вас, вы должны проанализировать некоторые другие критерии. Достаточно ли хорош приблизительный поиск NN (это может очень помочь). Балансировка дерева может быть дорогой? и Т. Д.

person simon    schedule 25.04.2009
comment
Это набор данных, который со временем растет. В настоящее время один из наборов данных содержит 450 000 4D-точек, поэтому я подозреваю, что проклятие для этих наборов данных незначительно. Вопрос kd-дерева относится к тому, кто говорит, что вы не можете смешивать евклидовы и неевклидовы координаты, используя евклидово расстояние. Честно говоря, я не знаю, считается ли время в данном случае евклидовым или нет. - person ; 25.04.2009
comment
Предположительно, вы используете евклидову метрику, а не метрику Минковского (если вам нужно спросить, это евклидова). Евклидово означает, что ваша формула расстояния выглядит так: d ^ 2 = deltax ^ 2 + deltay ^ 2 + deltaz ^ 2 + deltat ^ 2. Метрика Минковского изменила бы знак у deltat^2. - person kquinn; 25.04.2009
comment
Я не использую никакую метрику, которая включает время в настоящее время, потому что я обрабатываю время отдельно от пространства. Время используется для ограничения поиска, потому что 4d точки находятся во временном порядке. Затем я делаю стандартное евклидово расстояние, как вы написали (но без deltat ^ 2). - person ; 25.04.2009
comment
Таким образом, вы не делаете ничего особенного или странного с координатой времени. Это означает, что он должен нормально работать как часть дерева kd. - person kquinn; 25.04.2009
comment
Могу ли я тогда спросить, что сделало бы время евклидовым или неевклидовым? То есть, почему я могу использовать kd-дерево со временем и четырехмерную евклидову метрику расстояния? Я имею в виду, что нет, я не делаю ничего странного, как теория относительности со временем (смеется, слава богу), но почему большая часть литературы по kd-деревьям так конкретно относится к предложению о том же пространстве? например, какое четвертое измерение не работало бы с kd-деревом, если бы первые три были евклидовым пространством? - person ; 25.04.2009
comment
Если время — евклидова координата, то это означает, что оно на самом деле не особенное. Это просто еще одно измерение ваших данных, ортогональное другим. Это означает, что применяются все обычные правила. Именно тогда, когда время не является настоящей независимой координатой, все начинает запутываться, и обычные правила и допущения выходят за рамки (например, в метриках Минковского концепция одновременности совершенно другая! ). Игра одной координаты по разным правилам делает разбиение жестким. - person kquinn; 25.04.2009
comment
Итак, если я вас правильно понял, вы говорите, что если бы временная координата зависела от одной или нескольких из трех других пространственных координат, она не была бы евклидовой? - person ; 25.04.2009
comment
Да, хорошее резюме. Важным битом является функция расстояния; когда вы считаете две точки близкими по времени? Если вам нужно только посмотреть на координату времени, чтобы ответить на этот вопрос, время — это евклидова координата. Если, скажем, вы записали местное время для датчиков, разбросанных по всей Земле, это было бы неевклидовым (и ненормальным), поскольку полдень в Нью-Йорке и полдень в Токио не одно и то же, и вы должны учитывать расположение городов, чтобы извлечь полезную временную координату. - person kquinn; 25.04.2009
comment
Вы должны опубликовать сводку этой информации в качестве ответа, чтобы я мог ее выбрать, в основном это именно то, что я искал. Я читал о том, что концепция пространства-времени неевклидова, что меня беспокоило, но теперь я понимаю, что неевклидово пространство-время, о котором я читал, касается только вопросов теории относительности (например, время зависит от скорости) и случая, который вы только что упомянули с часовыми поясами. - person ; 25.04.2009
comment
здесь есть несколько хороших моментов, рад, что мой комментарий может вызвать его, даже если бы я не мог быть здесь для обсуждения .... - person simon; 25.04.2009

Если ваши данные относительно плотны во времени (и относительно разрежены в пространстве), лучше всего использовать трехмерное kd-дерево для пространственных измерений, а затем просто отклонить точки, которые находятся за пределами интересующего временного окна. Это позволит обойти вашу смешанную проблему метрики пространства/времени за счет немного более сложной точечной структуры.

person Drew Hall    schedule 25.04.2009
comment
Вероятно, я также протестирую этот вариант. Было бы замечательно узнать, что быстрый поиск в kd-дереве с последующей проверкой расстояния по времени в 1d был быстрее, чем текущая реализация, которая в настоящее время является обратной: оптимизированный поиск по времени с последующей дорогостоящей проверкой расстояния в 3d (хотя я также проведите обрезку коробки перед проверкой расстояния). - person ; 25.04.2009