Добрый день всем.
Я пишу программу, моделирующую обучение карты Кохонена. Алгоритм обучения этой карты несколько модифицирован по сравнению с хрестоматийным, поэтому готовые уже пакеты, в частности, Deductor и Statistica Neural Networks, для этой задачи, похоже, не подходят.
Столкнулся со следующей ситуацией. Необходимо разбить данные на заданное количество кластеров (в моей ситуации 2). Однако количество нейронов в решетке карты обычно больше, чем требуемое количество кластеров. Необходимо разделить полученные после самообучения карты ячейки-нейроны на 2 группы , т. е. раскрасить карту в 2 цвета.
После изучения главы о самоорганизующихся картах "Нейронных сетей" Хайкина, беглого знакомства с "Анализом финансовых данных с помощью самоорганизующихся карт" Кохонена и Дебока, "Self-organizing maps" Кохонена, а также после продолжительного гугления я нашел только очень смутные упоминания об алгоритме с использованием U-матриц. Поизучав реализацию раскраски карт Кохонена в Deductor, я пришел к выводу, что алгоритм раскраски выглядит примерно так:
1. Для каждого нейрона обученной карты: вычисляем расстояние до каждого соседа и усредняем.
2. Берем первый нейрон карты и записываем его в первый кластер.
3. Берем следующий, соседний нейрон и сравниваем его усредненное расстояние до соседей с некоторым пороговым значением. Если расстояние выше порога, значит, этот нейрон стоит "особняком" и начиная с него нужно завести новый кластер.
4. Продолжаем алгоритм, переходя от соседа к соседу, пока не назначим кластер каждому нейрону.
Правильно ли я понял алгоритм? Существует ли четкое описание алгоритма / алгоритмов раскраски и где его можно узнать?