Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
Привет.

Лет 5 назад Илья поднял хорошую тему Тяпничный Кохонен.

Я решил поднять. Я также решил расширить scope и включить сюда все языки разработки.

Вобщем SOM и Кохонен.

Пример как может выглядеть SOM в виде картинки

Картинка с другого сайта.

+

Модератор: Удалено по просьбе ТС


Еще вариант представления SOM от MathLab. Видимо здесь надо смотреть не на цвет а на полигоны типа Вороного.

Картинка с другого сайта.



Вопросы от меня.

1) Что может делать самоорганизующаяся карта кохонена (Self-organizing map — SOM) ? В данном случае меня
интересуют не картинки а именно выводы или заключения? Пример с Ирисами Фишера мне понятен. Это
визуальная классификация. Но мне нужно нечто большее. Например критерий близости. Тоесть
я хотел-бы глядя на SOM иметь утверждения что вектор V1 ближе к вектору V2 например чем вектор
V3. Или это невозможно?

2) Какой complexity у алгоритма обучения? Что будет если у треть миллиона учебных
векторов размерностью порядка 50.

vector[0] = {1.0, -1.0, 3.5, 0.1, ....... (здесь еще 50 коэффициентов) }
vector[1] = {....}
.....
vector[330000] = {...}


Как долго я буду тренировать SOM для достижения результата? Хватит ли у меня ресурсов?
Обязательно ли обучать по эпохам? Могу-ли я прервать и рестартонуть обучение если вижу
что есть какой-то недостаток у начального расклада? Например центры близких по принзакам
кластеров родились в дальних углах карты?

3) Какое количество кластеров максимально возможно?

4) Как сильно влияет начальный расклад (рандомные веса) на получаемый мной результат? Могу ли я искусственно
внести центры кластеризации если я заранее знаю или я заранее хочу получить притяжение векторов к известным
мне центрам?

5) Раскраска. Что брать в качестве цвета если у меня - порядка 40 центров кластеров? Я предполагал взять
формулу HSV и по цветовому тону (Hue) который меряется в 360 градусов поделить его на 40 и просто получить
360 / 40 = 9 градусов и по каждому углу использовать его цветовой тон. Насколько это будет удобно? Может
цвета будут такие близкие что неразличимы? И надо будет брать какую-то штриховку.

6) Связность соседних ячеек. Насколько важно делать хексагональные? Насколько я понял из статей
это важно для упрощения расчета ближних соседей. А если соседи дальние?

7) Библиотеки визуализации прямогуольных и гексагональных плиток. Я находил разные
примеры. Причем интересно что на JavaScript больше всего. Думаю что это тренд нашего времени - делать
инфографику на JS. Чтож. Я не против. Если вы - JS-кодер и знаете такую либу - прошу подсказать.
Вы сэкономите мне много времени.

8) Оптимизации. Нужны ли мне всегда double расчеты? Что паралеллится в потоках? Что SIMD-ится?

Приветсвуется.
- ваши алгоритмы и реализации в сорцах (бинари не надо!)
- примеры практического использования SOM вами

Не приветсвуются
- коробочные решения и готовые продукты. Мне их обсуждать не интересно т.к. не о чем говорить.
Я хотел-бы говорить об алгоритмах. В крайнем случае я готов принять их просто как пример
доказательства наличия какого-либо свойства у SOM.

Линки по теме

Их тыщи. Я давать не буду. Полезных мало. Как и в ГА во всех статьях просто описываются
общие рекоменадции. Но нет ничего конкретного. По всей видимости я буду искать литературу.
Может Саймон Хайкин об этоп писал?

Сообщение было отредактировано: 8 июн 20, 07:56
7 июн 20, 11:19    [22147000]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
exp98
Member

Откуда:
Сообщений: 2446
mayton,
во-первых, зачем запихивать в пост закачку с десяток метров?

Теперь, за глубокой давностью чтения всего такого я только для затравки обозначу ИМХО по пунктам.
1) Используется для класификации чего-либо. Вот что можно с еёпомощью понастроить, для того и используется.
Метрика (близость векторов) какая подходит для задачи и какая для визуализации.

6) М.б. это визуальная близость наподобие нашего "по радиусу", сосед моего соседа и т.д.

5) На уровне средней интенсивности, цветовой охват (локус) самый широкий. 10град угол в целом читается,когда их немного как на сотовой картинке. Если вперемежку, возможны пограничные цветовые иллюзии,например с оппозитными цветами.
Если интенсивность повышать или понижать, локус сжтягивается в точку. Понятно. Ночью все кошки серы.

4) Заранее можно. Остальное моё оценочное: На сравнении с кластерным анализом и градиентными спусками. В любом случае ищется локальный минимум на пересечённой местности. Пока крутой спуск катимся быстро. И от нужной точности зависит тоже.

Вообще важно предусмотреть, чтобы поправки к весам не вводили систему в осцилирование.

