Карты Кохонена

Обсуждение научных открытий, алгоритмов и инженерных новинок
Аватара пользователя
Михаил23
adviser
adviser
Сообщения: 219
Зарегистрирован: 24 ноя 2008, 17:58
Версия LabVIEW: 2009
Откуда: Москва

Карты Кохонена

Сообщение Михаил23 »

Добрый день!
Стоит следующая задача.
Есть 79 переменных с историей 150 значений по каждой переменной(режим работы). Есть 2ве выходные переменные с историей 150 измерений(качество). Надо разбить входные выборки на кластеры что бы понять при каких режимах хорошее качество при каких плохое и т.д.
Подскажите как построить карты Кохонена например как здесь http://championship.mql4.com/2008/ru/news/384.
Для построения использую модуль http://sine.ni.com/nips/cds/view/p/lang/en/nid/210377
Используя их библиотеку задал структуру нейросети (ну например 7*7) с прямоугольной решеткой. Получил матрицу весов. Что дальше? как получить кластеры? И сделать соответствующую раскраску?
Аватара пользователя
Михаил23
adviser
adviser
Сообщения: 219
Зарегистрирован: 24 ноя 2008, 17:58
Версия LabVIEW: 2009
Откуда: Москва

Re: Карты Кохонена

Сообщение Михаил23 »

Вот vi с данными
Вложения
My_data.vi
(170.67 КБ) 354 скачивания
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5461
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 27 раз
Поблагодарили: 86 раз

Re: Карты Кохонена

Сообщение IvanLis »

Михаил23 писал(а):Есть 79 переменных с историей 150 значений по каждой переменной (режим работы). Есть 2ве выходные переменные с историей 150 измерений (качество). Надо разбить входные выборки на кластеры что бы понять при каких режимах хорошее качество при каких плохое и т.д.
Использовал для классификации НС Кохонена.
Правда было это почти 10 лет назад, после этого материал не поднимал, так что могу ошибаться.

Что написано в статьях, читать некогда. Мысли вслух, может поможет или натолкнет на путь-дорожку.

1. Обучение осуществляется без учителя, так что по идее вектор качества Вам первоначально не нужен. Он понадобится потом, что бы сопоставить каждому классу определенное значение качества.
2. При обучении сети задаются размер сетки в нейронах, это определяет количество первоначальных подклассов (потом каждому подклассу станет в соответствие один из классов/показателей качества), ну и ошибку классификации соответственно.
3. При обучении задаются предполагаемые пределы изменения классификационных признаков (переменной).
4. После обучения каждому набору входных параметров будет соответствовать свой подкласс, могут использоваться несколько вариантов сеток, передаточных функций и метрик. Но все обучение сводится к тому, что бы рассчитать весовые коэф. таким образом, чтобы... короче если каждый параметр задать случайной величиной (равномерно распределенной в диапазоне обучения), то вероятность "победы" каждого нейрона будет равна. А нейрон будет "иметь" координаты в центре масс своей области. блин... не так просто объяснить физику процесса... нужно самому на пузе проползти :wink:
5. Пространство имеет размерность, равную количеству параметров. Т.е. наглядно можно отобразить только 2-х мерное пространство (два параметра, а у Вас их 79).

А вот только после обучения ИНС, нужно каждому нейрону (подклассу) поставить в соответствие одно из двух состояний.

Писал программу на LV, может где-то и остались ее заготовки. Но это еще 7 версия и разобраться в ней будет ооочень сложно.
Наверное проще самому сделать.
Аватара пользователя
Михаил23
adviser
adviser
Сообщения: 219
Зарегистрирован: 24 ноя 2008, 17:58
Версия LabVIEW: 2009
Откуда: Москва

Re: Карты Кохонена

Сообщение Михаил23 »

1) Полностью согласен
2) Тоже понятно
3) Ясно
4) Весовые коэф расчитал, а вот что с ними делать дальше?
5) Этот пункт не ясен. Я так понимаю что карта Кохонена как раз и служит для того чтобы отображать в 2ух мерном пространстве.
Вообщем то теорию читал. Но никак не врублюсь как получить карту кластеров(как на рис).
Clusters.jpg
Clusters.jpg (14.13 КБ) 11893 просмотра
Хочу потом отобразить на ней свои параметры качества и понять какой кластер что показывает.
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5461
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 27 раз
Поблагодарили: 86 раз

Re: Карты Кохонена

Сообщение IvanLis »

Михаил23 писал(а):4) Весовые коэф расчитал, а вот что с ними делать дальше?
Весовой коэф. это значение параметра передаточной функции
После настройки весовых коэф. их перестройка как правило не требуется.
Они в дальнейшем используются для кассификации.
Михаил23 писал(а):5) Этот пункт не ясен. Я так понимаю что карта Кохонена как раз и служит для того чтобы отображать в 2ух мерном пространстве.
В принципе любой N-мерный массив можно развернуть в двумерный, смысл от этого особо не поменяется. Все равно останется, что за каждым нейроном закреплена определенная комбинация параметров.
Но для понимания...
Представь, что на твоей картинке:
X - это напряжение
Y - ток
Получается два параметра, и каждой комбинации ток/напряжение соответствует определенное состояние.

