Маркетинговая платформа анализа данных сайта stackexchange.com
Обоснование созданной платформы
Обоснование созданной платформы: в настоящее время системы анализа данных получили широкое распространение:
- Корпорации всё большее внимание уделяют анализу своей деятельности с целью оптимизации бизнеса, снижения расходов и, как следствие, повышения прибыли.
- Снижение стоимости хранения данных приводит к тому, что данные не удаляются, а сохраняются в архивы. Эта тенденция позволяет осуществлять анализ всё больших и больших объёмов сохранённых данных.
- Снижается стоимость вычислительных ресурсов, в том числе предоставляемых через облачные сервисы. При этом нет необходимости в покупке, поддержке и обновлении своих вычислительных систем. Данная тенденция облегчает выход на рынок систем анализа и обработки данных.
Требования к системе:
- Возможность масштабирования для сколь угодно больших объёмов данных без необходимости переработки алгоритмов.
- При работе системы не должно приостанавливаться функционирование приложения, данные которого анализируем.
- Качественная визуализация полученных результатов.
- Возможность системы хранить результаты анализа, что позволяет организовать быстрый поиск по результатам.
- Возможность развёртывания системы в облачной среде Amazon Web Services.
Краткое описание проекта
Сайт stackexchange.com — это растущая сеть сообществ по интересам, обменивающихся между собой информацией по различным направлениям. Цель ресурса — сбор качественных вопросов и ответов на основе опыта каждого сообщества. Сайт вопросов-ответов stackexchange.com по своей сути является динамическим источником знаний. Поскольку сообщество наполняет сайт информацией ежедневно, сайт можно считать слепком актуальных знаний на сегодняшний день.
Интерес к структурированию информации и получению общей картины может возникать во многих случаях:
- Я, как производитель комплектующих для велосипедов, делаю маркетинговое исследование: какие вопросы наиболее волнуют людей и какие недостатки они обсуждают в комплектующих. Я хочу это использовать для улучшения продукции, либо как упор для рекламной компании.
- Я хочу написать книгу по заданной тематике, например Иудейство. Помимо анализа литературных источников меня интересует, какие вопросы наиболее обсуждаемы, чтобы на них ответить в своей книге.
- Я, журналист тематического ресурса, хочу знать актуальные обсуждаемые вопросы и писать полезные обзорные статьи, которые бы привлекали большое внимание и увеличивали популярность моего ресурса.
Технологии и платформы
Big data analyses: Apache Hadoop, Apache Mahout (machine learning library)
Cloud services: Amazon Elastic Map Reduce, Amazon S3, Amazon EC2 (for databases and web applications)
Databases: Neo4j graph database, MongoDB cluster
Java and Web technologies: core Java, Map-Reduce API, Struts 2, AngularJS, D3.js visualization library, HTML, CSS, Twitter bootstrap
Unit-testing: JUnit, MRUnit, Approval tests for Map-Reduce
Архитектура платформы
Расчёт данных:
Источником данных является дамп stackexchange.com. Для обработки данных используется кластер вычислительных машин, в зависимости от объёма обрабатываемых данных количество машин может быть изменено. Система была задеплоена в облако Amazon, использовался сервис Amazon Elastic Map Reduce, предоставляющий Hadoop-кластеры по требованию.
Поверх вычислительных машин развёрнута распределённая файловая система HDFS. Данная система позволяет хранить файлы большого размера одновременно на нескольких машинах, а также выполнять репликацию данных. Поверх HDFS развёрнут фреймворк Apache Hadoop, который позволяет запускать распределённые вычисления в кластере, пользуясь локальностью данных. Поверх кластера вычислительных машин и фреймворка Apache Hadoop расположено приложение для анализа данных, которое содержит реализованные алгоритмы подготовки, обработки и анализа данных. Приложение использует библиотеку алгоритмов машинного обучения Apache Mahout.
Для всех сайтов stachexchange.com данные представлены в едином XML-формате: вопросы, ответы, комментарии, данные пользователей, рейтинги и многое другое.
Алгоритм обработки и анализа данных stackexchange.com:
- Подготовка данных для анализа.
- Преобразование текста в векторную форму.
- Кластеризация вопросов.
- Интерпретация результатов.
Подготовка данных:
Алгоритм предобработки текста выглядит следующим образом:
- Выделение из текста токенов (слов), разделённых пробелом.
- Приведение текста к нижнему регистру.
- Удаление частоупотребимых слов, не несущих смысловой нагрузки, таких как «what», «where», «how»,»when», «why», «which», «were», «find», «myself», «these», «know»,»anybody»…
- Удаление слов, не входящих в рамки по длине.
- Приведение слов в начальную форму, отбрасывание окончаний, падежей, суффиксов и так далее. Для приведения слов в начальную форму удобно использовать алгоритм Стеммера Портера.
Кластеризация:
Кластеризацией, или неконтролируемой классификацией текстовых документов, называется процесс распределения множества текстовых документов по группам на основании схожести их содержания. Группы также должны определяться автоматически. Традиционно в качестве модели документа используется линейное векторное пространство. Каждый документ представлялся как вектор, то есть массив всех и наиболее часто встречающихся слов. Затем для расчета используется, например, евклидово расстояние. Векторное представление представляет собой массив всех или наиболее часто используемых слов документа или n-граммов, то есть последовательностей нескольких слов. Для векторизации был выбран алгоритм TF-IDF, так как он учитывает частоту слов относительно всего набора данных и позволяет уменьшить вес частоупотребимых слов, и, наоборот, увеличить вес уникальных слов для каждого вопроса.
Распределённая версия алгоритма кластеризации К-средних выглядит следующим образом:
- Выбирается k случайных точек как центры кластеров.
- Данные распределяются равномерно по машинам вычислительного кластера.
- Каждая машина итеративно обходит все объекты и вычисляет расстояние до ближайшего центра кластера. На выходе записываются пары объект-кластер.
- Объекты группируются по новым назначенным кластерам, перераспределяются по вычислительным машинам.
- Каждая машина итеративно обходит пары объект-кластер и пересчитывает центры кластеров.
- Вычисляется смещение нового центра кластера относительно предыдущего.
- Алгоритм повторяется, пока смещение кластеров не станет меньше заданной величины, либо пока не выполнится заданное количество итераций.
Хранение данных:
Результаты анализа хранятся в нескольких базах данных: граф-ориентированной Neo4j и документно-ориентированной MongoDB. Это позволит эффективно хранить структуру и взаимосвязи объектов в виде графа, в то же время хранить содержание объектов — текстов вопросов в виде документов.
Серверы баз данных были развёрнуты в облаке Amazon, использовался сервис Amazon EC2.
Визуализация и перемещение данных:
Отображение результатов в виде схем, графиков и диаграмм выполняет web-приложение. Для перемещения данных в HDFS предусмотрен сервер миграции. После обработки данных результаты сохраняются в HDFS. Для их добавления в базы данных предусмотрена специальная утилита импорта, которая работает поверх Map-Reduce.
На протяжении работы системы поступают обновления данных. При каждом обновлении нет нужды всякий раз переносить все данные снова в HDFS и запускать снова дорогостоящие вычисления. Для решения этой проблемы предусмотрен Redis — база данных, работающая в памяти с высоким быстродействием. Сервер миграции копирует данные информационной системы и сохраняет хеш-ключ каждой записи. При повторной загрузке данных в HDFS сервер миграции проверяет, не была ли текущая запись загружена ранее, выполняя запрос в базу данных, работающую в памяти.
Для отображения результатов было реализовано web-приложение. Серверная часть приложения реализована на языке Java и выполняет запросы к граф-ориентированной и документно-ориентированной БД. Клиентская часть реализована с применением технологий JavaScript (AngularJS, JQuery) и HTML, CSS, Twitter bootstrap.