П.С.
Вспоминаю, как у нас показывали на различении 5-10 стационарных кроликов, нарисованных на экране. Сетка приближалась десятками минут. На ПК АТ.

Сообщение было отредактировано: 7 июн 20, 14:50
7 июн 20, 14:51    [22147062]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
exp98
mayton,
во-первых, зачем запихивать в пост закачку с десяток метров?


Где там десяток метров? Ну не знаю. Что у вас там. DSL-модем чтоли?

Теперь, за глубокой давностью чтения всего такого я только для затравки обозначу ИМХО по пунктам.
1) Используется для класификации чего-либо. Вот что можно с еёпомощью понастроить, для того и используется.
Метрика (близость векторов) какая подходит для задачи и какая для визуализации.

6) М.б. это визуальная близость наподобие нашего "по радиусу", сосед моего соседа и т.д.

Ну это сходу понятно. Классификация. Енот-полоскун из семейства енотовых.

Допустим у меня уже эта карта есть. Что еще кроме? Могу я сказать что енот ближе к собаке чем росомаха?
7 июн 20, 17:49    [22147117]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
exp98

5) На уровне средней интенсивности, цветовой охват (локус) самый широкий. 10град угол в целом читается,когда их немного как на сотовой картинке. Если вперемежку, возможны пограничные цветовые иллюзии,например с оппозитными цветами.
Если интенсивность повышать или понижать, локус сжтягивается в точку. Понятно. Ночью все кошки серы.

Что это за термин такой локус? Вроде как в математике я не слышал. Локальный максимум?

Да еще идея появилась. Кроме Hue, есть еще Saturation. Еще одно измерение. И если грамотно
его использовать у нас просто станет меньше системных цветов. Зато появятся более бледные
(дизайнерские цвета). И тогда плавный переход между двумя классами в SOM может быть обозначен
как гашение контраста.

Картинка с другого сайта.

И тогда можно делить 360 на 20 + еще 360 на 20 где saturation = 50% к примеру.
7 июн 20, 17:57    [22147121]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
exp98

Вообще важно предусмотреть, чтобы поправки к весам не вводили систему в осцилирование.

Дада. Хороший вопрос. Как подобрать такой набор коэффициентов.
7 июн 20, 18:35    [22147132]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
exp98
Member

Откуда:
Сообщений: 2446
Пишу оффлайн. Даже краткий просмотр кажный раз производит закачку, к-рую остановить проще всего разрывом связи.

Локус - термин "цветопространственный". А вот как раз в той книжечке Джадд, Вышецки ...
"Плоская территория" (или её граница) цветового охвата зрением ли, спектрофотометром ли ... Обычно на плоскости, где составляющая интенсивности==0. Форма зависит от системы цветовых координат.
Ни одна точка не спроецируется вне локуса.
Для РГБ - тот самый треугольник, перпендикулярный оси интенсивности.
Для человечьего зрения форма "полуовала", по краю к-рого "чистые" цвета отвечают нанометрам ~390-720.
S - это ползанье по оси интенсивностей. Имеем 3--хмерное яйцо. Чем выше, тем ярче, но и тем уже, горизонтальный срез яйца, локус. Аналогично вниз по оси. Самые насыщенные оттенки на уровне серой точки. Про эффекты среднего арифметического для неконтрастной системы координат я недавно писал.

aftar
Дада. Хороший вопросс. Как подобрать ...
Х-ха! ИМХО это самое главное в модели, вот они, обратные распространения ошибок ... Вроде за это отвечает твоя программа, модифицирующая веса так, чтобы уменьшить суммарную неоптимальность.
Целился в левый глаз, попал в правый, надо подкрутить прицел - общий принцип таков. Без тензорных)) формул наверное никак.
Например пытаться обеспечить сходимость. В частном случае, последовательность сжимающих отображений сходится к единственной точке.
Пусть кто плотно этим занимался скажут.


aftar
Могу я сказать что енот ближе к собаке чем россомаха?
Глядя на векторы весов? Ах, вот для чего нужна близость векторов ...
Так, тихо! На картинке соты - что это, кластеры невронов сетки? Нужнен показометр карты сетки? Вообще-то я уже не помню, будут ли для Кохонена они разнесены пространственно как у Хопфилда?

Наверное это кластеры, классифицирующие объекты? Наши кролики были оттдельно сидящими невронами. Ну а для весов положено АПИ.
Показать 2-3 связи объектов на плоскости нетрудно. Что делать для Dim=N?
Ссвязи близости образуют типично не планарный граф. Их не всегда можно Архимедово расположить на плоскости, чтобы можно было линейкой измерить расстояние и сравнить.

Ага! теперь вопрос близости начинаю понимать о чём)) Ответ: теоретически можно, но надо придумывать в зависимости от задачи. Универсальная манхэттенская метрика будет лишь грубым приближением для этого.
И показометр может не отражать близость правильно. Т.е. я не уверен, что цветными кляксами можно наглядно показать близость всех со всеми. На графе кластеров если, да по графской метрике ...

