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

 

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

Всех с праздником и наилучших благ . Мне на праздики досталось дежурство по работе . Поэтому отдохнуть мордой в салате не судьба. В свете обстоятельств непреодолимой силы буду развлекаться согласно этим обстоятельствам, так что если что, сильно не пинайте.

В кратце, что такое карты Кохонена, и для чего их готовить написано здесь http://www.basegroup.ru/library/analysis/clusterization/som/. Желающим на мыло вышлю книгу ( просьба не забывать указывать мыло). Пока мне удалось написать свою реализацию по мотивам статьи, которая разбирает цветовую палитру по косточкам.

Основная проблема в алгоритме раскраски карты Кохонена. Дело в том, что на практике строится такое кол-во карт, какую размерность имеет описывающий обьект вектор, и кажая карта красится согласно (тяжести значения на свой оси измерения, как @ понимаю, а правильно сказать не могу). Согласитесь, что рассматривать и сопоставлять между собой 15-20 карт как то не айс. Посему необходимо красить обьекты принадлежащие к одному кластеру в один цвет, на одной карте .

Пример. Опишем цвет как обьект рамерности 3 RRGGBB. Теперь классифицируем обьекты при помощи карты см рисунок. Здесь с раскраской все просто, каждому нейрону назначается цвет из палитры цветов, в сущности Кохонену остается только сгруппировать эти нейроны. Данный алгоритм можно было бы применить, если вектор описатель имеет размерность 3. Нормируем все входные векторы к диапазону 0 – 255, и назначаем каждому цвет из палитры цветов. А вот как раскрасить вектор который имеет размерность отличную от 3. Для мну это последний вопрос, для окончания проекта Кохонен. Далее будет интересней и применительно к нашим баранам - классификация рынка. Со своей стороны обещаю выложить коды. Первый релиз здесь https://www.mql5.com/ru/forum/5101/page5

 

Вычислить номер цвета по трем компонентам.

r=0 g=0 b=0 - 0

r=1 g=0 b=0 - 1

r=1 g=1 b=0 - 2

r=1 g=1 b=1 - 3

r=2 g=1 b=0 - 4

Привести к диапазону от 0 до 1.

Аналогично можно представить, что цвет состоит из любого количества компонентов, допустим из 4-ех:

с1=0 с2=0 с3=0 с4=0 - 0

с1=1 с2=0 с3=0 с4=0 - 1

с1=1 с2=1 с3=0 с4=0 - 2

с1=1 с2=1 с3=1 с4=0 - 3

с1=1 с2=1 с3=1 с4=1 - 4

с1=2 с2=1 с3=1 с4=1 - 5

Также привести к диапазону от 0 до 1.

Есть еще вариант, существует алгоритм преобразования RGB в HLS и обратно. При преобразования в HLS получаем номер оттенка, яркость, насыщенность. Может быть на основе алгоритма преобразования RGB в HLS придумать алгоритм преобразования любого количества компонентов в HLS (или может быть на выходе будет количество показателей соответствующее количество компонентов "цвета", не помню наизусть этот алгоритм). Таким образом преобразовывать "цвет" состоящий из любого количества компонентов в RGB (по номеру оттенка).

Вобщем есть о чем подумать в новогоднюю ночь.

 

ivandurak:

Далее будет интересней и применительно к нашим баранам - классификация рынка.

вы бы с этого и начали. А разбор цвета и порблему отображения пусть каждый решит для себя сам.

так как дело не в цвете, а в том, что сами карты могут дать.

 
А не хотите вместо 4-х компонентного цвета использовать
3-х компонентый + координата "глубина"?

Т.е. на выходе будет либо набор картинок, либо 3-D рисунок
с облаками цвета в зависимости от интенсивности.
Его можно спроецировать на плоскость, кстати.
 
Вопрос: а косоугольный базис- можно использовать
для отображения N-мерных пространств?

Там только вращалку надо, наверно...
 
А если в многомерном пространстве имеются кластеры-
их можно произвольно (по какой-то метрике)
привязывать к обычной плоскости?

Пример метрики- максимальный радиус, объём,
кол-во измерений в кластере.
 
Визуализацию Роршаха?
 
Пока в голову только одна идея приходит .Измеряем среднее расстояние в N метрике между нейроном и его соседями по карте . Цвет ему назначаем соответвственно этому расстоянию из палитры цветов. Получается, что в темные цвета будут окрашены области в которых нейроны наиболее близки друг к другу ( т.е. более высокая их концентрация), что вроде как позволит визуализировать кластеры.
 

если надо сделать 4 размерности, то 256*3/4=192

Практически это значит отщипление у каждого цвета R,G,B по 64 значения. Т.е. R 192-255, G 192-255 и B 192-255 уходят под четвёртую размерность. Чисто визуально это область светлых тонов. Самое главное что это визуально наглядно, а поделить можно и многими другими способами. Для 5ти и более размерностей соответственно на большее число диапазонов делить. В предельном варианте 256 размерностей

 
m/b
Файлы:
 

Боковой тренд. Тренд вверх. Тренд вниз.

Сразу оговорюсь, что я уже не тот наивный юноша со взором горящим, чтобы не понимать. Размерность пространства определений тренда стремится к числу трейдеров, если не превышает его, о чем свидетельствуют форумы. Из вышесказанного можно сделать нижеследующий вывод. Дать определения тренда можно только в рамках описания ( математической модели), это очередная попытка поставить точки хотя бы над некоторыми еб. Прийти к единому правильному определению тредна невозможно, но можно попытаться разделить рынок на тренды ( лично я предпочитаю называть это состояниями) в рамках принятого описания(модели) . Собственно ради этого и расчехлил свой бубен. К примеру опишем рынок приращением цены за 10 периодов . Имеем вектор описания 10 размерности .

(open(1)-open(2))/open(1) ;(open(1)-open(3))/open1;...(open(1)-open(10))/open(1) ;

Прогоним это по истроии и отдадим Кохонену на растерзание см рис . Где вообщем то выделяются области ( надеюсь они об чем то говорят), визуализация конечно не черту. Это простейший пример. Описание рынка ограничено только фантазией, от гламурных машек до анализа ФА и новостной ленты . Кохоненну должно быть пофик, должен сжевать все и в самых разнообразных комбинациях.

То Avals

Не могли бы вы написать свой алгоритм раскраски на конкретном примере. А то думал, много курил торможу даже на горке .

На всякий случай выложу коды .Написано все на Mql5 .Это рабочий вариант возможны ошибки и неточности в коментах.

Файлы:
Причина обращения: