Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проецирование многомерного вектора на 2D, подскажите метод 
:(
    Опции темы
Kaz
Дата 26.4.2009, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 30.3.2007

Репутация: нет
Всего: нет



Доброго времени суток.

Может кто вдруг знает какие-то методы для проецирования многомерного вектора на двумерную плоскость.

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

Каждый образ представлен точкой в многомерном пространстве.

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

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


спасибо
PM MAIL   Вверх
dereyly
Дата 26.4.2009, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 16.6.2006

Репутация: 1
Всего: 4



Можно использовать как вы уже писали метод к-средних...
Так же по данную проблему можно решать с помощью  SOM, т.е. карты Кохонены данный метод несколько лучше, но дольше работает. Существует несколько разновидностьей SOM, интересным можно считать иерархический SOM, но на практике я его не тестировал, но идея прикольная...
Еще есть нейрогаз как способ кластеризации данных, хотя на мой взгляд на практике применять этот метод не стоит, хотя некоторые проблемы SOM и к-средних он восполняет.

Если вы работаете с растровыми изображениеми то перед тем как отправить их в кластеризатор нужно выделить признаки этого изображения....
PM MAIL   Вверх
Kaz
Дата 26.4.2009, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 30.3.2007

Репутация: нет
Всего: нет



Хм, как мне спроецировать многомерный вектор путем применения метода кластеризации образов, а строить карту Кохонена только лишь для проецирования на двумерную плоскость...


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

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

Можно путем тупого перебора минимизировать признаковое пространство до 2х признаков и уже их с чистой совестью малевать на декартовой системе координат. Но это ужасно с точки зрения времени вычисления.
PM MAIL   Вверх
maxdiver
Дата 27.4.2009, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 29.1.2008
Где: Саратов

Репутация: 16
Всего: 18



Ну в общем случае спроецировать всю картинку на двумерную плоскость с сохранением расстояний просто невозможно. Уже с кубом из трёхмерного пространства не получится такое сотворить.

Если же считается, что ответ есть (а чтобы он был, надо, чтобы все точки лежали в одной плоскости), то нам надо сначала получить эту плоскость (взяв любые три точки из A, B, C из набора, не лежащие на одной прямой), а потом уже каждую точку P набора проецировать в эту плоскость, для чего, например, можно считать скалярные произведения вектора AP на AB и AC, в результате мы спроецируемся в аффинную плоскость (с осями AB и AC), а чтобы перейти к "нормальной" декартовой, надо в декартовую плоскость уложить треугольник ABC (A в начало координат, C удобно на ось oX, а точку B каким-нибудь образом, чтобы расстояния AB, AC, BC сохранились как и в многомерном пространстве), ну а теперь уже ответ очевиден:
x = |AC| * scalar_mult (AC, AP) + |AB| * cos(alpha) * scalar_mult (AB, AP),
y = |AB| * sin(alpha) * scalar_mult (AB, AP)
здесь scalar_mult я обозначил те скалярные произведения, которые мы считали в многомерном пространстве, alpha - угол при вершине A в треугольнике.

Это сообщение отредактировал(а) maxdiver - 27.4.2009, 09:12
PM MAIL WWW ICQ   Вверх
dereyly
Дата 27.4.2009, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 16.6.2006

Репутация: 1
Всего: 4



Все таки к-среднеие являются более общим алгоритмом факторного анализа и плоскость на которую проецирукется пространство входов выбирается оптимально.

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

PM MAIL   Вверх
Kaz
Дата 27.4.2009, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 30.3.2007

Репутация: нет
Всего: нет



Цитата(dereyly @ 27.4.2009,  13:17)
Все таки к-среднеие являются более общим алгоритмом факторного анализа и плоскость на которую проецирукется пространство входов выбирается оптимально.

честно говоря, не очень понимаю как метод кластеризации может мне помочь спроецировать многомерный вектор на двумерное пространство :(
PM MAIL   Вверх
dereyly
Дата 27.4.2009, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 16.6.2006

Репутация: 1
Всего: 4



Вы просто не очень точно ставите задачу "есть данные -- нужно их отобразить в 2Д пространстве". Ряд методов которые я перечислил перебирают множество входов в многомерном пространстве и строят устойчивые точки которые соотвсетсвуют скоплениям данных, эти точки соотвествующие разреженности или сгущениям данных далее отображаются в 2Д пространстве (1Д или 3Д). По которым можно судить о какой то топалогии многомерного пространства. 
Если вы используете какрты Кохонена то элементы не только пытаются занять оптимальное положение в пространств, но и действуют в рамках своих структурных ограничений...
Вот что-то нашел про применение SOM для отображения топологии многомерных данных
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0740 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.