Сообщение было отредактировано: 7 июн 20, 20:38
7 июн 20, 20:40    [22147159]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
exp98
Пишу оффлайн. Даже краткий просмотр кажный раз производит закачку, к-рую остановить проще всего разрывом связи.

Да. Я попрошу модератора удалить толстую .gif картинку с моего первого поста которая приводит
к проблемам у некоторых пользователей.

Спасибо.
7 июн 20, 22:34    [22147187]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
exp98
Глядя на векторы весов? Ах, вот для чего нужна близость векторов ...
Так, тихо! На картинке соты - что это, кластеры невронов сетки?

Нужнен показометр карты сетки? Вообще-то я уже не помню, будут ли для Кохонена они разнесены пространственно как у Хопфилда?


Дада. Хороший вопрос. Я почитаю насчет Хопфилда. Тоже не хватает знаний. Насколько я помню
Хопфилд - тоже учится без учителя и сводит векторы к ограниченному набору классов. Вроде
как - близко к SOM.
8 июн 20, 10:45    [22147332]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
Давайте - более приближенный к реальности пример. Это то над чем я рассеянно думаю.

Социальная сеть sql.ru имеет профили мемберов. Они характерны распределением постов
по подфорумам. К примеру ваш покорный слуга постит в C++/Prog/Java примерно в равной
пропорции. Мехматовец и Усов - чисто Программинг. Мой вечный консультант по математике
дружище exp98 - имеет профиль на 50% программирование + еще несущественный сет
прочих интересов которые я поскипал.

Вот теперь вопрос. Я искусственно расставил центры кластеров Prog/FoxPro/C++/Java по углам.
Мне было так удобно. Теперь. Можно - ли переставлять местами плитки в процессе обучения
для достижения той самой "близости" например по Пифагорову расстоянию между векторами?
Тоесть предполагаем что те координаты измерений которые не были указаны - равны
вещестенному нулю.

В классическом Сом-е насколько я понимаю просто идет коррекция весов плиток но они при
этом - стационарны.

К сообщению приложен файл. Размер - 108Kb
8 июн 20, 11:28    [22147358]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
exp98
Member

Откуда:
Сообщений: 2446
я возьму паузу на подумать. Помимо другого на ходу впадаю в спячку, а мы ещё не жрамши. А сейчас немного о том, чтобы найти общий язык.
Собственно открытый вопрос. Насколько на выходе кластеры образуют геометрически компактные области?
В основном сейчас пишу, что понимаю я.
+
Низ рисунка нормальный. Вроде сеть Кохонена такова. Линейный слой входных векторов, к-рые надо классифицировать. Выходной слой 2-мерный - сетка невронов.
Но сеть пустая, её ещё нужно поучить разделению на группы. Нужна обучающая выборка векторов. Попутно в выходном слое формируются веса связей между невронами. Кто-то придумал для визуаилзации рисовать соты. Но надо, видимо ручками, связать то как сеть среагировала на выборку, образовав некие кластеры, с собственно смыслами, к-рые содержались в выборке.
После этого можно начать собственно классифкацию. Конкретнее сейчас не скажу.

В данном примере должно предполагаться, что обучение произведено и вх. вектора типа (10000) (01000)(00100)... дают на выходе центры в сотах Fox, Java .... Могут ли кластеры в сотах передвигаться? Но обычно из связей считают некую суммарную функцию типа динамического уравнения Гамильтона. Похоже, что надо близость по ней интерпретировать в виде близости по геометрии.
Но м.б. я и чушь написал. Надо подучить матчасть.
8 июн 20, 20:44    [22147644]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
Попробую сам ответить на вопрос. Вобщем на слое SOM нет никаких мемберов.
Там - абстрактные нейроны которые взаимодействуют с соседями. Результатом
обучения будет являться низкочастотная поверхность признаков.

По сути центры кластеров будут экстремумами.

Далее. Если ее интерполировать я уже могу расставить векторы mayton, exp, DimaT
так как мне будет удобно но они не будут стоять точно на плитке. Скорее всего будут
лежать гдето на границе. И даже по несколько мемберов могут занимать одну материальную
точку этой SOM поверхности.
9 июн 20, 18:07    [22148224]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
В идеале центры я должен не расставлять мышкой а они должны образоваться из нейровов-победителей
которые под себя должны подстроить соседей.

Открытый вопрос остался для меня. Нет строгого условия единственности центра кластера. Как с этим быть?

Фиксить просто перезапуском обучения с новым seed-раскладом?
9 июн 20, 18:09    [22148225]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
Интерполирование обычных функций вида y=f(x) по Симпсону я делал.
А вот поверхность из гексагонов.... или треугольников.... Как?
9 июн 20, 19:43    [22148302]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
exp98
Member

Откуда:
Сообщений: 2446
автор
Нет строгого условия единственности центра кластера. Как с этим быть?
Сэ ля ви. Это самоорганизация, детка.
Если конечно речь о непредсказуемости, а не о получении 2-х центров одномоментно.
Мне всё-таки непонятно как расположить на плоскости 5-6 геометрически равноудалённых точек.
10 июн 20, 22:25    [22149052]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
exp98
Мне всё-таки непонятно как расположить на плоскости 5-6 геометрически равноудалённых точек.

Ээээ... это моя постановка?
10 июн 20, 22:43    [22149057]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
exp98
Member

Откуда:
Сообщений: 2446
Так явно нет,но мой вопрос закономерен после начального вопроса
автор
я хотел-бы глядя на SOM иметь утверждения что вектор V1 ближе к вектору V2 например чем вектор V3.
и также если размерность входных векторов >2.

И к п.4
автор
4) ...если я заранее знаю или я заранее хочу получить притяжение векторов к известным мне центрам?
НА случай заранее известного кол-ва центров можно попытать радиально-базисную сетку. Правда подробности я не изучал.
11 июн 20, 19:49    [22149557]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
exp98
НА случай заранее известного кол-ва центров можно попытать радиально-базисную сетку. Правда подробности я не изучал.

Да про это тоже читал.

Из хороших новостей. Нашел у себя (!) книжку Роберт Каллан - Основные Концепции НС.
Хоть что-то цельное. Шрифт - ужасный. Иллюстрации и формулы еще хуже. Но пока для начала пойдет.
Главу - 3.2. Самоорганизующася карта признаков. я сфоткаю.
12 июн 20, 16:00    [22149867]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
exp98
Member

Откуда:
Сообщений: 2446
Почему "карта признаков"? СОМ вроде для нейронов? а признаки - атрибут вх.данных. Или здесь признак==кластер?
И мы 11-мерные векторы схлопываем на 2мерную плоскость. Через посредство нейронов-преобразователей.
В общем-то можно. .Для этого нужна уверенность, что в данных огромная "схожесть". Но всё равно на 2Д тесно, чтобы близость большого кол-ва исходных кластеров иллюстрировать близостью нейронов на 2Д.
Вот этот момент больше всего интересует как описывают и чем мотивируют.
И где примеры графиков зависиомсти близости нейронов от близости исходных кластеов? - как выглядят эти "эллипсоиды рассеяния" ...
Об этом кто-нибудь пишет? Иначе все эти иллюстрации с СОМами для заманухи.
13 июн 20, 18:21    [22150217]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
exp98
Об этом кто-нибудь пишет? Иначе все эти иллюстрации с СОМами для заманухи.

Я сегодня отсканирую хотя-бы эту главу из Каллана.
13 июн 20, 19:35    [22150240]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
Из хороших новостей. Пока субботний карантин продолжается я собрал обучающую выборку.

(Не вручную разумеется а роботом)

Вот наши ключевые поля векторов. Это наиболее известные мне никнеймы распределение
постов по форумам которых я примерно знаю и следовательно визуально могу проверить
корректность самого вывода SOM.

+
dht=> select id,nickname,messages from member_info;
   id   |      nickname       | messages 
--------+---------------------+----------
  27971 | mayton              |    46816
  43489 | Dima T              |    14788
 111626 | exp98               |     2294
 142913 | ViPRos              |     9856
 251867 | полудух             |     1341
  95030 | booby               |     1952
 110363 | Basil A. Sidorov    |    10191
 263304 | Алексей Роза        |      208
  57183 | Изопропил           |    31469
 247232 | Gennadiy Usov       |     2140
 261581 | crutchmaster        |     1220
  49068 | Соколинский Борис   |    12557
   1350 | SergDanceHits       |      157
  97422 | hVostt              |    17541
  21430 | miksoft             |    38339
  88727 | mad_nazgul          |     5330
 252521 | Дмитрий Мух         |     3504
 223550 | Valentin Kolesnikov |     3289
 257822 | PetroNotC Sharp     |     4882
 132113 | Siemargl            |     6330
  19857 | softwarer           |    62140
  11587 | Leonid Kudryavtsev  |     8590
  22920 | MasterZiv           |    34592
 122827 | ZyK_BotaN           |   108604
 101262 | kealon(Ruslan)      |     5926
(25 rows)


И есть отдельно значения векторов. Они очень толстые и не помещаются на экран. Поэтому
я покажу только 3-4 штуки из них чтоб было ясно.

+
   id   |                                                                                                                                                                                                                                                                                                         hist                                                                                                                                                                                                                                                                                                         