Конечным результатом, который отображает ИНС действительно является поверхность (2D), это свойство как раз используется не только для классификации, но и для свертки параметров.
Аватара пользователя
Михаил23
adviser
adviser
Сообщения: 219
Зарегистрирован: 24 ноя 2008, 17:58
Версия LabVIEW: 2009
Откуда: Москва

Re: Карты Кохонена

Сообщение Михаил23 »

IvanLis писал(а):Они в дальнейшем используются для кассификации.
Вот тут как то можно поподробнее. Не пойму как получить карты кластеров.
Правильно я понимаю что матрица весов и есть карта кластеров на рисунке в прошлом посте?
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5461
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 27 раз
Поблагодарили: 86 раз

Re: Карты Кохонена

Сообщение IvanLis »

Михаил23 писал(а):
IvanLis писал(а):Они в дальнейшем используются для кассификации.
Вот тут как то можно поподробнее. Не пойму как получить карты кластеров.
Наверняка есть методы обучения "с учителем".
Но смысл заключается в том, что вам:
1. Необходимо заранее знать, какой набор контролируемых параметров соответствует каждому состоянию (если сразу неизвестно, то можно доопределить/дообучить в процессе работы).
2.После обучения известно, какой набор входных параметров соответствует каждому нейрону.

Остается только сопоставить 1 и 2.

Это на картинке они кучно нарисованы, а на самом деле может получиться "горох".
Аватара пользователя
Михаил23
adviser
adviser
Сообщения: 219
Зарегистрирован: 24 ноя 2008, 17:58
Версия LabVIEW: 2009
Откуда: Москва

Re: Карты Кохонена

Сообщение Михаил23 »

Вот еще раз перечетав понял что мне нужна карта выходов нейронов. Это именно она на рисунке выше показывает кластеризацию.
Вот отрывок
"Выходы нейронов карты Кохонена напоминают топографическую карту. Координаты этой карты определяют положение одного нейрона. Например, координаты 12:34 описывают нейрон, находящийся на пересечении 12 столбца с 34 рядом в матрице нейронов. Величина выхода нейрона по аналогии с географическими картами трактуется как высота точки.
Карты Кохонена, также как и географические карты, можно отображать либо в двухмерном, либо в трехмерном виде. В двухмерном виде карта раскрашивается в соответствии с уровнем выхода нейрона. Для более высоких значений обычно используются светлые тона, а для низких значений — темные.
Карта выходов является главной картой в анализе карт Кохонена. Именно на нее проецируется взаимное расположение исследуемых данных. Схожие входные данные образуют на карте кластеры — замкнутые области, состоящие из нейронов с одинаковыми значениями выходов. Как правило, ярко выраженные кластеры в данных имеют четкие границы с другими областями карты. В трехмерном виде это выглядит как крутой склон холма."
Но как получить эти выходы? Прочитал Ваши статьи. Судя по ним выход нейронов надо искать по одной из активационных функций. Правильно я понял? А если да то какой вектор входных сигналов брать? можно любой из обучающей выборки или новый который не участвовал в обучении?
x ColdDeeath x
beginner
beginner
Сообщения: 14
Зарегистрирован: 12 янв 2014, 22:23
Версия LabVIEW: 1
Контактная информация:

Re: Карты Кохонена

Сообщение x ColdDeeath x »

Добрый день!
Что-то я тоже не пойму как построить карту Кохонена.
Допустим, такой теоретический пример: я обучил сеть из 3-х нейронов, где у каждого нейрона 4 весовых компонента. Получается матрица:

w1 w2 w3 w4
1. X X X X
2. X X X X
3. X X X X

1,2,3 - это номера нейронов, w1..w4 - это веса.

Как по данной матрице построить карту Кохонена? И по этой ли матрице она строится? Просто в лоб чтоли строить - в зависимости от величины w тон цвета подбирать на карте? Помогите, пожалуйста, нигде информации про это не могу найти. Не в одной книге и не на одной ресурсе не нашел.
Аватара пользователя
Михаил23
adviser
adviser
Сообщения: 219
Зарегистрирован: 24 ноя 2008, 17:58
Версия LabVIEW: 2009
Откуда: Москва

Re: Карты Кохонена

Сообщение Михаил23 »

Посмотрите ссылку.
http://neuroforex.net/index.php?option= ... &Itemid=34
Может что то прояснится.
x ColdDeeath x
beginner
beginner
Сообщения: 14
Зарегистрирован: 12 янв 2014, 22:23
Версия LabVIEW: 1
Контактная информация:

Re: Карты Кохонена

Сообщение x ColdDeeath x »

