Вход
Регистрация

Алгоритм раскраски карт Кохонена

Добрый день всем.

Я пишу программу, моделирующую обучение карты Кохонена. Алгоритм обучения этой карты несколько модифицирован по сравнению с хрестоматийным, поэтому готовые уже пакеты, в частности, Deductor и Statistica Neural Networks, для этой задачи, похоже, не подходят.

Столкнулся со следующей ситуацией. Необходимо разбить данные на заданное количество кластеров (в моей ситуации 2). Однако количество нейронов в решетке карты обычно больше, чем требуемое количество кластеров. Необходимо разделить полученные после самообучения карты ячейки-нейроны на 2 группы , т. е. раскрасить карту в 2 цвета.

После изучения главы о самоорганизующихся картах "Нейронных сетей" Хайкина, беглого знакомства с "Анализом финансовых данных с помощью самоорганизующихся карт" Кохонена и Дебока, "Self-organizing maps" Кохонена, а также после продолжительного гугления я нашел только очень смутные упоминания об алгоритме с использованием U-матриц. Поизучав реализацию раскраски карт Кохонена в Deductor, я пришел к выводу, что алгоритм раскраски выглядит примерно так:

1. Для каждого нейрона обученной карты: вычисляем расстояние до каждого соседа и усредняем.

2. Берем первый нейрон карты и записываем его в первый кластер.

3. Берем следующий, соседний нейрон и сравниваем его усредненное расстояние до соседей с некоторым пороговым значением. Если расстояние выше порога, значит, этот нейрон стоит "особняком" и начиная с него нужно завести новый кластер.

4. Продолжаем алгоритм, переходя от соседа к соседу, пока не назначим кластер каждому нейрону.

Правильно ли я понял алгоритм? Существует ли четкое описание алгоритма / алгоритмов раскраски и где его можно узнать?