--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  27971 | {"148": 0.01, "149": 0.03, "150": 0.1, "151": 20.11, "152": 0.08, "153": 0.37, "154": 0.03, "155": 0.01, "156": 0, "157": 0.59, "158": 0.09, "159": 0.01, "160": 0, "161": 28.44, "162": 0.05, "163": 0.02, "164": 0.13, "165": 0.03, "166": 0.04, "167": 0.04, "168": 7.79, "169": 0.1, "170": 0.05, "171": 0.03, "172": 0.01, "173": 0, "174": 0.03, "175": 1.5, "176": 0.03, "177": 1.73, "178": 0.24, "179": 0.03, "180": 1.15, "181": 3.34, "182": 0.01, "183": 0, "184": 1.26, "185": 0, "186": 28.56, "187": 0.74, "188": 1.22, "189": 0.19, "190": 0.04, "191": 1.73, "192": 0.01, "193": 0.02, "194": 0.02}
  43489 | {"148": 0.76, "151": 22.63, "153": 0.16, "154": 0.02, "156": 39.55, "157": 0.01, "158": 0.01, "163": 0.01, "164": 2.07, "165": 0.06, "168": 0.01, "169": 0.05, "172": 1.04, "175": 0.16, "176": 0.02, "177": 1.91, "178": 7.25, "180": 3.01, "183": 0.02, "184": 0.13, "186": 20.95, "187": 0.02, "188": 0.08, "189": 0.02, "191": 0.02, "193": 0.01, "194": 0.02, "195": 0.01}
 111626 | {"149": 0.27, "151": 2.83, "153": 1.06, "156": 0.22, "158": 0.09, "161": 0.09, "162": 0.58, "163": 15.1, "167": 0.49, "168": 7.31, "169": 0.04, "173": 1.15, "174": 0.13, "176": 0.13, "177": 0.18, "178": 0.53, "179": 0.18, "180": 17.14, "183": 0.89, "184": 0.09, "186": 48.45, "188": 0.89, "189": 1.59, "193": 0.18, "196": 0.4}
 251867 | {"150": 0.97, "151": 32.59, "154": 0.3, "157": 0.97, "158": 2.54, "161": 2.09, "164": 0.07, "165": 3.36, "166": 0.07, "167": 0.07, "168": 0.37, "169": 8.5, "170": 5.44, "172": 0.22, "175": 1.19, "177": 0.15, "178": 0.15, "180": 5.37, "184": 0.37, "186": 11.11, "187": 8.05, "188": 12.53, "189": 1.94, "191": 0.22, "194": 0.07, "196": 1.27}
(4 rows)


И справочник ключей векторов. Я экономил место в базе и нормализовывал длинные названия форумов.

+
 key |                         value                         
-----+-------------------------------------------------------
 148 | ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM
 149 | Android
 150 | ASP.NET
 151 | C++
 152 | Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M
 153 | Delphi
 154 | ERP и учетные системы
 155 | Firebird, InterBase
 156 | FoxPro, Visual FoxPro
 157 | Hardware
 158 | HTML, JavaScript, VBScript, CSS
 159 | IBM DB2, WebSphere, IMS, U2, etc
 160 | iOS
 161 | Java
 162 | Microsoft Access
 163 | Microsoft Office
 164 | Microsoft SQL Server
 165 | MySQL
 166 | NoSQL, Big Data
 167 | OLAP и DWH
 168 | Oracle
 169 | PHP, Perl, Python
 170 | PostgreSQL
 171 | PowerBuilder
 172 | SQLite
 173 | Sybase ASA, ASE, IQ
 174 | Test
 175 | Unix-системы
 176 | Visual Basic
 177 | Windows
 178 | WinForms, .Net Framework
 179 | XML, XSL, XPath, XQuery
 180 | Вопрос-Ответ
 181 | Другие СУБД
 182 | Другие: Mac OS, PalmOS, BeOS, PocketPC
 183 | Наши за рубежом
 184 | Обсуждение нашего сайта
 185 | Отчетные системы
 186 | Программирование
 187 | Проектирование БД
 188 | Работа
 189 | Разработка информационных систем
 190 | Разработка под мобильные платформы
 191 | Сравнение СУБД
 192 | Тестирование и QA
 193 | Управление процессом разработки ИС
 194 | Юридические вопросы в ИТ
 195 | 1С
 196 | Вакансии
 197 | WCF, Web Services, Remoting
 198 | WPF, Silverlight
 199 | Серверный JavaScript (node.js, ringo, nitro, sling)
 200 | Oracle Forms
 201 | IBExpert
 202 | Oracle APEX
 203 | Сертификация и обучение
 204 | Informix
 205 | SharePoint
 206 | Обсуждение рассылки


Вот к пример "161": 28.44 означает что я постил 28% сообщений из Java.

Если у какого-то мембера отсуствует кака-то пара "X" : Y то это означает что у него 0% постов в этом форуме.
13 июн 20, 19:48    [22150244]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
exp98
Member

Откуда:
Сообщений: 2446
Недостаточная выборка, в лучшем случае для Кохоннена кластеры будут Си-Программинг-ВопрОтвет-Дельфи-Оракл. Обучающую выборку рекомендуют в десятки раз больше. Во вх.данные надо элика включить, известный ник.
14 июн 20, 00:51    [22150306]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
exp98, это не проблема. Найду больше.

Пока я вижу что есть много мемберов которые вообще постят только в 1 форум.
Подозреваю что они и сформируют большую часть кластеров и это печально.

Тогда лопнет моя идея поискать схожие хромосомы. Или схожие сферы интересов.

P.S. Элик пойдет VIP-ом. Будет хардкодом зашит во все эксперименты. Равно как и я и еще штук 10 чел.
14 июн 20, 01:08    [22150308]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
Подсобрал чуть больше векторов (щас уже более 500). Публикую здесь для статистики просто фрагмент.

+
2027 | {"164": 100}
   2022 | {}
   2028 | {"164": 100}
   2021 | {}
   2024 | {"153": 30, "155": 30, "164": 40}
   2020 | {"164": 100}
   2025 | {}
   2023 | {}
   2026 | {"164": 100}
   2033 | {"153": 0.19, "168": 98.85, "175": 0.38, "184": 0.58}
   2031 | {"164": 100}
   2038 | {"164": 100}
   2032 | {"164": 100}
   2039 | {}
   2035 | {"164": 100}
   2037 | {}
   2030 | {"162": 28.57, "180": 71.43}
   2034 | {"164": 100}
   2036 | {"164": 100}
   2046 | {"188": 25, "196": 75}
   2045 | {"168": 93.33, "181": 6.67}
   2043 | {"180": 100}
   2042 | {}
   2116 | {"153": 100}
   2117 | {"164": 95.45, "165": 4.55}
   2114 | {"162": 4.55, "164": 95.45}
   2113 | {}
   2119 | {}
   2129 | {"164": 100}
   2128 | {"153": 1.82, "164": 32.73, "165": 1.82, "186": 63.64}
   2120 | {"164": 100}
   2124 | {"158": 14.29, "164": 28.57, "165": 14.29, "169": 42.86}
   2127 | {"173": 100}
   2121 | {}
   2125 | {"164": 100}
   2126 | {"191": 100}
   2135 | {"164": 100}
   2133 | {}
   2137 | {"164": 66.67, "165": 4.76, "167": 28.57}
   2138 | {"164": 100}
   2130 | {"164": 100}
   2132 | {"164": 100}
   2136 | {"162": 7.89, "163": 0.88, "168": 87.72, "195": 0.88, "200": 2.63}
   2131 | {"162": 100}
   2142 | {"164": 100}
   2147 | {"162": 40, "164": 60}
   1397 | {"162": 33.33, "164": 66.67}
   1399 | {"164": 100}
   1396 | {}
   1404 | {"164": 100}
   1407 | {"164": 100}


Как видно часть мемберов - вообще не постили ничего. И часть - постили в 1 форум.
14 июн 20, 14:56    [22150433]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
Я понял. Я немножко не совсем корректно (не-репрезентативно собираю сведенья).

Самые ранние members начинаются где-то с id > 1000. Я по ним иду. Они датируются датой
регистрации примерно 2004 год. На этот момент скруль еще не был развит как много-профильный
и как следствие я получаю искаженную выборку где например подфорум MS-SQL преобладает.

И неудивительно.

Тоесть моя стратегия собирать по счетчику id в корне неверная. Нужен некий random shuffle
всех id-шников от 1000 примерно до 250_000 (это примерное количество зареганных ников
на данный момент).

Воооот. Что еще посчитать? Наверное количество полосок гистограмм по годам с 2004 до 2021.
Я думаю что в 2010 форум уже насытился и приобрёл нужное число подфорумов до такого
уровня чтобы уже было репрезентативно.

Что еще? Ну какой-то процентиль могу посчитать теперь. 95% мемберов имеют количество
посещаемых подфорумов не менее..... и т.д.
14 июн 20, 20:20    [22150555]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
Подсобрал еще немного в режиме random-shuffle. Старые данные я не удалял а просто делал merge.

Вот так вышло. 1200 учебных векторов. Колонка справа cnt_hist это количество полосок гистограммы.
+
   id   |           nickname           | messages |     registered      |     last_update     | cnt_hist 