Объем данных, обработанных системой:
Объект | Объём архива 7z | Объём распакованных данных |
Дамп всех данных сайта stackexchange.com | ~15,7 ГБ | ~448 ГБ |
Данные сайта stackoverflow.com | ~12,1 ГБ | ~345 ГБ |
Данные сайта serverfault.com | ~303 МБ | ~8,6 ГБ |
Результат проекта
Разработанная платформа позволяет выполнить анализ данных сайта stackexchagne.com и увидеть общую картину содержимого сайта. Система выполняет сбор и загрузку исходных данных, подготовку их к обработке, кластеризацию, а также хранение и интерпретацию результатов анализа. В результате разработки системы были решены задачи сбора и загрузки исходных данных, хранение данных на множестве машин, а также защиты от сбоя в случае выхода из строя одного их жёстких дисков, подготовки данных к обработке с применением фильтрации векторизации, обработки данных на кластере из множества машин, хранения и интерпретации результатов. Большое преимущество даёт использование облачных сервисов Amazon так как они избавляют от необходимости настраивать всю инфраструктуру вручную.
Достижения компании на проекте
- Была освоена и внедрена библиотека машинного обучения Apache Mahout.
- Успешно внедрена граф-ориентированная база данных Neo4j.
- Разработана серия Map-Reduce задач для предобработки данных.
- Подобраны оптимальные коэффициенты для алгоритмов машинного обучения.
Свяжитесь с нами, чтобы обсудить Ваш IT-проект