Русский
Русский
English
Статистика
Реклама

Кластеризация данных

Thank you points сетевой анализ социальных связей внутри DataArt

07.12.2020 20:14:08 | Автор: admin


Святослав Зборовский из BI-команды DataArt изучил, кого из коллег чаще всего благодарят с помощью корпоративной системы. В статье для Хабр он рассказал, как быстро построить и оптимизировать граф и какие кластеры ему удалось на нем выделить.

Святослав Зборовский, Data Analyst, DataArt

DataArt достаточно крупная IT-компания, в 20 наших офисах в десяти странах работает более 3000 человек. Многие проектные команды распределены по разным городам, взаимодействие между сотрудниками и до начала пандемии COVID-19 чаще всего происходило онлайн. Еще девять лет назад в компании придумали способ дистанционно поблагодарить коллегу с помощью TYPs Thank you points. Типсы аналог внутренней валюты, никак не привязанный к бонусам, зарплатам или стажу. Их можно посылать тем, кто вам помог, получать от тех, для кого что-то хорошее сделали вы сами, и время от времени менять на сувениры: кружки, рюкзаки, пауэрбанки, резиновых уточек и т. д. Если интересно, подробнее о том, как работает система TYPs, можно почитать здесь, но, в общем, это действительно такое спасибо онлайн.


Иллюстрация из статьи о том, как работает типсовая система в DataArt, выходившей осенью 2019 года

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

Сразу оговорюсь, что типсы, которые начисляются коллегам от имени компании (за участие в конференциях, написание статей, выступления на внутренних ивентах и т. д., а также по умолчанию ежемесячно), в исследовании я не учитывал. Ведь это не классическое спасибо от коллеги коллеге.

На графике ниже можно увидеть динамику, как много коллеги благодарят друг друга за последние четыре года. Угадайте причину пиковых значений в конце каждого года (спойлер: сотрудники поздравляют друг друга с Новым годом).

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



В качестве инструмента я выбрал Gephi. Использовать его удобнее, чем вручную писать собственную программу на R/Python/ выберите любой язык, позволяющий исследовать сети. Во-первых, в Gephi проще настраивать укладку сети, во-вторых, в нем предусмотрена удобная регулировка размера и цвета текста, что позволяет без лишних усилий облегчить чтение графа.

Первоначальный датасет имел формат таблицы связей и состоял из 46 896 строк отдельных фактов дарения типсов. С 2011 года именно столько раз коллеги официально сказали друг другу спасибо внутри системы учета рабочего времени. Выглядит это примерно вот так:



Поэтому для облегчения графа я применил фильтр degree > 50, другими словами, оставил на нем только коллег, у которых выявлено более 50 связей (фактов дарения или получения типсов).

Поэкспериментировав с укладкой, я остановился на Fruchterman Reingold. Выглядело это вот так:



К отфильтрованному графу я добавил статистику модулярности для выявления кластеров. Их оказалось восемь.

Далее изменил размер узлов так, чтобы большие точки соответствовали людям, получающим особенно много типсов. Это позволило выявить главных героев в каждом кластере.

Финальная визуализация выглядит так:



Но кто все эти люди? Какая логика объединят их в кластеры? С целью разобраться я добавил таблицу узлов, отображающую на графе имена сотрудников. Увы, по соображениям конфиденциальности, в статью такие данные я включить не могу, зато могу рассказать, что удалось установить с их помощью.

Голубым цветом (20,61 % всех наблюдений) представлены коллеги из небольшого центра разработки, расположенного в относительно небольшом городе. DataArt там очень сильный игрок на рынке труда, при этом профессиональное сообщество в целом совсем немногочисленно. В этих условиях местный офис занимает в жизни коллег значительное место, и между собой они общаются очень тесно, даже будучи занятыми в разных проектах. Это наглядно отображается в частых спасибо. Лидеры HR-менеджеры, сисадмины, бухгалтеры и самых опытные из инженеров, выступающие менторами для практикантов и активно участвующие в жизни локального центра разработки. Т. е. они проводят вебинары, представляют в офисе результаты своей работы и интересные кейсы, выступают на конференциях с докладами, которые нравятся коллегам. Центральный большой узел инженер хелпдеска.

Зеленый (18.88 %) напротив, коллеги из самого большого (удивительно!) офиса, расположенного в нестоличном городе среднего размера. Однако здесь картина иная: в целом люди реже отправляют друг другу типсы, а я ярко выраженных любимчиков у них попросту нет. Скорее всего, у коллег просто хорошие горизонтальные отношения.[SZ13]

Фиолетовый (18,88 %) менеджеры, которые помогают планировать командировки и считать бюджеты, и участники внутренней BI-команды. У них есть и выраженная категория поклонников, в которую входят менеджеры проектов, деливери менеджеры, тимлиды и синьорные разработчики, которые чаще других выезжают в офисы клиентов.