Посмотрел. Не помогло. В этой как и в других статьях пишут, что нейронные сети отражают многомерную входную структуру. Но нигде не описано, как именно строится сеть. На основании каких наборов данных строится карта? Пишут что она строится на основании выходных нейронов.
Нейроны, в свою очередь состоят из весов. Каждому нейрону соответствует свой весовой вектор. Но как строится сама карта нигде не написано((( Помогите, пожалуйста, разобраться.
Пока я понял только то, что если выходных нейронов. к пример 10, то карта будет размером 10 на 10 вне зависимости от количества входных нейронов.
А как эти 10*10 значений = 100 формируются и наносятся на карту нигде не написано. Может быть каждое из 10 значений - это сумма компонентов векторов каждого нейрона, я не знаю и пытаюсь разобраться.
x ColdDeeath x
beginner
beginner
Сообщения: 14
Зарегистрирован: 12 янв 2014, 22:23
Версия LabVIEW: 1
Контактная информация:

Re: Карты Кохонена

Сообщение x ColdDeeath x »

Михаил, у меня такие же проблемы, как были и у Вас:
4) Весовые коэф расчитал, а вот что с ними делать дальше?
5) Этот пункт не ясен. Я так понимаю что карта Кохонена как раз и служит для того чтобы отображать в 2ух мерном пространстве.
Вообщем то теорию читал. Но никак не врублюсь как получить карту кластеров(как на рис).

Но как получить эти выходы? Прочитал Ваши статьи. Судя по ним выход нейронов надо искать по одной из активационных функций. Правильно я понял? А если да то какой вектор входных сигналов брать? можно любой из обучающей выборки или новый который не участвовал в обучении?
Аватара пользователя
Михаил23
adviser
adviser
Сообщения: 219
Зарегистрирован: 24 ноя 2008, 17:58
Версия LabVIEW: 2009
Откуда: Москва

Re: Карты Кохонена

Сообщение Михаил23 »

Да судя по сообщению у вас каша в голове.
Вот почитайте еще тут http://www.basegroup.ru/library/analysi ... /som_mine/
Вообще карты можно использовать для разных задач. Например для прогнозирования, восстановления пропущенных данных, кластеризации. Поэтому вопрос в том что вы хотите получить в итоге от карты.
А вообще как писалось в сылке в моем посте выше. Обученную сеть можно раскрасить по разному.
Например у вас 6 входов и карта 2*2 тогда вы можете получить:
1) 6 карт в которых каждый нейрон(всего 4 нейрона) будет раскрашен в зависимости от величины соответствующей координаты вектора веса нейрона ( у каждого вектора 6 координат)
2) Выходную карту(2*2) которая будет раскрашена во величине выхода нейрона ( вот тут написано как считать выход http://www.aiportal.ru/articles/neural- ... honen.html)

Вот еще книга http://www.ict.edu.ru/ft/003892///index.html
Последний раз редактировалось Михаил23 14 янв 2014, 16:46, всего редактировалось 3 раза.
x ColdDeeath x
beginner
beginner
Сообщения: 14
Зарегистрирован: 12 янв 2014, 22:23
Версия LabVIEW: 1
Контактная информация:

Re: Карты Кохонена

Сообщение x ColdDeeath x »

прочитал, всеравно не могу понять. Кстати, а какого размера карту мы получим, если у нас 5 входов?
Расскажу свое понятие карт Кохонена:
1) Задаем количество входных нейронов (например, если у нас классификация изображений, то число нейронов будет равно размеру изображения = ширина*высота, допустим 5*5 = 25).
2) Задаем количество выходных нейронов - это количество равно количеству классов (кластеров), допустим, 3.
3) Инициализируем матрицу весов случайными значениями, например от 0.0 до 1.0. Получается, что мы проинициализируем 3 вектора, в каждом из которых по 5 компонент:
1. 0.0232 0.3435 0.3432 0.2664 0.9445
2. 0.7343 0.6724 0.2565 0.7673 0.1232
3. 0.1244 0.8733 0.3643 0.4354 0.2242
4) Произведем обучение на M примерах (процесс обучения не будем описывать), все 3 вектора 3 нейронов у нас изменятся:
1. w00 w01 w02 w03 w04
2. w10 w11 w12 w13 w14
3. w20 w21 w22 w23 w24

Теперь, после обучения имеем 3 обученных нейрона = количеству кластеров, соответственно с векторами весов. Как теперь строить карту Кохонена? Если я не так понимаю процесс, укажите, пожалуйста, что не правильно?
Аватара пользователя
Михаил23
adviser
adviser
Сообщения: 219
Зарегистрирован: 24 ноя 2008, 17:58
Версия LabVIEW: 2009
Откуда: Москва

Re: Карты Кохонена

Сообщение Михаил23 »

Вообщем понимание верное. Только в 3) ошибка.
3) "Инициализируем матрицу весов случайными значениями, например от 0.0 до 1.0. Получается, что мы проинициализируем 3 вектора, в каждом из которых по 5 компонент:"
Не 5 а 25 компонент. Инициализируем матрицу весов, только в каждой строке 25 значений.
Затем если я Вас правильно понял вы хотите раскрасить ваше изображение (из 25 точек) в зависимости от принадлежности к классу(например тремя цветами).
Если так то надо:
Для каждого входного нейрона (их 25) находим значение выходного нейрона (их 3) (как считать давал ссылку выше). Для этого как раз и используется полученная весовая матрица. Дальше находим максимальный из полученных трех выходов. Номер максимального выхода и будет номером класса. И раскрашиваем точку изображения в цвет класса.
Ответить

Вернуться в «Наука»