2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.



Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Самоорганизующиеся карты Кохонен
Сообщение05.02.2011, 14:34 
Аватара пользователя


27/10/10
80
Помогите разобраться с расчетом весов в картах кохонена:
Допустим, есть поле 5x5
1
2
3
4
5
12345
И есть последовательность: 5,3,0
По какому принцыпу я должен заполнить поле?
Мои рассуждения:
1.Заполняем карту случайными величинами.
от 0 до 0.5
Получаем (например)
1 0.2|0.0|0.1|0.1|0.0
2 0.0|0.2|0.5|0.2|0.3
3 0.3|0.0|0.2|0.3|0.1
4 0.5|0.2|0.1|0.5|0.4
5 0.1|0.1|0.5|0.2|0.3
1 2 3 4 5
Сейчас, в теории, надо рассчитать расстояние от каждого нейрона до каждого соседнего. Как считать понятно. Теорему пифагора знаем.
Затруднение вызывает тот факт что при подобном подходе
центров кластеров получается несколько и какой надо корректировать?

 Профиль  
                  
 
 Re: Самоорганизующиеся карты Кохонен
Сообщение05.02.2011, 21:25 
Заслуженный участник


08/09/07
841
b099ard в сообщении #409311 писал(а):
Затруднение вызывает тот факт что при подобном подходе центров кластеров получается несколько и какой надо корректировать?
Центр у кластера один. Изменять надо тот, который ближайший к вектору.
А вообще, изложите подробнее, в формулах. Что за поле? Что за последовательность? Что за случайные величины?

 Профиль  
                  
 
 Re: Самоорганизующиеся карты Кохонен
Сообщение05.02.2011, 23:51 
Аватара пользователя


27/10/10
80
Поле - SOM подразумевает использование упорядоченной структуры нейронов. Обычно используются одно и двумерные сетки. При этом каждый нейрон представляет собой n-мерный вектор-столбец , где n определяется размерностью исходного пространства (размерностью входных векторов).
При этом количество нейронов в сетке определяет степень детализации результата работы алгоритма, и в конечном счете от этого зависит точность обобщающей способности карты.

последовательность - Данные для обработки, получены экспериментальным путем. (Брали книжку, роняли напол, смотрели страницу на которой она открылась)

случайные величины - см. последовательность

> Центр у кластера один.
Каким образом происходит выявление этого центра?

 Профиль  
                  
 
 Re: Самоорганизующиеся карты Кохонен
Сообщение06.02.2011, 00:14 
Заслуженный участник


08/09/07
841
Из последовательности (векторов) случайным образом выбирается вектор, затем рассчитывается расстояние от этого вектора до каждого из центров кластеров. Определяется ближайший центр и его координаты настраиваются по правилу Кохонена. Затем, предъявляете следующий вектор и т.д.

 Профиль  
                  
 
 Re: Самоорганизующиеся карты Кохонен
Сообщение06.02.2011, 01:11 
Аватара пользователя


27/10/10
80
Alexey1 в сообщении #409500 писал(а):
Из последовательности (векторов) случайным образом выбирается вектор,

Допустим 5 (первый вектор)
Alexey1 в сообщении #409500 писал(а):
затем рассчитывается расстояние от этого вектора до каждого из центров кластеров.

1 0.2|0.0|0.1|0.1|0.0
2 0.0|0.2|0.5|0.2|0.3
3 0.3|0.0|0.2|0.3|0.1
4 0.5|0.2|0.1|0.5|0.4
5 0.1|0.1|0.5|0.2|0.3
1 2 3 4 5
При первом проходе сохраняем значение в первый попавшыйся нейрон?

 Профиль  
                  
 
 Re: Самоорганизующиеся карты Кохонен
Сообщение06.02.2011, 03:24 
Заслуженный участник


08/09/07
841
b099ard в сообщении #409512 писал(а):
При первом проходе сохраняем значение в первый попавшыйся нейрон?
Не понял вопроса. Пусть у Вас даны 10 значений (последовательность) 1,2,...,10 и 2 кластера с начальными центрами 1,4. Выбираете случайным образом одно значение и это 10. Ближайшим центром является 4. Теперь настраиваете центр этого кластера (4) по правилу Кохонена. Центр другого кластера не изменяется.

 Профиль  
                  
 
 Re: Самоорганизующиеся карты Кохонен
Сообщение06.02.2011, 19:19 
Аватара пользователя


