|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
Привет. Лет 5 назад Илья поднял хорошую тему Тяпничный Кохонен. Я решил поднять. Я также решил расширить scope и включить сюда все языки разработки. Вобщем SOM и Кохонен. Пример как может выглядеть SOM в виде картинки Модератор: Удалено по просьбе ТС Еще вариант представления SOM от MathLab. Видимо здесь надо смотреть не на цвет а на полигоны типа Вороного. Вопросы от меня. 1) Что может делать самоорганизующаяся карта кохонена (Self-organizing map — SOM) ? В данном случае меня интересуют не картинки а именно выводы или заключения? Пример с Ирисами Фишера мне понятен. Это визуальная классификация. Но мне нужно нечто большее. Например критерий близости. Тоесть я хотел-бы глядя на SOM иметь утверждения что вектор V1 ближе к вектору V2 например чем вектор V3. Или это невозможно? 2) Какой complexity у алгоритма обучения? Что будет если у треть миллиона учебных векторов размерностью порядка 50. Код: sql 1. 2. 3. 4.
Как долго я буду тренировать SOM для достижения результата? Хватит ли у меня ресурсов? Обязательно ли обучать по эпохам? Могу-ли я прервать и рестартонуть обучение если вижу что есть какой-то недостаток у начального расклада? Например центры близких по принзакам кластеров родились в дальних углах карты? 3) Какое количество кластеров максимально возможно? 4) Как сильно влияет начальный расклад (рандомные веса) на получаемый мной результат? Могу ли я искусственно внести центры кластеризации если я заранее знаю или я заранее хочу получить притяжение векторов к известным мне центрам? 5) Раскраска . Что брать в качестве цвета если у меня - порядка 40 центров кластеров? Я предполагал взять формулу HSV и по цветовому тону (Hue) который меряется в 360 градусов поделить его на 40 и просто получить 360 / 40 = 9 градусов и по каждому углу использовать его цветовой тон. Насколько это будет удобно? Может цвета будут такие близкие что неразличимы? И надо будет брать какую-то штриховку. 6) Связность соседних ячеек. Насколько важно делать хексагональные? Насколько я понял из статей это важно для упрощения расчета ближних соседей. А если соседи дальние? 7) Библиотеки визуализации прямогуольных и гексагональных плиток. Я находил разные примеры. Причем интересно что на JavaScript больше всего. Думаю что это тренд нашего времени - делать инфографику на JS. Чтож. Я не против. Если вы - JS-кодер и знаете такую либу - прошу подсказать. Вы сэкономите мне много времени. 8) Оптимизации . Нужны ли мне всегда double расчеты? Что паралеллится в потоках? Что SIMD-ится? Приветсвуется. - ваши алгоритмы и реализации в сорцах (бинари не надо!) - примеры практического использования SOM вами Не приветсвуются - коробочные решения и готовые продукты. Мне их обсуждать не интересно т.к. не о чем говорить. Я хотел-бы говорить об алгоритмах. В крайнем случае я готов принять их просто как пример доказательства наличия какого-либо свойства у SOM. Линки по теме Их тыщи. Я давать не буду. Полезных мало. Как и в ГА во всех статьях просто описываются общие рекоменадции. Но нет ничего конкретного. По всей видимости я буду искать литературу. Может Саймон Хайкин об этоп писал? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2020, 11:19 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
mayton, во-первых, зачем запихивать в пост закачку с десяток метров? Теперь, за глубокой давностью чтения всего такого я только для затравки обозначу ИМХО по пунктам. 1) Используется для класификации чего-либо. Вот что можно с еёпомощью понастроить, для того и используется. Метрика (близость векторов) какая подходит для задачи и какая для визуализации. 6) М.б. это визуальная близость наподобие нашего "по радиусу", сосед моего соседа и т.д. 5) На уровне средней интенсивности, цветовой охват (локус) самый широкий. 10град угол в целом читается,когда их немного как на сотовой картинке. Если вперемежку, возможны пограничные цветовые иллюзии,например с оппозитными цветами. Если интенсивность повышать или понижать, локус сжтягивается в точку. Понятно. Ночью все кошки серы. 4) Заранее можно. Остальное моё оценочное: На сравнении с кластерным анализом и градиентными спусками. В любом случае ищется локальный минимум на пересечённой местности. Пока крутой спуск катимся быстро. И от нужной точности зависит тоже. Вообще важно предусмотреть, чтобы поправки к весам не вводили систему в осцилирование. П.С. Вспоминаю, как у нас показывали на различении 5-10 стационарных кроликов, нарисованных на экране. Сетка приближалась десятками минут. На ПК АТ. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2020, 14:51 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
exp98 mayton, во-первых, зачем запихивать в пост закачку с десяток метров? Где там десяток метров? Ну не знаю. Что у вас там. DSL-модем чтоли? Теперь, за глубокой давностью чтения всего такого я только для затравки обозначу ИМХО по пунктам. 1) Используется для класификации чего-либо. Вот что можно с еёпомощью понастроить, для того и используется. Метрика (близость векторов) какая подходит для задачи и какая для визуализации. 6) М.б. это визуальная близость наподобие нашего "по радиусу", сосед моего соседа и т.д. Ну это сходу понятно. Классификация. Енот-полоскун из семейства енотовых. Допустим у меня уже эта карта есть. Что еще кроме? Могу я сказать что енот ближе к собаке чем росомаха? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2020, 17:49 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
exp98 5) На уровне средней интенсивности, цветовой охват (локус) самый широкий. 10град угол в целом читается,когда их немного как на сотовой картинке. Если вперемежку, возможны пограничные цветовые иллюзии,например с оппозитными цветами. Если интенсивность повышать или понижать, локус сжтягивается в точку. Понятно. Ночью все кошки серы. Что это за термин такой локус ? Вроде как в математике я не слышал. Локальный максимум? Да еще идея появилась. Кроме Hue, есть еще Saturation. Еще одно измерение. И если грамотно его использовать у нас просто станет меньше системных цветов. Зато появятся более бледные (дизайнерские цвета). И тогда плавный переход между двумя классами в SOM может быть обозначен как гашение контраста. И тогда можно делить 360 на 20 + еще 360 на 20 где saturation = 50% к примеру. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2020, 17:57 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
exp98 Вообще важно предусмотреть, чтобы поправки к весам не вводили систему в осцилирование. Дада. Хороший вопрос. Как подобрать такой набор коэффициентов. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2020, 18:35 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
Пишу оффлайн. Даже краткий просмотр кажный раз производит закачку, к-рую остановить проще всего разрывом связи. Локус - термин "цветопространственный". А вот как раз в той книжечке Джадд, Вышецки ... "Плоская территория" (или её граница) цветового охвата зрением ли, спектрофотометром ли ... Обычно на плоскости, где составляющая интенсивности==0. Форма зависит от системы цветовых координат. Ни одна точка не спроецируется вне локуса. Для РГБ - тот самый треугольник, перпендикулярный оси интенсивности. Для человечьего зрения форма "полуовала", по краю к-рого "чистые" цвета отвечают нанометрам ~390-720. S - это ползанье по оси интенсивностей. Имеем 3--хмерное яйцо. Чем выше, тем ярче, но и тем уже, горизонтальный срез яйца, локус. Аналогично вниз по оси. Самые насыщенные оттенки на уровне серой точки. Про эффекты среднего арифметического для неконтрастной системы координат я недавно писал. aftarДада. Хороший вопросс. Как подобрать ...Х-ха! ИМХО это самое главное в модели, вот они, обратные распространения ошибок ... Вроде за это отвечает твоя программа, модифицирующая веса так, чтобы уменьшить суммарную неоптимальность. Целился в левый глаз, попал в правый, надо подкрутить прицел - общий принцип таков. Без тензорных)) формул наверное никак. Например пытаться обеспечить сходимость. В частном случае, последовательность сжимающих отображений сходится к единственной точке. Пусть кто плотно этим занимался скажут. aftarМогу я сказать что енот ближе к собаке чем россомаха?Глядя на векторы весов? Ах, вот для чего нужна близость векторов ... Так, тихо! На картинке соты - что это, кластеры невронов сетки? Нужнен показометр карты сетки? Вообще-то я уже не помню, будут ли для Кохонена они разнесены пространственно как у Хопфилда? Наверное это кластеры, классифицирующие объекты? Наши кролики были оттдельно сидящими невронами. Ну а для весов положено АПИ. Показать 2-3 связи объектов на плоскости нетрудно. Что делать для Dim=N? Ссвязи близости образуют типично не планарный граф. Их не всегда можно Архимедово расположить на плоскости, чтобы можно было линейкой измерить расстояние и сравнить. Ага! теперь вопрос близости начинаю понимать о чём)) Ответ: теоретически можно, но надо придумывать в зависимости от задачи. Универсальная манхэттенская метрика будет лишь грубым приближением для этого. И показометр может не отражать близость правильно. Т.е. я не уверен, что цветными кляксами можно наглядно показать близость всех со всеми. На графе кластеров если, да по графской метрике ... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2020, 20:40 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
exp98 Пишу оффлайн. Даже краткий просмотр кажный раз производит закачку, к-рую остановить проще всего разрывом связи. Да. Я попрошу модератора удалить толстую .gif картинку с моего первого поста которая приводит к проблемам у некоторых пользователей. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2020, 22:34 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
exp98 Глядя на векторы весов? Ах, вот для чего нужна близость векторов ... Так, тихо! На картинке соты - что это, кластеры невронов сетки? Нужнен показометр карты сетки? Вообще-то я уже не помню, будут ли для Кохонена они разнесены пространственно как у Хопфилда? Дада. Хороший вопрос. Я почитаю насчет Хопфилда. Тоже не хватает знаний. Насколько я помню Хопфилд - тоже учится без учителя и сводит векторы к ограниченному набору классов. Вроде как - близко к SOM. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 10:45 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
Давайте - более приближенный к реальности пример. Это то над чем я рассеянно думаю. Социальная сеть sql.ru имеет профили мемберов. Они характерны распределением постов по подфорумам. К примеру ваш покорный слуга постит в C++/Prog/Java примерно в равной пропорции. Мехматовец и Усов - чисто Программинг. Мой вечный консультант по математике дружище exp98 - имеет профиль на 50% программирование + еще несущественный сет прочих интересов которые я поскипал. Вот теперь вопрос. Я искусственно расставил центры кластеров Prog/FoxPro/C++/Java по углам. Мне было так удобно. Теперь. Можно - ли переставлять местами плитки в процессе обучения для достижения той самой "близости" например по Пифагорову расстоянию между векторами? Тоесть предполагаем что те координаты измерений которые не были указаны - равны вещестенному нулю. В классическом Сом-е насколько я понимаю просто идет коррекция весов плиток но они при этом - стационарны. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 11:28 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
я возьму паузу на подумать. Помимо другого на ходу впадаю в спячку, а мы ещё не жрамши. А сейчас немного о том, чтобы найти общий язык. Собственно открытый вопрос. Насколько на выходе кластеры образуют геометрически компактные области? В основном сейчас пишу, что понимаю я. Низ рисунка нормальный. Вроде сеть Кохонена такова. Линейный слой входных векторов, к-рые надо классифицировать. Выходной слой 2-мерный - сетка невронов. Но сеть пустая, её ещё нужно поучить разделению на группы. Нужна обучающая выборка векторов. Попутно в выходном слое формируются веса связей между невронами. Кто-то придумал для визуаилзации рисовать соты. Но надо, видимо ручками, связать то как сеть среагировала на выборку, образовав некие кластеры, с собственно смыслами, к-рые содержались в выборке. После этого можно начать собственно классифкацию. Конкретнее сейчас не скажу. В данном примере должно предполагаться, что обучение произведено и вх. вектора типа (10000) (01000)(00100)... дают на выходе центры в сотах Fox, Java .... Могут ли кластеры в сотах передвигаться? Но обычно из связей считают некую суммарную функцию типа динамического уравнения Гамильтона. Похоже, что надо близость по ней интерпретировать в виде близости по геометрии. Но м.б. я и чушь написал. Надо подучить матчасть. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 20:44 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
Попробую сам ответить на вопрос. Вобщем на слое SOM нет никаких мемберов. Там - абстрактные нейроны которые взаимодействуют с соседями. Результатом обучения будет являться низкочастотная поверхность признаков. По сути центры кластеров будут экстремумами. Далее. Если ее интерполировать я уже могу расставить векторы mayton, exp, DimaT так как мне будет удобно но они не будут стоять точно на плитке. Скорее всего будут лежать гдето на границе. И даже по несколько мемберов могут занимать одну материальную точку этой SOM поверхности. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 18:07 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
В идеале центры я должен не расставлять мышкой а они должны образоваться из нейровов-победителей которые под себя должны подстроить соседей. Открытый вопрос остался для меня. Нет строгого условия единственности центра кластера. Как с этим быть? Фиксить просто перезапуском обучения с новым seed-раскладом? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 18:09 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
Интерполирование обычных функций вида y=f(x) по Симпсону я делал. А вот поверхность из гексагонов.... или треугольников.... Как? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 19:43 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
авторНет строгого условия единственности центра кластера. Как с этим быть?Сэ ля ви. Это самоорганизация, детка. Если конечно речь о непредсказуемости, а не о получении 2-х центров одномоментно. Мне всё-таки непонятно как расположить на плоскости 5-6 геометрически равноудалённых точек. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 22:25 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
exp98 Мне всё-таки непонятно как расположить на плоскости 5-6 геометрически равноудалённых точек. Ээээ... это моя постановка? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 22:43 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
Так явно нет,но мой вопрос закономерен после начального вопроса авторя хотел-бы глядя на SOM иметь утверждения что вектор V1 ближе к вектору V2 например чем вектор V3. и также если размерность входных векторов >2. И к п.4 автор4) ...если я заранее знаю или я заранее хочу получить притяжение векторов к известным мне центрам? НА случай заранее известного кол-ва центров можно попытать радиально-базисную сетку. Правда подробности я не изучал. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 19:49 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
exp98 НА случай заранее известного кол-ва центров можно попытать радиально-базисную сетку. Правда подробности я не изучал. Да про это тоже читал. Из хороших новостей. Нашел у себя (!) книжку Роберт Каллан - Основные Концепции НС. Хоть что-то цельное. Шрифт - ужасный. Иллюстрации и формулы еще хуже. Но пока для начала пойдет. Главу - 3.2. Самоорганизующася карта признаков. я сфоткаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2020, 16:00 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
Почему " карта признаков "? СОМ вроде для нейронов? а признаки - атрибут вх.данных. Или здесь признак==кластер? И мы 11-мерные векторы схлопываем на 2мерную плоскость. Через посредство нейронов-преобразователей. В общем-то можно. .Для этого нужна уверенность, что в данных огромная "схожесть". Но всё равно на 2Д тесно, чтобы близость большого кол-ва исходных кластеров иллюстрировать близостью нейронов на 2Д. Вот этот момент больше всего интересует как описывают и чем мотивируют. И где примеры графиков зависиомсти близости нейронов от близости исходных кластеов? - как выглядят эти "эллипсоиды рассеяния" ... Об этом кто-нибудь пишет? Иначе все эти иллюстрации с СОМами для заманухи. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2020, 18:21 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
exp98 Об этом кто-нибудь пишет? Иначе все эти иллюстрации с СОМами для заманухи. Я сегодня отсканирую хотя-бы эту главу из Каллана. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2020, 19:35 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
Из хороших новостей. Пока субботний карантин продолжается я собрал обучающую выборку. (Не вручную разумеется а роботом) Вот наши ключевые поля векторов. Это наиболее известные мне никнеймы распределение постов по форумам которых я примерно знаю и следовательно визуально могу проверить корректность самого вывода SOM. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
И есть отдельно значения векторов. Они очень толстые и не помещаются на экран. Поэтому я покажу только 3-4 штуки из них чтоб было ясно. Код: sql 1. 2. 3. 4. 5. 6. 7.
И справочник ключей векторов. Я экономил место в базе и нормализовывал длинные названия форумов. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61.
Вот к пример "161": 28.44 означает что я постил 28% сообщений из Java. Если у какого-то мембера отсуствует кака-то пара "X" : Y то это означает что у него 0% постов в этом форуме. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2020, 19:48 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
Недостаточная выборка, в лучшем случае для Кохоннена кластеры будут Си-Программинг-ВопрОтвет-Дельфи-Оракл. Обучающую выборку рекомендуют в десятки раз больше. Во вх.данные надо элика включить, известный ник. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 00:51 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
exp98, это не проблема. Найду больше. Пока я вижу что есть много мемберов которые вообще постят только в 1 форум. Подозреваю что они и сформируют большую часть кластеров и это печально. Тогда лопнет моя идея поискать схожие хромосомы. Или схожие сферы интересов. P.S. Элик пойдет VIP-ом. Будет хардкодом зашит во все эксперименты. Равно как и я и еще штук 10 чел. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 01:08 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
Подсобрал чуть больше векторов (щас уже более 500). Публикую здесь для статистики просто фрагмент. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51.
Как видно часть мемберов - вообще не постили ничего. И часть - постили в 1 форум. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 14:56 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
Я понял. Я немножко не совсем корректно (не-репрезентативно собираю сведенья). Самые ранние members начинаются где-то с id > 1000. Я по ним иду. Они датируются датой регистрации примерно 2004 год. На этот момент скруль еще не был развит как много-профильный и как следствие я получаю искаженную выборку где например подфорум MS-SQL преобладает. И неудивительно. Тоесть моя стратегия собирать по счетчику id в корне неверная. Нужен некий random shuffle всех id-шников от 1000 примерно до 250_000 (это примерное количество зареганных ников на данный момент). Воооот. Что еще посчитать? Наверное количество полосок гистограмм по годам с 2004 до 2021. Я думаю что в 2010 форум уже насытился и приобрёл нужное число подфорумов до такого уровня чтобы уже было репрезентативно. Что еще? Ну какой-то процентиль могу посчитать теперь. 95% мемберов имеют количество посещаемых подфорумов не менее..... и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 20:20 |
|
Воскресный SOM и классификация векторов
|
|||
---|---|---|---|
#18+
Подсобрал еще немного в режиме random-shuffle. Старые данные я не удалял а просто делал merge. Вот так вышло. 1200 учебных векторов. Колонка справа cnt_hist это количество полосок гистограммы. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51.
Думаю этого достаточно пока. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 23:56 |
|
|
start [/forum/topic.php?fid=16&fpage=5&tid=1339776]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 172ms |
0 / 0 |