--------+------------------------------+----------+---------------------+---------------------+----------
 122827 | ZyK_BotaN                    |   108611 | 2009-03-19 00:00:00 | 2020-06-15 00:00:00 |       18
   1740 | Glory                        |   104760 |                     |                     |       34
  19857 | softwarer                    |    62151 | 2004-03-10 00:00:00 | 2020-06-14 00:00:00 |       34
   2262 | locky                        |    62034 |                     |                     |       33
  30055 | Гаджимурадов Рустам          |    61439 | 2004-10-30 00:00:00 | 2020-06-12 00:00:00 |       17
  27971 | mayton                       |    46858 | 2004-09-18 00:00:00 | 2020-06-15 00:00:00 |       47
  21430 | miksoft                      |    38344 | 2004-04-13 00:00:00 | 2020-06-14 00:00:00 |       41
   4313 | tchingiz                     |    36801 | 2002-10-29 00:00:00 | 2020-06-15 00:00:00 |       35
  22920 | MasterZiv                    |    34592 | 2004-05-19 00:00:00 | 2020-06-11 00:00:00 |       47
  57183 | Изопропил                    |    31470 | 2006-04-22 00:00:00 | 2020-06-14 00:00:00 |       31
  24806 | Elic                         |    29821 | 2004-07-05 00:00:00 | 2020-05-14 00:00:00 |       14
  16348 | Гусена                       |    26841 | 2003-12-04 00:00:00 | 2017-03-06 00:00:00 |        8
  27590 | tru55                        |    19784 | 2004-09-09 00:00:00 | 2020-06-09 00:00:00 |       33
   4045 | hDrummer                     |    18227 | 2002-10-17 00:00:00 | 2018-07-01 00:00:00 |       31
  97422 | hVostt                       |    17541 | 2007-12-17 00:00:00 | 2020-06-13 00:00:00 |       28
  43489 | Dima T                       |    14789 | 2005-08-23 00:00:00 | 2020-06-14 00:00:00 |       28
  49068 | Соколинский Борис            |    12557 | 2005-12-03 00:00:00 | 2020-06-11 00:00:00 |        9
   1533 | ChA                          |    10994 |                     |                     |       14
  46017 | MsDatabaseru                 |    10937 | 2005-10-10 00:00:00 | 2019-10-04 00:00:00 |       23
 110363 | Basil A. Sidorov             |    10192 | 2008-08-06 00:00:00 | 2020-06-14 00:00:00 |       17
   1464 | tygra                        |     9998 |                     |                     |       20
   9662 | SY                           |     9881 | 2003-05-29 00:00:00 | 2020-06-14 00:00:00 |        3
 142913 | ViPRos                       |     9856 | 2010-05-12 00:00:00 | 2020-06-13 00:00:00 |       23
  11587 | Leonid Kudryavtsev           |     8590 | 2003-07-29 00:00:00 | 2020-06-13 00:00:00 |       37
   1978 | ВладимирМ                    |     7854 |                     |                     |       10
  94564 | suPPLer                      |     7794 | 2007-10-31 00:00:00 | 2017-06-14 00:00:00 |       16
 132113 | Siemargl                     |     6330 | 2009-09-24 00:00:00 | 2019-12-05 00:00:00 |       49
   2206 | ASCRUS                       |     5994 |                     |                     |       35
 101262 | kealon(Ruslan)               |     5926 | 2008-02-20 00:00:00 | 2020-06-09 00:00:00 |       32
 146456 | xtender                      |     5456 | 2010-07-29 00:00:00 | 2020-06-12 00:00:00 |       14
  88727 | mad_nazgul                   |     5330 | 2007-07-28 00:00:00 | 2020-06-12 00:00:00 |       21
   2436 | Зайцев Фёдор                 |     5308 | 2002-07-17 00:00:00 | 2015-11-13 00:00:00 |       15
 257822 | PetroNotC Sharp              |     4891 | 2019-05-31 00:00:00 | 2020-06-14 00:00:00 |        7
   2188 | AAron                        |     4324 |                     |                     |       18
 145849 | Roman Mejtes                 |     3837 | 2010-07-15 00:00:00 | 2020-06-14 00:00:00 |       25
   2186 | ziktuw                       |     3552 |                     |                     |       22
  10469 | arni                         |     3544 | 2003-06-24 00:00:00 | 2019-10-23 00:00:00 |       20
 252521 | Дмитрий Мух                  |     3505 | 2018-09-03 00:00:00 | 2020-06-14 00:00:00 |       30
 223550 | Valentin Kolesnikov          |     3291 | 2015-06-19 00:00:00 | 2020-06-14 00:00:00 |       19
   2354 | Jimmy                        |     3136 | 2002-07-11 00:00:00 | 2009-09-03 00:00:00 |       19
   1775 | ЗоринАндрей                  |     3004 |                     |                     |       11
   1626 | Tosh                         |     2956 |                     |                     |       22
   7389 | AI                           |     2817 | 2003-03-10 00:00:00 | 2020-05-14 00:00:00 |       11
   2406 | Евгений Фадеев               |     2375 | 2002-07-16 00:00:00 | 2016-05-04 00:00:00 |        9
 111626 | exp98                        |     2295 | 2008-09-01 00:00:00 | 2020-06-14 00:00:00 |       25
   1558 | saint                        |     2262 |                     |                     |       17
 247232 | Gennadiy Usov                |     2140 | 2018-01-28 00:00:00 | 2020-06-13 00:00:00 |        1
   2435 | MiCe                         |     1996 | 2002-07-17 00:00:00 | 2013-03-03 00:00:00 |       11
  95030 | booby                        |     1953 | 2007-11-08 00:00:00 | 2020-06-15 00:00:00 |       21


Думаю этого достаточно пока.
14 июн 20, 23:56    [22150678]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
В среднем 2.5 полоски на человека.

dht=> select avg((select count(*) from json_object_keys(hist::json))) from member_info2;
        avg         
--------------------
 2.5049261083743842
(1 row)


Это хорошо. Значит вкусы людей не кластеризуются вокруг 1 под-форума. Есть надежда что мой эксперимент
получится.

И еще есть мемберы универсалы. Такие как Жук Ботан и Softwarer и я. Мы флудили везде по чуть-чуть и повлияли
на AVG примерно так как зарплата депутата на среднюю З.П. по стране. Вроде как и средняя не маленькая.

Но чото ... не ощущает народ.



Какой еще процентиль посчитать? Не знаю.
15 июн 20, 00:03    [22150680]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
exp98
Member

Откуда:
Сообщений: 2446
mayton
Подозреваю что они и сформируют большую часть кластеров и это печально.
Тогда лопнет моя идея поискать схожие хромосомы. Или схожие сферы интересов.
Сейчас пишу по беглому просмотру.
Если в этом основная была цель, я бы в дополнение к проделаному подсчитал матрицу главных компонент (её собственные числа и собственные векторы). Это был бы аналог кластеров, упорядоченных по представительности разделов форума.либо сочетаний разделов.
При наличии ушедших ников или однодневок нужны робастные формулы))
Так же нужны показатели в динамике, а не только на постфактум.
15 июн 20, 11:19    [22150841]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
Что такое матрица главных компонент ?
15 июн 20, 11:24    [22150847]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
exp98
Так же нужны показатели в динамике, а не только на постфактум.

Ммм... не знаю как это делать в динамике.
15 июн 20, 16:16    [22151111]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
exp98
Member

Откуда:
Сообщений: 2446
mayton
Что такое матрица главных компонент ?
Смешались в кучу кони, люди ...(с)
Имелся ввииду метод главных компонент. На английском забыл слово (важный, представительный ...... ???): P...... components analysis.
автор
как это делать в динамике
я тоже, нужны исторические данные ... а так - разные плавающие средние, дисперсии, скосы, крутизны и пр. моменты N-й степени.

Сообщение было отредактировано: 16 июн 20, 11:34
16 июн 20, 11:35    [22151477]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
exp98
Member

Откуда:
Сообщений: 2446
Хотел добавить по поводу профилей юзеров.
Бывают разные цели исследования. Можно смотреть "куда все ходят в среднем или покластерно". Т.е. интересоваться популярностью разделов.
Можно изучать группы интересов юзеров.
16 июн 20, 11:48    [22151494]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
exp98
Member

Откуда:
Сообщений: 2446
Кажется пост пролетел мимо. Повторяю на случай чего.
Насчёт профилей юзеров и ких кластеров. В зависимости от целей исследования могут буть более полезны отличающиеся метрики.
Например
1) Изучаем "куда все ходят". Т.е. интересует популярность разелов форума.
2) Изучаем интересы юзеров
3) Изучаем "преимущественные" интересы юзеров. отличие 2) и 3) проще понять из метрики ниже.

В 1)-2) годятся %%-ные профили, в 1) - даже абсолютные значения посещений.
Во 2), но особенно в 3), полезнее метрика типа индекс.
ind= pr / avg(pr), где pr - %%-й профиль конкретного юзера.


К посту выше, вспомнил слово: principal components analysis

Сообщение было отредактировано: 16 июн 20, 12:13
16 июн 20, 12:07    [22151511]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
exp98
Хотел добавить по поводу профилей юзеров.
Бывают разные цели исследования. Можно смотреть "куда все ходят в среднем или покластерно". Т.е. интересоваться популярностью разделов.
Можно изучать группы интересов юзеров.

Ты меня немного обогнал и зашел уже в следующий Proof-Of-Concept. А именно в анализ постов которые пишут
пользователи. Или анализ их вопросов. По ключевым словам. Или по фрагментам исходников.
16 июн 20, 13:32    [22151569]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
exp98
Member

Откуда:
Сообщений: 2446
Мож и обогнал, только снова хочу оправдаться. Написал выше про метрику индексного типа. Подразумевал среднее по "ансамблю" векторов, а не среднее в профиле конкретного юзера.
Но том ещёинули возможны ....
16 июн 20, 18:46    [22151899]     Ответить | Цитировать Сообщить модератору
 Re: Воскресный SOM и классификация векторов  [new]
mayton
Member

Откуда: loopback
Сообщений: 48022
exp98, тебе нужна 1000 векторов для прототипа или для модельки?
16 июн 20, 18:47    [22151900]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Программирование Ответить