27/10/10
80
Alexey1 в сообщении #409533 писал(а):
b099ard в сообщении #409512 писал(а):
При первом проходе сохраняем значение в первый попавшыйся нейрон?
Не понял вопроса. Пусть у Вас даны 10 значений (последовательность) 1,2,...,10 и 2 кластера с начальными центрами 1,4.

(1,1) и (1,4) правильно?

Alexey1 в сообщении #409533 писал(а):
Выбираете случайным образом одно значение и это 10. Ближайшим центром является 4. Теперь настраиваете центр этого кластера (4) по правилу Кохонена. Центр другого кластера не изменяется.

Кажется дошло.

 Профиль  
                  
 
 Re: Самоорганизующиеся карты Кохонен
Сообщение06.02.2011, 19:26 
Заслуженный участник


08/09/07
841
b099ard в сообщении #409810 писал(а):
(1,1) и (1,4) правильно?
Нет, не правильно. Последовательность имеет размерность 1, значит и центры кластеров должны иметь размерность 1.

 Профиль  
                  
 
 Re: Самоорганизующиеся карты Кохонен
Сообщение06.02.2011, 20:42 
Аватара пользователя


27/10/10
80
Alexey1 в сообщении #409818 писал(а):
b099ard в сообщении #409810 писал(а):
(1,1) и (1,4) правильно?
Нет, не правильно. Последовательность имеет размерность 1, значит и центры кластеров должны иметь размерность 1.

Вовсе нет.

b099ard в сообщении #409493 писал(а):
Поле - SOM подразумевает использование упорядоченной структуры нейронов. Обычно используются одно и двумерные сетки. При этом каждый нейрон представляет собой n-мерный вектор-столбец , где n определяется размерностью исходного пространства (размерностью входных векторов).

В моем случае размерность входных векторов - 1. А используем - двумерную сетку. Кластеров - два. Значит центров тоже два. Для описания центра кластера в двумерном пространстве необходимо две координаты: X и Y.
Поэтому центры будут (1,1) и (1,4) они (центры) выбираются случайным образом?

 Профиль  
                  
 
 Re: Самоорганизующиеся карты Кохонен
Сообщение06.02.2011, 21:01 
Заслуженный участник


08/09/07
841
Вы путаете классический алгоритм Кохонена и карты Кохонена. Первый это алгоритм кластеризации данных и никаких карт для его реализации не надо. Второй это алгоритм кластеризации и визуализации многомерных данных. Если размерность 1, то чего там визуализировать? Также Вы путаете центры которые на карте с центрами в исходном, признаковом пространстве. Это разные вещи.
Если у Вас размерность данных 1, то никаких карт Вам не надо. Используйте обычный алгоритм Кохонена. Или тогда объясните, что Вы хотите получить?

 Профиль  
                  
 
 Re: Самоорганизующиеся карты Кохонен
Сообщение06.02.2011, 21:53 
Аватара пользователя


27/10/10
80
Alexey1 в сообщении #409865 писал(а):
Вы путаете классический алгоритм Кохонена и карты Кохонена.

Их что два?
Alexey1 в сообщении #409865 писал(а):
Первый это алгоритм кластеризации данных и никаких карт для его реализации не надо. Второй это алгоритм кластеризации и визуализации многомерных данных.

Что-то не заметил особой разницы в формулировках:
Первый - это алгоритм кластеризации, второй - алгоритм кластеризации и визуализации. Результат в обоих случаях - карта. Вот она мне и нужна.

Alexey1 в сообщении #409865 писал(а):
Если размерность 1, то чего там визуализировать?

Ну допустим мне период надо найти, хотя бы очень приближенно.

Alexey1 в сообщении #409865 писал(а):
Также Вы путаете центры которые на карте с центрами в исходном, признаковом пространстве. Это разные вещи.

По Вашим объяснениям я понял что число кластеров дано как условие. Добавлю немного ясности - число кластеров не дано изначально, они должны получится сами.
Вот пример, который я нашел:
http://mechanoid.narod.ru/nns/kohonen/index.html
Alexey1 в сообщении #409865 писал(а):
Если у Вас размерность данных 1, то никаких карт Вам не надо.

Больше нет идей.
Alexey1 в сообщении #409865 писал(а):
Используйте обычный алгоритм Кохонена.

До сего момента я считал что алгоритм один, поэтому мне надо время, чтобы это обдумать.

 Профиль  
                  
 
 Re: Самоорганизующиеся карты Кохонен
Сообщение06.02.2011, 22:18 
Заслуженный участник


08/09/07
841
Нет, алгоритма два. Также существуют их модификации. В той статье которую Вы привели, описывается карта Кохонена.
Есть две задачи:
1. Кластеризовать данные,
2. Кластеризовать и визуализировать данные.
Сами понимаете, решение второй задачи уже подразумевает решение первой задачи. Результатом решения первой задачи являются просто центры кластеров, не карта.
Также, при работе обычного алгоритма Кохонена может возникнуть ситуация, когда центры некоторых кластеров будут сильно удалены от векторов последовательности, и значит их координаты не будут меняться. Чтобы этого не было, алгоритм изменяют следующим образом. Так как удалённый центр является соседом какого-нибудь другого центра, то при настройке надо сделать так, чтобы и центр-победитель и его соседи изменялись в направлении случайно выбранного вектора. Тогда эти удалённые векторы "подтягиваются" к данным последовательности и начинают "выигрывать" некоторые векторы.
Посмотрите подробнее здесь.

 Профиль  
                  
 
 Re: Самоорганизующиеся карты Кохонен
Сообщение13.02.2011, 12:53 
Аватара пользователя


27/10/10
80
Alexey1 в сообщении #409911 писал(а):
Есть две задачи:
1. Кластеризовать данные,
2. Кластеризовать и визуализировать данные.
Сами понимаете, решение второй задачи уже подразумевает решение первой задачи. Результатом решения первой задачи являются просто центры кластеров, не карта.

Нашел отличный пример решения здесь:
http://www.aforgenet.com/framework/samples/neuro_som.html
Сейчас адаптирую под свои нужды, проблема в том что в примере исходное пространство двухмерное и результат тоже двухмерный, а у меня исходное пространство 6-ти мерное ( одно пространство время) как его проецировать на двух мерное?

 Профиль  
                  
 
 Re: Самоорганизующиеся карты Кохонен
Сообщение14.02.2011, 00:28 
Заслуженный участник


26/07/09
1559
Алматы
2b099ard
Цитата:
как его проецировать на двух мерное?

Дык, карты Кохонена для этого и нужны. :) Просто в вашем случае, данные, связанные с "нейронами", будут шестимерными векторами... Двумерность карты используется для описания отношения соседства для самих нейронов (ну и для простоты визуализации).

 Профиль  
                  
 
 Re: Самоорганизующиеся карты Кохонен
Сообщение14.02.2011, 09:59 
Аватара пользователя


27/10/10
80
Circiter в сообщении #412733 писал(а):
2b099ard
Цитата:
как его проецировать на двух мерное?

Дык, карты Кохонена для этого и нужны. :) Просто в вашем случае, данные, связанные с "нейронами", будут шестимерными векторами... Двумерность карты используется для описания отношения соседства для самих нейронов (ну и для простоты визуализации).


А как обычно преобразуют шестимерный вектор в двумерный?
Или мне самому надо подобрать или придумать некую функцию чтобы вес рассчитывать?

Например вот код из примера выше:

public double Run( double[] input )
{
double error = 0.0;

// compute the network
network.Compute( input );
int winner = network.GetWinner( );

// get layer of the network
Layer layer = network[0];

// check learning radius
if ( learningRadius == 0 )
{
Neuron neuron = layer[winner];

// update weight of the winner only
for ( int i = 0, n = neuron.InputsCount; i < n; i++ )
{
neuron[i] += ( input[i] - neuron[i] ) * learningRate;
}
}
else
{
// winner's X and Y
int wx = winner % width;
int wy = winner / width;

// walk through all neurons of the layer
for ( int j = 0, m = layer.NeuronsCount; j < m; j++ )
{
Neuron neuron = layer[j];

int dx = ( j % width ) - wx;
int dy = ( j / width ) - wy;

// update factor ( Gaussian based )
double factor = Math.Exp( - (double) ( dx * dx + dy * dy ) / squaredRadius2 );

// update weight of the neuron
for ( int i = 0, n = neuron.InputsCount; i < n; i++ )
{
// calculate the error
double e = ( input[i] - neuron[i] ) * factor;
error += Math.Abs( e );
// update weight
neuron[i] += e * learningRate; //
!!!
}


}
}
return error;
}

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

Здесь вес расчитывают по Гаусу, а мне как считать? :?:

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group