Как стать автором
Обновить

Кластерный анализ на Python

Чулан
Замечательная книга «Программируем коллективный разум» вдохновила меня на написание этого поста по ее мотивам на тему кластерного анализа.

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

Код примера основан на коде примеров из книги.
Читать дальше →
Всего голосов 17: ↑16 и ↓1 +15
Просмотры 13K
Комментарии 0

Обзор алгоритмов кластеризации данных

Data Mining *
Приветствую!

В своей дипломной работе я проводил обзор и сравнительный анализ алгоритмов кластеризации данных. Подумал, что уже собранный и проработанный материал может оказаться кому-то интересен и полезен.
О том, что такое кластеризация, рассказал sashaeve в статье «Кластеризация: алгоритмы k-means и c-means». Я частично повторю слова Александра, частично дополню. Также в конце этой статьи интересующиеся могут почитать материалы по ссылкам в списке литературы.

Так же я постарался привести сухой «дипломный» стиль изложения к более публицистическому.
Читать дальше →
Всего голосов 82: ↑78 и ↓4 +74
Просмотры 368K
Комментарии 41

Кто кого читает в ЖЖ — анализ пересечения аудиторий топовых блоггеров

Социальные сети и сообщества

Начало


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

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

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

Забегая вперед скажу: социальный граф русского ЖЖ в моем исследовании имеет 2,08 млн. вершин и 58,05 млн. дуг. Интересно? Тогда под катом довольно много букв, цифр и картинок.

Читать дальше →
Всего голосов 124: ↑117 и ↓7 +110
Просмотры 1.7K
Комментарии 33

Обзор алгоритмов кластеризации числовых пространств данных

Data Mining *Алгоритмы *
Из песочницы
Задача кластеризации – частный случай задачи обучения без учителя, которая сводится к разбиению имеющегося множества объектов данных на подмножества таким образом, что элементы одного подмножества существенно отличались по некоторому набору свойств от элементов всех других подмножеств. Объект данных обычно рассматривается как точка в многомерном метрическом пространстве, каждому измерению которого соответствует некоторое свойство (атрибут) объекта, а метрика – есть функция от значений данных свойств. От типов измерений этого пространства, которые могут быть как числовыми, так и категориальными, зависит выбор алгоритма кластеризации данных и используемая метрика. Этот выбор продиктован различиями в природе разных типов атрибутов.

В этой статье приведён краткий обзор методов кластеризации числовых пространств данных. Она будет полезна тем, кто только начинает изучать Data Mining и кластерный анализ и поможет сориентироваться в многообразии современных алгоритмов кластеризации и получить о них общее представление. Статья не претендует на полноту изложения материала, напротив, описание алгоритмов в ней максимально упрощено. Для более подробного изучения того или иного алгоритма рекомендуется использовать научную работу, в которой он был представлен (см. список литературы в конце статьи).
Читать дальше →
Всего голосов 45: ↑41 и ↓4 +37
Просмотры 38K
Комментарии 10

Простейшая кластеризация изображени методом к-средних (k-means)

C++ *Обработка изображений *
Из песочницы
Tutorial
Зачастую при поиске движущихся объектов на видео будь то методом вычитания фона, временной разности, оптического потока, в итоге мы получаем множество точек, которые после действия вышеупомянутых алгоритмов помечены как изменившие свое положение относительно предыдущего кадра и относящиеся к переднему плану.

image

После такой обработки встает вопрос о сегментации объектов методом кластерного анализа, о котором пойдет речь ниже и собственно его реализация на C++.
Читать дальше →
Всего голосов 37: ↑35 и ↓2 +33
Просмотры 79K
Комментарии 23

Система персонализации News360: ранжирование кластеров информации

Data Mining *
Когда система рекомендаций работает с большим количеством контента, основной задачей становится не фильтрация этого контента, а его ранжирование. Если говорить о новостях — каждый день выходят сотни тысяч статей, тысячи из которых могут затрагивать интересы каждого человека, читающего новости. Но в основном пользователи не читают больше 5-10 статей в день (по данным News360). Какие статьи показать первыми?

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

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

News360 - Everything you want to read

Читать дальше →
Всего голосов 23: ↑20 и ↓3 +17
Просмотры 8.8K
Комментарии 13

Кластерный анализ (на примере сегментации потребителей) часть 1

Data Mining *Big Data *
Перевод
Tutorial
Мы знаем, что Земля – это одна из 8 планет, которые вращаются вокруг Солнца. Солнце – это всего лишь звезда среди порядка 200 миллиардов звезд в галактике Млечный Путь. Очень тяжело осознать это число. Зная это, можно сделать предположение о количестве звезд во вселенной – приблизительно 4X10^22. Мы можем видеть около миллиона звезд на небе, хотя это всего лишь малая часть от всего фактического количества звезд. Итак, у нас появилось два вопроса:
  1. Что такое галактика?
  2. И какая связь между галактиками и темой статьи (кластерный анализ)

image
Читать дальше →
Всего голосов 9: ↑6 и ↓3 +3
Просмотры 46K
Комментарии 4

Визуализация клонов в проекте на Python

Python *Совершенный код *

Недавно в нашем проекте потребовалось настроить мониторинг качества кода. Качество кода — понятие субъективное, однако давным-давно придумали множество метрик, позволяющих провести мало-мальски количественный анализ. К примеру, цикломатическая сложность или индекс поддерживаемости (maintainability index). Измерение подобного рода показателей — обычное дело для языков вроде Java или C++, однако (складывается впечатление) в питоньем сообществе редко когда кто-то об этом задумывается. К счастью, существует замечательный radon с xenon-ом, который быстро и качественно вычисляет упомянутые выше метрики и даже некоторые другие. Конечно, для профессиональных enterprise инструментов маловато, но все необходимое присутствует.

Кроме вычисления метрик, бывает также полезно провести анализ зависимостей. Если в проекте задекларирована архитектура, то между отдельными частями должны существовать определенные связи. Самый частый пример: приложение построено вокруг библиотеки, предоставляющей API, и весьма нежелательно выполнять действия в обход этого API. Другими словами, нехорошо ioctl-ить в ядро когда libc есть. Для питона есть несколько пакетов, строящих граф зависимостей между модулями, и snakefood показался мне самым удачным.

Помимо анализа зависимостей, не менее полезно определять копипасту, особенно, если в проекте задействованы джуниоры или другие люди, любящие «срезать углы болгаркой». Об этом собственно и пойдет речь в статье.
clonedigger
Всего голосов 17: ↑16 и ↓1 +15
Просмотры 9.1K
Комментарии 4

Визуализация результатов латентно-семантического анализа средствами Python

Python *Математика *Разработка под Windows *

Постановка задачи


Семантический (смысловой) анализ текста – одна из ключевых проблем как теории создания систем искусственного интеллекта, относящаяся к обработке естественного языка (Natural Language Processing, NLP), так и компьютерной лингвистики. Результаты семантического анализа могут применяться для решения задач в таких областях как, например, психиатрия (для диагностирования больных), политология (предсказание результатов выборов), торговля (анализ востребованности тех или иных товаров на основе комментариев к данному товару), филология (анализ авторских текстов), поисковые системы, системы автоматического перевода. Поисковая машина Google полностью построена на семантическом анализе.

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

Анализ публикаций в сети по латентно семантическому анализу (LSA) показывает, что визуализация результатов анализа приведена только в двух публикациях [1,2] в виде двух координатного графика семантического пространства с нанесенными координатами слов и документов. Такая визуализация не позволяет однозначно определить группы близких документов и оценить уровень их смысловой связи по принадлежащим документам словам. Хотя в моей публикации под названием “Полный латентно семантический анализ средствами Python” [1] предпринималась попытка использования кластерного анализа результатов латентно семантического анализа, однако были определены только метки кластеров и координаты центроидов для групп слов и документов без визуализации.
Читать дальше →
Всего голосов 13: ↑11 и ↓2 +9
Просмотры 8.3K
Комментарии 0

Cжатие и улучшение рукописных конспектов

Open source *Python *Алгоритмы *Обработка изображений *
Перевод
Я написал программу для очистки отсканированных конспектов с одновременным уменьшением размера файла.

Исходное изображение и результат:


Слева: исходный скан на 300 DPI, 7,2 МБ PNG / 790 КБ JPG. Справа: результат с тем же разрешением, 121 КБ PNG [1]

Примечание: описанный здесь процесс более-менее совпадает с работой приложения Office Lens. Есть другие аналогичные программы. Я не утверждаю, что придумал нечто радикальное новое — это просто моя реализация полезного инструмента.

Если торопитесь, просто посмотрите репозиторий GitHub или перейдите в раздел результатов, где можно поиграться с интерактивными 3D-диаграммами цветовых кластеров.
Читать дальше →
Всего голосов 124: ↑124 и ↓0 +124
Просмотры 36K
Комментарии 50

Новый метод кластерного анализа

Алгоритмы *Машинное обучение *
Из песочницы

В работе предлагается новый метод кластерного анализа. Его преимущество в менее сложном с вычислительной точки зрения алгоритме. Метод основан на расчете голосов за то, что пара объектов находится в одном классе из информации о значении отдельных координат.
Читать дальше →
Всего голосов 24: ↑16 и ↓8 +8
Просмотры 5.1K
Комментарии 24

Кластерная память с аппроксимацией

Алгоритмы *Математика *Машинное обучение *
Recovery mode

Разработана память с нелинейной аппроксимацией внутри кластеров данных. Кластеры предлагается выделять методом k-средних. Аппроксимацию проводить с помощью обучения ансамбля нейронных сетей. Кластерная память протестирована на примере адаптивного фильтра для преобразования цветов изображения. По результатам компьютерных экспериментов данный вид памяти показал хорошую селективную способность к обучению. На примере адаптивного фильтра удается обучить память к изменению всей цветовой палитры изображения.
Читать дальше →
Всего голосов 18: ↑13 и ↓5 +8
Просмотры 2.6K
Комментарии 14

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

Блог компании ИТМО Алгоритмы *Машинное обучение *

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

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 14K
Комментарии 3

Clustergram: визуализация кластерного анализа на Python

Блог компании SkillFactory Open source *Python *Визуализация данных *
Перевод

В этой статье, переводом которой мы решили поделиться специально к старту курса о Data Science, автор представляет новый пакет Python для генерации кластерограмм из решений кластеризации. Библиотека была разработана в рамках исследовательского проекта Urban Grammar и совместима со scikit-learn и библиотеками с поддержкой GPU, такими как cuML или cuDF в рамках RAPIDS.AI.

Читать далее
Всего голосов 12: ↑11 и ↓1 +10
Просмотры 5.8K
Комментарии 0