Черный (15,45 %) это хорошие люди, которых одинаково часто благодарят коллеги самых разных уровней и специализаций. Самые большие черные точки системные администраторы, кроме них, в категорию попадают офис-менеджеры и преподаватели английского.

Оранжевый (11,59 %) объединяет высший менеджмент, HR-менеджеров и тех, кто занимается продвижением компании на рынках труда. Все эти люди развивают бренд DataArt как работодателя и, хотя работают они в разных командах и департаментах, регулярно пересекаются и благодарят друг друга. Эта тенденция прослеживается на протяжении всех девяти лет работы системы, поэтому объединить таких коллег в один кластер вполне логично.

Красным цветом (6,87 %) обозначена еще одна небольшая локация. Самые большие точки два системных администратора и главный HR, действительно много времени уделяющий общению с коллегами и во многом объединяющий их между собой.

Темно-зеленый (3,86%) опять сисадмины, однако не привязанные к определенному офису. Это те, кто помогает настраивать виртуальные окружения, налаживает работу корпоративных систем и консультирует коллег из разных городов и стран. Поэтому и определенной группы, представители которой благодарили бы их чаще других, выявить невозможно. Им в равной степени благодарны все сотрудники компании за это им и полагается отдельный кластер.

Желтый (3,86 %) разработчики внутренних систем Project Manager и EDU, в которых мы ведем учет рабочего времени, следим за динамикой активности в проектах, аккумулируем обучающие курсы и общаемся между собой. Одним словом, в них отражена вся жизнь компании, поэтому тех, кто над ними работает, благодарят достаточно часто, причем коллеги из разных проектов и стран.

Думаю, что полученный граф достаточно точно отражает горизонтальные связи внутри компании, но за пределами отдельных проектов и аккаунтов. Не так уж удивительно, что особое место на схеме заняли системные администраторы, но показать им ее все равно лишним не будет. Пусть не сомневаются, насколько высоко их ценят коллеги!

Граф строился на истории типсовых связей за весь период существования института Thank you points. Если же повторить такое же исследование, но уже на выборке года/полугодия, структура кластеров изменится. Наиболее крупными кластерами окажутся большие проекты, где в выбранном промежутке времени произошел успешный релиз. Остальные кластеры сформируют привычные локальные связи и благодарности менеджерам, сисадминам и учителям английского.

Могу предположить, что опыт моего небольшого исследования может быть полезен тем, кто хочет лучше понять социальную структуру внутри своего коллектива. Действительно ли коллеги хорошо относятся друг к другу? Кому они готовы часто говорить спасибо? Более того, такое исследование помогает выявлять, казалось бы, незаметных героев, которых стоит поощрить не только с помощью обычного спасибо.
Подробнее..

Кластеризация и классификация больших Текстовых данных с помощью М.О. на Java. Статья 3 АрхитектураРезультаты

24.01.2021 14:08:22 | Автор: admin

Привет, Хабр! Сегодня будет заключительная часть темы Кластеризация и классификация больших Текстовых данных с помощью машинного обучения на Java. Данная статья является продолжениемпервой и второй статьи.

Статья описывает архитектуру системы, алгоритма, а также визуальные результаты. Все детали теории и алгоритмов вы найдете в первых двух статьей.

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

Алгоритм программного обеспечение для машинного обучение состоит из 3 основных частей:

  1. обработка естественного языка;

    1. токенизация;

    2. лемматизация;

    3. стоп-листинг;

    4. частота слов;

  2. методы кластеризации ;

    1. TF-IDF ;

    2. SVD;

    3. нахождение кластерных групп;

  3. методы классификации Aylien API.

Обработка естественного языка

Алгоритм начинается с чтение любых текстовых данных. Так как система у нас электронная библиотеку, то и книги в основном в формате pdf. Реализация и детали обработки NLP можно почитать тут.

Ниже приводим сравнение при запуске алгоритмов Лемматизации и Стеммитизации:

Общее количество слов: 4173415Количество слов после приминение Лемматизации: 88547Количество слов после приминение Стеммитизации: 82294

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

characterize, design, space, render, robot, face, alisa, kalegina, university, washington, seattle, washington, grace, schroeder, university, washington, seattle, washington, aidan, allchin, lakeside, also, il, school, seattle, washington, keara, berlin, macalester, college, saint, paul, minnesota, kearaberlingmailcom, maya, cakmak, university, washington, seattle, washington, abstract, face, critical, establish, agency, social, robot, building, expressive, mechanical, face, costly, difficult, robot, build, year, face, ren, der, screen, great, flexibility, robot, face, open, design, space, tablish, robot, character, perceive, property, despite, prevalence, robot, render, face, systematic, exploration, design, space, work, aim, fill, gap, conduct, survey, identify, robot, render, face, code, term, property, statistics

а стеммитизация обрезает окончание и в некоторых случаях удаляет нужные буквы, теряя основной смысл слово:

character, design, space, render, robot, face, alisa, kalegina, univers, washington, seattl, washington, grace, schroeder, univers, washington, seattl, washington, grsuwedu, aidan, allchin, lakesid, also, il, school, seattl, washington, keara, berlin, macalest, colleg, saint, paul, minnesota, kearaberlingmailcom, maya, cakmak, univers, washington, seattl, washington, abstract, face, critic, establish, agenc, social, robot, build, express, mechan, face, cost, difficult, mani, robot, built, year, face, ren, dere, screen, great, flexibl, robot, face, open, design, space, tablish, robot, charact, perceiv, properti, despit, preval, robot, render, face, systemat, explor, design, space, work, aim, fill, gap, conduct, survey, identifi, robot, render, face, code, term, properti, statist, common, pattern, observ, data, set, face, conduct, survey, understand, peopl, percep, tion, render, robot, face, identifi, impact, differ, face, featur, survey, result, indic, prefer, vari, level, realism, detail, robot, facecharacter, design, space, render, robot, face, alisa, kalegina, univers, washington, seattl, washington, grace, schroeder, univers, washington, seattl, washington, grsuwedu, aidan, allchin, lakesid, also, il, school, seattl, washington, keara, berlin, macalest, colleg, saint, paul, minnesota, kearaberlingmailcom, maya, cakmak, univers, washington, seattl, washington, abstract, face, critic, establish, agenc, social, robot, build, express, mechan, face, cost, difficult, mani, robot, built, year, face, ren, dere, screen, great, flexibl, robot, face, open, design, space, tablish, robot, charact, perceiv, properti, despit, preval, robot, render, face, systemat, explor, design, space, work, aim, fill, gap, conduct, survey, identifi, robot, render, face, code, term, properti, statist, common, pattern, observ, data, set, face, conduct, survey, understand, peopl, percep, tion, render, robot, face, identifi, impact, differ, face, featur, survey, result, indic, prefer, vari, level, realism, detail, robot, face

Методы кластеризации

Для применения алгоритма tf-idf нужно подсчитать сколько раз слово встречается в каждом документе. Можно использовать HashMap, где ключ - слово, значение - кол-во.

После этого нужно построит матрицу документы-слова:

Далее по формуле вычисляем tf-idf:

Следующий этап, использование метода сингулярного разложение, где на вход приходит результат tf-idf. Пример выходных данных алгоритма сингулярного разложение:

-0.0031139399383999997 0.023330604746 -1.3650204652799997E-4-0.038380206566 0.00104373247064 0.056140327901-0.006980774822399999 0.073057418689 -0.0035209342337999996-0.0047152503238 0.0017397257449 0.024816828582999998-0.005195951771999999 0.03189764447 -5.9991080912E-4-0.008568593700999999 0.114337675179 -0.0088221197958-0.00337365927 0.022604474721999997 -1.1457816390099999E-4-0.03938283525 -0.0012682796482399999 0.0023486548592-0.034341362795999995 -0.00111758118864 0.0036010404917-0.0039026609385999994 0.0016699372352999998 0.021206653766000002-0.0079418490394 0.003116062838 0.072380311755-0.007021828444599999 0.0036496566028 0.07869801528199999-0.0030219410092 0.018637386319 0.00102082843809-0.0042041069026 0.023621439238999998 0.0022947637053-0.0061050946438 0.00114796066823 0.018477825284-0.0065708646563999995 0.0022944737838999996 0.035902813761-0.037790461814 -0.0015372596281999999 0.008878823611899999-0.13264545848599998 -0.0144908102251 -0.033606397957999995-0.016229093174 1.41831464625E-4 0.005181988760999999-0.024075296507999996 -8.708131965899999E-4 0.0034344653516999997

Матрицу SVD можно использовать как координаты в трехмерном пространстве.

После применение сингулярного разложение, нужно записать результат в базу данных для дальнейшей обработки. Так как уже упоминалась что выходные данные это координаты, то нужно записать эти данные в трехмерном пространстве. OrientDB поддерживает графовые базы данных, и данная поддержка и является целью использование именно OrientDB как основной базы данных. OrientDB поддерживает только двухмерные графическое пространство, но это не помешает, так как трехмерная пространство нужно только для вычислении, для графических целей можно использовать и двухмерное пространство. Все данные каждого документа хранится в объекте вершин. Данные вершины записываются в базу.

Теперь нужно применить данную операцию и для терминов, то есть слов.

Последний этап метода кластеризации найти кластерные группы. Так как у нас уже есть трехмерная пространство, где хранятся точки документов и терминов в виде вершин, то нужно соединить эти документы и слова использовав схожий метод кластеризации DBSCAN. Для определения расстояние между документом и словом используется Евклидовое расстояние. А радиус можно определить по формуле ниже. В данном примере и при тестировании используется r=0.007. Так как в пространстве находится 562 документов и более 80.000 тысяч слов, то они расположены близко. При большом радиусе алгоритм будет связывать термин и документ в один кластер, которые не должны быть в одной группе.

r=max(D)/n

где max(D) это дистанция между документом и самой дальней точкой термина, то есть максимальная дистанция документа в пространстве. n - это количество документов в пространстве

