![]() |
|
![]() ![]() ![]() |
|
Kaz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 30.3.2007 Репутация: нет Всего: нет |
Доброго времени суток.
Может кто вдруг знает какие-то методы для проецирования многомерного вектора на двумерную плоскость. Есть программа, которая производит классификацию образов геометрическими методами (k ближайших соседей и тд). Каждый образ представлен точкой в многомерном пространстве. Для программы нужна "картинка", чтобы было чего показать. В общем, чтобы расстояние между двумя точками в 2D соответствовало расстоянию между этими точками в многомерном пространстве Подскажите хотя бы где можно копнуть на этот счет (гугл не предлагать). Ну и желательно, чтобы этот метод можно было легко перевести в код. спасибо |
|||
|
||||
dereyly |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 217 Регистрация: 16.6.2006 Репутация: 1 Всего: 4 |
Можно использовать как вы уже писали метод к-средних...
Так же по данную проблему можно решать с помощью SOM, т.е. карты Кохонены данный метод несколько лучше, но дольше работает. Существует несколько разновидностьей SOM, интересным можно считать иерархический SOM, но на практике я его не тестировал, но идея прикольная... Еще есть нейрогаз как способ кластеризации данных, хотя на мой взгляд на практике применять этот метод не стоит, хотя некоторые проблемы SOM и к-средних он восполняет. Если вы работаете с растровыми изображениеми то перед тем как отправить их в кластеризатор нужно выделить признаки этого изображения.... |
|||
|
||||
Kaz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 30.3.2007 Репутация: нет Всего: нет |
Хм, как мне спроецировать многомерный вектор путем применения метода кластеризации образов, а строить карту Кохонена только лишь для проецирования на двумерную плоскость...
Может я не так выразился, но у меня уже все посчитано своими методами классификации, мне всего лишь нужно как-то отобразить это в двумерной плоскости. Есть вариант - просто взять полученные расстояния и отобразить их. Но расстояния - это одно число и получится проекция на одномерную плоскость, т.е. на прямую, что нифига не наглядно. Можно путем тупого перебора минимизировать признаковое пространство до 2х признаков и уже их с чистой совестью малевать на декартовой системе координат. Но это ужасно с точки зрения времени вычисления. |
|||
|
||||
maxdiver |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
dereyly |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 217 Регистрация: 16.6.2006 Репутация: 1 Всего: 4 |
Все таки к-среднеие являются более общим алгоритмом факторного анализа и плоскость на которую проецирукется пространство входов выбирается оптимально.
Только я непонимаю в чем проблема применения Кохонена или к-средних.... в простейшим случае вам просто надо подать ваши значения и получить на выходе 2х мерный вектор. Если хотите вы мне можете выслать на почту набор данных, я могу их прогнать где-то 4мя способами... |
|||
|
||||
Kaz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 30.3.2007 Репутация: нет Всего: нет |
честно говоря, не очень понимаю как метод кластеризации может мне помочь спроецировать многомерный вектор на двумерное пространство :( |
|||
|
||||
dereyly |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 217 Регистрация: 16.6.2006 Репутация: 1 Всего: 4 |
Вы просто не очень точно ставите задачу "есть данные -- нужно их отобразить в 2Д пространстве". Ряд методов которые я перечислил перебирают множество входов в многомерном пространстве и строят устойчивые точки которые соотвсетсвуют скоплениям данных, эти точки соотвествующие разреженности или сгущениям данных далее отображаются в 2Д пространстве (1Д или 3Д). По которым можно судить о какой то топалогии многомерного пространства.
Если вы используете какрты Кохонена то элементы не только пытаются занять оптимальное положение в пространств, но и действуют в рамках своих структурных ограничений... Вот что-то нашел про применение SOM для отображения топологии многомерных данных |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |