машинное обучение
December 20, 2019

Кластеризация (машинное обучение на вооружении у аналитика)

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

Для начала я организовал регулярный сбор таких данных из различных rss источников с последующей загрузкой в документную базу данных Elasticsearch. Для справки, сбор осуществляет родственный ей модуль Logstash с дополнительно установленным плагином ввода rss. Это что касается предварительной работы. В последующем по запросу из этой базы можно выгрузить любые интересующие материалы и подвергнуть их машинному анализу. Результат зависит от многих факторов, среди которых выбранный алгоритм кластеризации, количество групп разбиения, заданные меры близости, форма представления текста (код пишу на языке Python). Единственно верного пути нет, более высокое качество зачастую достигается путем перебора и сравнения разных подходов. Вместе с тем каждый из них хорош по-своему и в большей или меньшей степени позволяет извлечь важную информацию из загруженных данных.

Приведу недавний пример. Я проанализировал вышеуказанным способом новости с сайта www.ekhokavkaza.com (радио «Эхо Кавказа») за период с конца июня по декабрь 2019 г. (всего около 1100 сообщений, использовал алгоритм K-средних с 10 кластерами, в качестве меры близости между документами задал косинусное расстояние и метрику TF-IDF для оценки важности слов). Кроме того, полученные группы папок новостей я разбил по важности в соответствии с количеством общих слов, имеющихся у большинства документов кластера, и интервалом публикации новостей (чем он больше, тем результат релевантнее, так как итоговая картина будет полнее, более того растянутую по времени связь самостоятельно человеку ухватить сложнее). Часть получившихся результатов показана на следующем изображении:

На следующем изображении представлены файлы из первой папки. Документ с именем «merge.txt» является служебным и создан для удобства анализа, так как объединяет содержание всех материалов кластера.

В большинстве представленных документов речь идет об урегулировании конфликта на юго-востоке Украины в соответствии с предложенной президентом Германии Франком-Вальтером Штайнмайером формулой «Штайнмайера». Его инициатива подразумевает одновременное принятие Верховной радой Украины поправок в Конституцию, по которым Донбасс получит особый статус, и проведение там выборов.

Примечательно то, что в один кластер с новостями на украинскую тематику попали материалы, содержащие сведения о визите указанного чиновника в октябре 2019 г. в Грузию, посещении границы с Южной Осетией и обсуждении ситуации в зоне конфликта с немецкими представителями Миссии наблюдателей ЕС. Также в одной из новостей упоминается о предложенном более 11 лет назад плане Франка-Вальтера Штайнмайера по урегулированию грузино-абхазского конфликта, который был отвергнут Сухумом.

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

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

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

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