В базе данных, вершины документов и вершины слов будут связаны с помощью ребра. Вершины коричневого цвета документы, вершины розового цвета термины

После этого нужно всего лишь соединить вершины документов, которые имеют общие вершины терминов. Для соединения документов нужно чтобы общее число терминов было больше 4-х. Формула определение общего сила слов (в данном случае > nt)

nt=N/S

N это количество кластерных групп термин - документов, S это количество связей в семантическом пространстве.

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

Методы классификации Aylien API

Для классификации в инструменте Aylien API всего лишь нужно передать любой текст. API вернет ответ в виде json объекта, где внутри есть категории классификации. Можно было бы отправлять весь текст каждого документа в одной группе кластеров через API и получить категории классификации. Для примера рассмотрим 9 групп кластеров, которые состоят из статьи про ИТ технологии. Все тексты документов каждой группы записываются в массив и отправляют запрос POST через API:

String queryText = "select  DocText from documents where clusters = '" + cluster + "'";   OResultSet resultSet = database.query(queryText);   while (resultSet.hasNext()) {   OResult result = resultSet.next();   String textDoc = result.toString().replaceAll("[\\<||\\>||\\{||\\}]", "").replaceAll("doctext:", "")   .toLowerCase();   keywords.add(textDoc.replaceAll("\\n", ""));   }   ClassifyByTaxonomyParams.Builder classifyByTaxonomybuilder    = ClassifyByTaxonomyParams.newBuilder();   classifyByTaxonomybuilder.setText(keywords.toString());   classifyByTaxonomybuilder.setTaxonomy(ClassifyByTaxonomyParams.StandardTaxonomy.IAB_QAG);   TaxonomyClassifications response = client.classifyByTaxonomy(classifyByTaxonomybuilder.build());   for (TaxonomyCategory c : response.getCategories()) {   clusterUpdate.add(c.getLabel());   }

После успешного получение ответа от сервиса методам GET, данные группы обновляются:

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

Так же изучался и подход применение классификации без использования метода кластеризации. Результат очень сильно отличался. Так как если алгоритм не знает группы кластеров, то метод классификации будет классифицировать каждый документ отдельно. И предметы для каждого документа может быть различным и не обобщенным. Так для эксперимента, классифицируем каждый документ и находим предмет. Но для сравнения оставим кластерные группы, которые не будут влиять на саму классификацию:

Разработка веб-интерфейса

Цель разработки веб-интерфейса наглядный вид результата использование алгоритма кластеризации и классификации. Это дает пользователю удобный интерфейс не только увидеть сам результат, но и в дальнейшем использовать эти данные для нужд. Так же разработка веб-интерфейса показывает, что данный метод можно успешно использовать для онлайн библиотек. Веб приложение было написано с использованием Фреймворка Vaadin Flow:

В данном приложении есть следующие функции:

  • Документы, разделенные по предметам методом кластеризации и классификации.

  • Поиск по ключевым словам.

  • Поиск по хэш-тегам.

  • Весь список документов в базе данных, где есть возможность поиска по ИД документа, наименованию документа, предметам кластеров, ключевым словам и по хэш-тэгам.

  • Возможность скачивание файла.

Список документов классификации по предмету Technology & Computing:

Список документов найденные по ключевым словам:

Табличный список всех документов:

Заключение

В работе был подробно рассмотрен сама концепция машинного обучение, для понимания цели использование методов или алгоритмов машинного обучения. Подробно описаны актуальные и известные методы и алгоритмы машинного обучения для решения цели и задачи работы. Так как задачи кластеризации используется для разных областей и предметов, в данной исследовательской работе было выбрано цель автоматизация процесса классификации текстовых данных, которые считаются сложнее чем обычные задачи классификации других данных. Алгоритм описанный и разработанный в данной исследовательской работе можно применять на большие количества текстовых документов на английском языке. Хотя алгоритм не сильно подвязан на язык текста. Для использования алгоритма для других языков нужно изменить алгоритмы обработки естественного языка. Алгоритм включает в себе две основных методов: кластеризация текста и классификация групп кластеров.

Разработка алгоритма кластеризации, который включают в себе последовательное применение алгоритмов лемматизации, токенизации, стоп-листниг, tf-idf, сингулярного разложение. Первые три метода относится к методу обработки естественного языка, данные методы можно изменить под язык обрабатываемого текста. Для нахождение кластерных групп используется алгоритм на основе метода DBSCAN и использование Евклидового расстояние для определения расстояние между объектами. При исследовании было доказано что точность кластеризации зависит от отношения количества кластеров к количеству объектов в одном кластере. Количество кластеров определяется радиусом каждого документа, а количество объектов в одном кластере определяется средним количеством общих объектов, в данном случае слов или терминов. Алгоритм кластеризации описанный в работе можно использовать не только для классификации групп, а и для других целей, таких как нахождение ассоциативных правил, нахождение групп документов, которые схожи по смысловому тексту и т.д.

В результате исследование, было предложено использование NoSQL базы данных, о именно OrinetDB, который поддерживает все 4 модели NoSQL. Данный тип базы данных очень хорошо подходит для хранения результатов алгоритма кластеризации, так как данный результат является не реляционным. Стоит отметить что OrientDB очень удобен для хранения, обработки и визуализации хранимых данных.

Для классификации кластерных используется Aylien API, который использует подход классификации по таксономии и на базе кодов. В результате исследовании кластерные группы были разделены по предметным областям, который включает в себя более 100 контентной категории. Данный метод можно заменить и другими, более специфическими алгоритмами машинного обучение, таких как метод опорных векторов, метод k-ближайших, нейронную сеть. Но так как данные методы требуют большое количество данных который используется для построения модели, в данной работе было использована готовая модель классификации.

Подробнее..

Кластерный анализ каждому

19.01.2021 20:18:31 | Автор: admin

Если вы полагаете, что фундаментальные исследования всегда скучны и с трудом находят применение на практике, то прочитайте эту статью. Старший научный сотрудник нашей лаборатории Сергей Муравьев, занимающийся автоматизацией решения задач кластеризации, рассказывает о собственном проекте, у которого, кажется, есть всё, что только можно пожелать: научная фундаментальность, хитрые задачи на пути к цели, а также впечатляюще широкие возможности применения.

Источник изображения: commons.wikimedia.orgИсточник изображения: commons.wikimedia.org

Почему это круто

Кластерный анализ неформально можно определить как разбиение множества объектов так, чтобы похожие объекты попали в одно и то же подмножество, а объекты из разных подмножеств существенно различались. От обычной классификации по заданным признакам кластерный анализ отличается тем, что не алгоритм, а человек выявляет критерий кластеризации данных. Эта задача относится к классу обучения без учителя (англ. unsupervised learning), так как размеченного набора данных или какой-то заведомо известной информации о нём не предоставляется.

У задачи кластеризации нет общепризнанного математически корректного определения. Дело в количестве разнообразных применений: в маркетинге для сегментирования целевой аудитории, в медицине для классификации болезней, в рекомендательных системах при организации баз данных для поисковых запросов, при изучении социальной стратификации, для сегментирования изображений и распознавания образов, при обнаружении и сегментации артефактов различных периодов в археологии и много ещё для чего.

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

Сравнение применения алгоритмов с параметрами по умолчанию и с настроенными гиперпараметрами.Сравнение применения алгоритмов с параметрами по умолчанию и с настроенными гиперпараметрами.

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

Как определить меру качества

Ключевая сложность, с которой пришлось столкнуться в процессе исследования, состояла в том, чтобы понять, как корректно подобрать меру качества, по которому сравниваются возможные решения. Эту сложность получилось преодолеть с помощью рекомендации меры качества разбиения для каждой задачи на основе принципа мета-обучения.

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

Таким образом удалось разработать методологию визуальной оценки мер на основе визуальной оценки разбиений и сведении задачи предсказания такой оценки для новых наборов данных к задаче классификации в пространстве мета-признаков, описывающих поставленную задачу кластеризации. Далее расскажу об этом подробнее.

Сравниваем разбиения

Берём алгоритмы кластеризации и применяем их к набору данных. Полученные разбиения можно оценивать как адекватные или неадекватные, а ещё можно проводить сравнения разбиений друг с другом, чтобы определить лучшие. На рисунке ниже приведён пример сравнения различных разбиений примитивного набора данных с точки зрения адекватности, а также с точки зрения сравнения разбиений друг с другом. Чем выше на рисунке расположено разбиение, тем оно лучше с точки зрения попарного сравнения с другими разбиениями.

Пример возможного сравнения разбиений с точки зрения визуального восприятия.Пример возможного сравнения разбиений с точки зрения визуального восприятия.

Сравниваем меры качества

Основываясь на критериях оценки качества кластеризации с точки зрения визуального восприятия, я ввёл два критерия мер качества критерий адекватности и критерий ранжирования.

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

Критерий ранжирования R нормированная функция расстояния между ранжированием разбиений, задаваемым мерой качества, и агрегированным ранжированием разбиений, задаваемым оценками на основе визуального восприятия. Область значения данной функции: [0, 1]; чем значение функции ближе к 0 , тем рассматриваемая мера качества лучше.

Для наглядности давайте рассмотрим пример с собранным мною набором данных из двухсот двумерных наборов данных 2D-200. Для каждого набора данных из 2D-200 были сформированы 14 разбиений. Эти разбиения были оценены пятью асессорами и девятнадцатью мерами качества. В итоге на наборе данных 2D-200 выявлены лучшие меры качества с точки зрения критериев Adq иR.Затем для каждой меры по всем элементам из 2D-200 были вычислены следующие величины:

BestCVI_{Adq} соотношение числа раз, когда мера отвечала критерию адекватности Adq к общему числу экспериментов;

BestCVI_R соотношение числа раз, когда мера была лучшей с точки зрения критерия ранжирования R к общему числу экспериментов.

Значения BestCVI_{Adq} и BestCVI_R для всех мер качества на наборе данных наборов данных 2D-200 представлены в таблице ниже.

Мера

BestCVI_{Adq}

BestCVI_R

Мера

BestCVI_{Adq}

BestCVI_R

DB

0,630

0,000

Sym

0,565

0,123

Dunn

0,665

0,038

CI

0,385

0,006

Silhouette

0,665

0,058

DB*

0,695

0,000

CH

0,675

0,058

gD31

0,730

0,064

S_Dbw

0,640

0,000

gD41

0,735

0,155

SymDB

0,675

0,045

gD51

0,650

0,012

CS

0,475

0,006

gD33

0,715

0,129

COP

0,035

0,000

gD43

0,695

0,168

SV

0,450

0,071

gD53

0,585

0,003

OS

0,035

0,253

Из таблицы видно, что ни одна рассмотренная мера не претендует на универсальность по введенным критериям, а значит, меру качества нужно рекомендовать для каждого набора данных отдельно.

Однако эффективная рекомендация из девятнадцати мер качества требует значительно большего числа наборов данных, чем представлено в 2D-200. Поэтому я построил множество из четырех самых лучших мер с точки зрения AvgCVI_R среднего значения, вычисляемого на основе критерия ранжирования мер: мера Silhouette, мера Calinski-Harabasz, мера gD41 и мера OS. В таблице приведены значения AvgCVI_R для всех исследованных мной внутренних мер качества.

Мера

AvgCVI_R

Мера

AvgCVI_R

gD41

\mathbf{0,312}

gD53

0,442

gD43

0,314

S_Dbw

0,501

gD33

0,317

Dunn

0,517

OS

\mathbf{0,342}

gD51

0,614

CH

\mathbf{0,369}

CI

0,647

Silhouette

\mathbf{0,370}

CS

0,763

SV

0,370

DB

0,800

Sym

0,380

COP

0,808

gD31

0,380

DB*

0,819

SymDB

0,410

Классификатор, который рекомендует меру качества

Всякий раз производить данные вычисления довольно ресурсозатратно. Можно упростить задачу рекомендации меры качества, если свести её к задаче классификации. И я решил построить классификатор, который для нового набора данных предсказывает, какая из рассматриваемых мер качества будет лучше с точки зрения агрегированных оценок асессоров, если бы они действительно проходили описанный выше тест для этого набора данных. В качестве классификатора я использовал алгоритм случайного леса, который выбрал экспериментально, и который показывает качество классификации F_1 = 0,855. Интересно, что разработанный мета-классификатор сам по себе выступает новой мерой качества, назовём её Meta-CVI.

Как подобрать алгоритм

После того как мера качества известна, я определил два способа получения конечного разбиения, а именно построение эвристического или эволюционного алгоритмов кластеризации. В эвристических алгоритмах содержится неизменяемый критерий качества выстраиваемого разбиения, в эволюционных же критерий качества является гиперпараметром алгоритма. Гиперпараметры это параметры, значения которых задаются до начала обучения, не изменяются в процессе обучения и не зависят от заданного набора данных. Примерами эвристических алгоритмов служат такие алгоритмы, как k-Means, иерархический алгоритм и DBSCAN. Эволюционные алгоритмы осуществляют непосредственный поиск в пространстве возможных разбиений с целью найти оптимальное по задаваемой в качестве параметра мере качества.

Эвристические алгоритмы

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

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

В задаче о многоруком бандите рассматривается агент, тянущий за ручки тотализатора, с каждой из которых связано некоторое неизвестное распределение награды. Каждый ход агент выбирает ручку и получает случайную награду из связанного с ней распределения. Цель агента максимизировать полученную за несколько итераций награду.

Давайте формализуем задачу. Пусть задан некоторый временной бюджет T на поиск лучшего алгоритма A. Требуется разбить его на интервалы T = t_1 + t_2 + . . . + t_m таким образом, что при запуске процессов \pi_j с ограничением по времени t_i получается значение меры качества Q такое, что:

Q(A_{\lambda_j}^{j}) \xrightarrow{(t_1, t_2, \ldots, t_m)} \min_j,

гдеA^j \in A, \lambda = \pi(t_i, A^j, \emptyset),и t_1 + \ldots + t_m = T, t_i \geq 0 \: \forall i.

В этом случае каждой ручке бандита соответствует определённая модель алгоритма кластеризации из конечного множества A вызову ручки i на итерации k процесс оптимизации гиперпараметров этой модели в течение времени t_k. В результате будет достигнуто качество кластеризацииQ(A_{\lambda_i}^{i}, D).

Качество кластеризации определяется с помощью меры, оно и задает награду, получаемую по завершении итерации.

Иллюстрация работы метода выбора и настройки эвристического алгоритма MASSCAH представлена на рисунке ниже:

Эволюционные алгоритмы

Одним из ключевых аспектов работы эволюционных алгоритмов является вычисление функции приспособленности. В нашем случае это внутренняя мера оценки разбиения. Важно научиться быстро её перерасчитывать, если структура кластеров изменилась. Переформулировать задачу можно так: пусть точка x_{id} переместилась из кластера C_a в кластер C_b.

Каким образом можно инкрементально (то есть соответственно каждой новой конфигурации кластеров) перечитывать значение меры вместо того, чтобы вычислять его заново? Поскольку не для всех мер возможен точный инкрементальный перерасчёт за время, меньшее чем полный пересчет, я пересчитывал значение меры приблизительно, когда это невозможно сделать точно.

Основная идея состоит в том, чтобы сохранить большинство подсчитанных расстояний между элементами набора данных или расстояний между центроидами кластеров и элементами набора данных. Большинство внутренних мер качества разбиений используют расстояния между элементами, а также расстояния между элементами и центроидами кластеров. Объекты обычно описываются некоторым n -мерным векторным пространством. Соответственно, центроидом кластера будет являться центр масс объектов в векторном пространстве, входящих в кластер. В таблице приведены сложностные оценки для полного и инкрементального подсчёта девятнадцати используемых в исследовании внутренних мер. Из таблицы видно, что асимптотическая сложность инкрементального пересчёта всех внутренних мер лучше, чем полный их пересчёт.

Мера

Полный пересчёт

Инкрементальный пересчёт

Точность пересчёта

Dunn

\mathcal{O}(n^2)

\mathcal{O}(n)

точный пересчёт

CH

\mathcal{O}(n^2 \log(n))

\mathcal{O}(n)

аппроксимация

CI

\mathcal{O}(n \log(n))

\mathcal{O}(n)

аппроксимация

DB

\mathcal{O}(n \log(n))

\mathcal{O}(n)

аппроксимация

Sil

\mathcal{O}(n^2)

\mathcal{O}(n)

точный пересчёт

gD31

\mathcal{O}(n^2)

\mathcal{O}(n)

точный пересчёт

gD33

\mathcal{O}(n^2)

\mathcal{O}(n)

аппроксимация

gD41

\mathcal{O}(n^2)

\mathcal{O}(n)

аппроксимация

gD43

\mathcal{O}(n^2)

\mathcal{O}(n)

аппроксимация

gD51

\mathcal{O}(n^2)

\mathcal{O}(n)

аппроксимация

gD53

\mathcal{O}(n \log(n))

\mathcal{O}(n)

аппроксимация

CS

\mathcal{O}(n^2)

\mathcal{O}(n)

аппроксимация

DB*

\mathcal{O}(n \log(n))

\mathcal{O}(n)

аппроксимация

Sym

\mathcal{O}(n^2)

\mathcal{O}(n)

аппроксимация

SymDB

\mathcal{O}(n^2)

\mathcal{O}(n)

аппроксимация

COP

\mathcal{O}(n^2)

\mathcal{O}(n)

аппроксимация

SV

\mathcal{O}(n^2)

\mathcal{O}(n)

аппроксимация

OS

\mathcal{O}(n^2 \log(n))

\mathcal{O}(n)

аппроксимация

S_Dbw

\mathcal{O}(n \log(n))

\mathcal{O}(n)

аппроксимация

Для эволюционных алгоритмов важен выбор стратегии, операций кроссовера и мутаций на каждой итерации. Анализируя работы различных эволюционных алгоритмов, я выяснил, что качество получаемого разбиения зависит в основном от выбираемых мутаций. Поэтому из нескольких тестируемых решил использовать самую эффективную по времени (1 + 1)стратегию, в которой на каждой итерации равновероятно выбирается одна из мутаций. Таким образом, нужно проводить лишь настройку (1 + 1) стратегии, а именно выбор используемых мутаций для решаемой задачи кластеризации.

Эволюционный алгоритм кластеризации (1+1).Эволюционный алгоритм кластеризации (1+1).

Принимая во внимание эту особенность, я придумал мета-классификатор, рекомендующий список мутаций для решаемой задачи кластеризации. По всем запускам алгоритма с равновероятно выбираемыми мутациями для каждого из используемых набора данных я посчитал степень полезности каждой мутации. Для каждого запуска алгоритма построил распределение, которое показывало, какое число раз та или иная мутация давала прирост с точки зрения функции приспособленности на каждой итерации. Потом я взял пять лучших мутаций и построил бинарный вектор, где лучшим мутациям соответствовала 1, а остальным 0 . Мета-признаковое описание каждого набора данных аналогично тому, которое использовалось мной для построения классификатора, предсказывающего меру качества. Таким образом был построен мета-классификатор, позволяющий для каждого набора данных рекомендовать набор мутаций, который нужно использовать в(1 + 1)алгоритме.

Ниже представлена таблица числа запусков алгоритма (1+1) с автоматизацией и без неё, сгруппированная по оптимизируемым мерам качества. Хуже и не хуже означает, что автоматизированный алгоритм, соответственно, отстаёт либо не отстаёт от алгоритма без автоматической настройки параметров по качеству разбиений; t_a, t_p среднее время работы алгоритма с автоматизацией и без неё соответственно.

Calinski-Harabasz

OS

gD41

Silhouette

хуже

не хуже

хуже

не хуже

хуже

не хуже

хуже

не хуже

t_p>t_a

1

6

2

46

2

32

4

15

t_p<t_a

18

72

5

44

16

47

20

58

Сравнение алгоритмов

Интересно сравнить алгоритм на основе выбора и настройки эвристических алгоритмов кластеризации MASSCAH с алгоритмом настройки эволюционного (1+1) алгоритма кластеризации.

Я предположил, что два алгоритма получают одинаковые значения меры качества, если интервалы этих значений [ - , + ] пересекаются. То есть была использована квантиль уровня 84,13\% для нормального распределения. Временной бюджет алгоритма, запускаемого на определённых мере и наборе данных, задавался равным среднему времени работы автоматизированного эволюционного алгоритма на этих мере и наборе данных. Я запустил алгоритмы со всеми отобранными ранее четырьмя мерами качества: Silhouette, Calinski-Harabasz, gD41 и OS. Для каждой пары мера набор данных производилось 10 запусков алгоритма. Полученные количества удачных и неудачных запусков приведены в таблице ниже.

Число положительных и отрицательных результатов сравнений алгоритмов на базе метода выбора и настройки эвристического алгоритма кластеризации на основе обучения с подкреплением, сгруппированные по мере качества разбиений. Столбец MASSCAH > Evo соответствует случаям, когда качество эволюционного алгоритма оказалось хуже, чем алгоритма на базе обучения с подкрепление, MASSCAH Evo что качества сравнимы, MASSCAH < Evo разработанный алгоритм опережает существующий результат.

MASSCAH > Evo

MASSCAH \approx Evo

MASSCAH < Evo

Мера CH

11

50

36

Мера OS

9

65

23

Мера Silhouette

12

72

13

Мера gD41

4

76

17

Все меры

36

263

89

Мера Meta-CVI

13

68

16

Можно заметить, что успешность эволюционного алгоритма зависит от используемой меры, но по общему числу запусков он сравним с предложенным методом выбора и настройки гиперпараметров эвристического алгоритма кластеризации. Отдельно стоит заметить, что эволюционный алгоритм кластеризации с автоматически настраиваемыми параметрами опережает таковой без автоматической настройки параметров по измеренным характеристикам независимо от меры, однако при этом его производительность по сравнению с разработанным методом на основе обучения с подкреплением зависит от выбора меры оценки качества разбиения. Кроме того, расчёт числа удачных и неудачных запусков производился для предложенной мной меры Meta-CVI.

Как применить всё это на практике

После того как была определена мера качества, построены и оценены алгоритмы кластеризации, я решил объединить всё это в систему и разработать такой программный комплекс, который бы реализовал данные алгоритмы и позволял осуществлять оптимальное разбиение для данной задачи по выбранной мере качества.

Схема описания работы программного комплекса.Схема описания работы программного комплекса.

Этот программный комплекс состоит из нескольких пакетов. Пакет CVI_Predictor реализует алгоритм предсказания меры для конкретной задачи кластеризации на основе мета-обучения. Пакет RL_Clustering реализует различные алгоритмы на базе представленного в работе метода выбора и настройки эвристического алгоритма кластеризации. Пакет Evo_Clustering реализует эволюционный алгоритм кластеризации с параметрами, настраиваемыми при помощи мета-обучения. Пакет Incremental_CVI реализует инкрементальное вычисление мер качества разбиений. Весь комплекс можно скачать на GitHub.

Разработанную система автоматического выбора и оценки алгоритмов кластеризации и их параметров я защитил в рамках своей кандидатской диссертации в декабре 2019 года. Автореферат и диссертацию можно почитать здесь.

На сегодняшний день система автоматического выбора и оценки алгоритмов кластеризации и их параметров была успешно использована в рамках государственного задания 2.8866.2017/8.9 Технология разработки программного обеспечения систем управления ответственными объектами на основе глубокого обучения и конечных автоматов. В рамках этого задания решалась задача нахождения формальной грамматики по некоторому конечному списку слов, которые принадлежат некоторому неизвестному формальному языку. В частности, была решена важная подзадача разметки слов-примеров, по которым строится грамматика при помощи рекуррентных нейронных сетей.

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

Помимо этого, программный комплекс был применён для разработки рекомендательной системы выбора научного руководителя и темы исследования для абитуриентов Университета ИТМО.

В планах разработка полноценной библиотеки, реализующей алгоритмы выбора и оценки алгоритмов кластеризации и их параметров. Кроме того, в будущем планируется дальнейшее исследование задачи кластеризации, а именно вопросов кластеризуемости наборов данных, описывающих каждую задачу. И я был бы рад пополнению в наших рядах сильных в техническом плане и амбициозных студентов.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru