<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Электронный научно-практический журнал «Современные научные исследования и инновации» &#187; метод локтя</title>
	<atom:link href="http://web.snauka.ru/issues/tag/metod-loktya/feed" rel="self" type="application/rss+xml" />
	<link>https://web.snauka.ru</link>
	<description></description>
	<lastBuildDate>Fri, 17 Apr 2026 07:29:22 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Кластеризация клиентов: как сегментировать аудиторию без размеченных данных</title>
		<link>https://web.snauka.ru/issues/2026/03/104368</link>
		<comments>https://web.snauka.ru/issues/2026/03/104368#comments</comments>
		<pubDate>Tue, 24 Mar 2026 12:19:33 +0000</pubDate>
		<dc:creator>Гильмутдинов Айдар Илгизович</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[data mining]]></category>
		<category><![CDATA[DBSCAN]]></category>
		<category><![CDATA[feature scaling]]></category>
		<category><![CDATA[K-Means]]></category>
		<category><![CDATA[PCA]]></category>
		<category><![CDATA[unsupervised learning]]></category>
		<category><![CDATA[анализ данных]]></category>
		<category><![CDATA[иерархическая кластеризация]]></category>
		<category><![CDATA[интерпретация кластеров]]></category>
		<category><![CDATA[кластеризация]]></category>
		<category><![CDATA[машинное обучение]]></category>
		<category><![CDATA[метод локтя]]></category>
		<category><![CDATA[обучение без учителя]]></category>
		<category><![CDATA[сегментация клиентов]]></category>
		<category><![CDATA[силуэтный коэффициент]]></category>
		<category><![CDATA[снижение размерности]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2026/03/104368</guid>
		<description><![CDATA[Научный руководитель: Вильданов Алмаз Нафкатович к.ф.-м.н., Уфимский университет науки и технологий, Нефтекамский филиал Введение В анализе данных часто встречаются задачи, где предсказывать нечего — потому что нет размеченных ответов. Есть только сырые данные о клиентах, их покупках, частоте визитов и среднем чеке. Классическое машинное обучение здесь бессильно, так как ему нужны примеры для обучения. В таких случаях используется обучение без [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;" align="center"><em>Научный руководитель: Вильданов Алмаз Нафкатович<br />
</em><em>к.ф.-м.н., </em><em>Уфимский университет науки и технологий, Нефтекамский филиал</em></p>
<p><strong>Введение</strong></p>
<p>В анализе данных часто встречаются задачи, где предсказывать нечего — потому что нет размеченных ответов. Есть только сырые данные о клиентах, их покупках, частоте визитов и среднем чеке. Классическое машинное обучение здесь бессильно, так как ему нужны примеры для обучения.</p>
<p>В таких случаях используется <strong>обучение без учителя</strong>, и главный инструмент здесь — кластеризация. Этот подход позволяет разбить объекты на группы без заранее известных меток, чтобы внутри группы объекты были похожи друг на друга, а между группами — максимально отличались.</p>
<p>Кластеризация широко применяется в маркетинге для сегментации клиентов, в антифроде для поиска аномалий, в ритейле для группировки товаров. В этой статье разбираются основные алгоритмы, критерии выбора и типичные ошибки при работе с кластеризацией.</p>
<h2>1. Что такое кластеризация</h2>
<p>Кластеризация — это задача группировки объектов без использования размеченных данных. Алгоритм самостоятельно ищет скрытую структуру в данных, основываясь только на их свойствах.</p>
<p>Основные сценарии применения кластеризации:</p>
<table width="0" border="1" cellspacing="0" cellpadding="10">
<thead>
<tr>
<td>
<p style="text-align: center;"><strong>Сценарий</strong></p>
</td>
<td>
<p style="text-align: center;"><strong>Задача</strong></p>
</td>
</tr>
</thead>
<tbody>
<tr>
<td>Маркетинг</td>
<td>Разбить клиентов на сегменты для персонализированных предложений</td>
</tr>
<tr>
<td>Антифрод</td>
<td>Найти аномальные группы транзакций, похожих на мошеннические</td>
</tr>
<tr>
<td>Ассортимент</td>
<td>Сгруппировать товары, которые часто покупают вместе</td>
</tr>
<tr>
<td>Геоаналитика</td>
<td>Выделить районы города со схожими характеристиками</td>
</tr>
</tbody>
</table>
<p>Главное преимущество кластеризации — она не требует размеченной выборки. Это особенно ценно на начальных этапах анализа данных, когда структура данных ещё неизвестна.</p>
<div align="center">
<hr align="center" size="1" width="100%" />
</div>
<h2>2. Основные алгоритмы кластеризации</h2>
<p>Существует множество алгоритмов кластеризации, но на практике чаще всего применяются три.</p>
<h3>2.1. K-Means</h3>
<p>K-Means — самый известный и часто используемый алгоритм. Он разбивает данные на K кластеров, где K задаётся аналитиком заранее.</p>
<p><strong>Принцип работы:</strong></p>
<ol>
<li>Алгоритм случайно выбирает K центров кластеров</li>
<li>Каждая точка относится к ближайшему центру</li>
<li>Центры пересчитываются как среднее точек в кластере</li>
<li>Шаги 2–3 повторяются до стабилизации</li>
</ol>
<p><strong>Достоинства:</strong></p>
<ul>
<li>Высокая скорость работы</li>
<li>Простота реализации и интерпретации</li>
<li>Хорошо работает при сферической форме кластеров</li>
</ul>
<p><strong>Недостатки:</strong></p>
<ul>
<li>Необходимость заранее задавать число кластеров</li>
<li>Чувствительность к выбросам</li>
<li>Плохо работает с кластерами сложной формы</li>
</ul>
<p><strong>Когда использовать:</strong> для быстрой базовой сегментации, когда данные не содержат сильных выбросов и кластеры предположительно имеют округлую форму.</p>
<h3>2.2. DBSCAN</h3>
<p>DBSCAN (Density-Based Spatial Clustering of Applications with Noise) — алгоритм, основанный на плотности точек. Он не требует задавать количество кластеров и может находить кластеры произвольной формы.</p>
<p><strong>Ключевые параметры:</strong></p>
<ul>
<li>eps — радиус окрестности, в пределах которого ищутся соседи</li>
<li>min_samples — минимальное количество точек для формирования кластера</li>
</ul>
<p><strong>Достоинства:</strong></p>
<ul>
<li>Не требует указания числа кластеров</li>
<li>Находит кластеры произвольной формы</li>
<li>Устойчив к выбросам — они не попадают в кластеры, а помечаются как шум</li>
</ul>
<p><strong>Недостатки:</strong></p>
<ul>
<li>Чувствителен к выбору параметров</li>
<li>Плохо работает при разной плотности кластеров</li>
<li>Может не справиться с многомерными данными</li>
</ul>
<p><strong>Когда использовать:</strong> когда форма кластеров неизвестна, в данных есть выбросы или требуется автоматическое определение количества групп.</p>
<h3>2.3. Иерархическая кластеризация</h3>
<p>Иерархическая кластеризация строит дерево вложенных кластеров (дендрограмму), позволяя аналитику выбрать нужный уровень детализации.</p>
<p><strong>Принцип работы:</strong><br />
Существует два подхода:</p>
<ul>
<li><strong>Агломеративный</strong> — каждый объект сначала находится в своём кластере, затем кластеры последовательно объединяются</li>
<li><strong>Дивизивный</strong> — все объекты находятся в одном кластере, который последовательно разделяется</li>
</ul>
<p><strong>Достоинства:</strong></p>
<ul>
<li>Не требует заранее задавать количество кластеров</li>
<li>Результат легко визуализировать (дендрограмма)</li>
<li>Позволяет анализировать иерархическую структуру данных</li>
</ul>
<p><strong>Недостатки:</strong></p>
<ul>
<li>Высокая вычислительная сложность</li>
<li>Чувствительность к выбросам</li>
<li>Сложность интерпретации при большом количестве объектов</li>
</ul>
<p><strong>Когда использовать:</strong> когда важно увидеть иерархическую структуру данных или количество объектов не слишком велико (до нескольких тысяч).</p>
<div align="center">
<hr align="center" size="1" width="100%" />
</div>
<h2>3. Выбор количества кластеров</h2>
<p>Если для DBSCAN количество кластеров определяется автоматически, то для K-Means и многих других алгоритмов этот параметр нужно задавать заранее. Существуют стандартные методы для его определения.</p>
<h3>3.1. Метод локтя (Elbow Method)</h3>
<p>Один из самых простых и наглядных методов. Для каждого значения K вычисляется сумма квадратов расстояний от точек до центров своих кластеров (inertia). Оптимальное K находится в точке, где инерция перестаёт резко снижаться — образуется «локоть».</p>
<p>python<br />
from sklearn.cluster import KMeans<br />
import matplotlib.pyplot as plt</p>
<p>inertias = []<br />
for k in range(1, 11):<br />
kmeans = KMeans(n_clusters=k, random_state=42)<br />
kmeans.fit(data)<br />
inertias.append(kmeans.inertia_)</p>
<p>plt.plot(range(1, 11), inertias, marker=&#8217;o')<br />
plt.xlabel(&#8216;Количество кластеров&#8217;)<br />
plt.ylabel(&#8216;Инерция&#8217;)<br />
plt.show()</p>
<h3>3.2. Силуэтный коэффициент (Silhouette Score)</h3>
<p>Более сложный, но и более информативный метод. Оценивает, насколько точки похожи на свой кластер по сравнению с соседними кластерами. Коэффициент принимает значения от -1 до 1:</p>
<ul>
<li>Близко к 1 — точки хорошо сгруппированы</li>
<li>Около 0 — кластеры пересекаются</li>
<li>Меньше 0 — точки, вероятно, попали не в свой кластер</li>
</ul>
<p>Оптимальным считается K с максимальным средним силуэтным коэффициентом.</p>
<div align="center">
<hr align="center" size="1" width="100%" />
</div>
<h2>4. Подготовка данных для кластеризации</h2>
<p>Качество кластеризации напрямую зависит от того, как подготовлены данные. Есть несколько обязательных шагов.</p>
<h3>4.1. Масштабирование признаков</h3>
<p>Алгоритмы кластеризации чувствительны к масштабу признаков. Если один признак измеряется в тысячах, а другой — в долях единицы, первый будет доминировать при расчёте расстояний.</p>
<p><strong>Стандартизация</strong> приводит признаки к среднему 0 и стандартному отклонению 1:</p>
<p>python<br />
from sklearn.preprocessing import StandardScaler</p>
<p>scaler = StandardScaler()<br />
data_scaled = scaler.fit_transform(data)<br />
<strong>Нормализация</strong> сжимает значения в диапазон [0, 1]:</p>
<p>python<br />
from sklearn.preprocessing import MinMaxScaler</p>
<p>scaler = MinMaxScaler()<br />
data_normalized = scaler.fit_transform(data)</p>
<h3>4.2. Выбор метрики расстояния</h3>
<p>По умолчанию чаще всего используется евклидово расстояние, но это не единственный вариант:</p>
<table width="0" border="1" cellspacing="0" cellpadding="10">
<thead>
<tr>
<td>
<p style="text-align: center;"><strong>Метрика</strong></p>
</td>
<td>
<p style="text-align: center;"><strong>Когда использовать</strong></p>
</td>
</tr>
</thead>
<tbody>
<tr>
<td>Евклидово</td>
<td>Данные в непрерывном пространстве, все признаки равнозначны</td>
</tr>
<tr>
<td>Манхэттенское</td>
<td>При наличии выбросов, так как оно менее чувствительно</td>
</tr>
<tr>
<td>Косинусное</td>
<td>Текстовые данные, когда важны направления, а не длины векторов</td>
</tr>
</tbody>
</table>
<h3>4.3. Снижение размерности</h3>
<p>При большом количестве признаков (десятки и сотни) кластеризация становится сложной — это явление называют «проклятием размерности». В таких случаях помогает снижение размерности с помощью PCA (главные компоненты) или t-SNE.</p>
<p>python<br />
from sklearn.decomposition import PCA</p>
<p>pca = PCA(n_components=2)<br />
data_reduced = pca.fit_transform(data_scaled)</p>
<div align="center">
<hr align="center" size="1" width="100%" />
</div>
<h2>5. Интерпретация результатов</h2>
<p>Кластеризация бесполезна, если её результаты нельзя интерпретировать и использовать в бизнесе. После того как кластеры получены, важно понять, чем они отличаются друг от друга.</p>
<h3>5.1. Профилирование кластеров</h3>
<p>Для каждого кластера рассчитываются средние значения по всем признакам. Это позволяет описать каждый сегмент:</p>
<p>python<br />
<em># Добавляем метки кластеров в датафрейм</em><br />
df['cluster'] = labels</p>
<p><em># Смотрим средние значения по кластерам</em><br />
profile = df.groupby(&#8216;cluster&#8217;).mean()<br />
print(profile)<br />
На основе такого профиля можно сформулировать описания:</p>
<ul>
<li>Кластер 0: молодые клиенты, низкий средний чек, высокая частота покупок</li>
<li>Кластер 1: клиенты старшего возраста, высокий средний чек, редкие покупки</li>
<li>Кластер 2: клиенты среднего возраста, средний чек, покупают в основном в выходные</li>
</ul>
<h3>5.2. Визуализация</h3>
<p>Для визуализации кластеров в двухмерном пространстве используется PCA или t-SNE:</p>
<p>python<br />
import matplotlib.pyplot as plt</p>
<p>plt.figure(figsize=(10, 6))<br />
scatter = plt.scatter(data_reduced[:, 0], data_reduced[:, 1],<br />
c=labels, cmap=&#8217;viridis&#8217;, alpha=0.6)<br />
plt.colorbar(scatter, label=&#8217;Кластер&#8217;)<br />
plt.title(&#8216;Визуализация кластеров&#8217;)<br />
plt.show()</p>
<div align="center">
<hr align="center" size="1" width="100%" />
</div>
<h2>6. Типичные ошибки при кластеризации</h2>
<p>За годы применения кластеризации в реальных проектах можно выделить несколько типичных ошибок, которых стоит избегать.</p>
<h3>6.1. Кластеризация без масштабирования</h3>
<p>Одна из самых частых ошибок — запуск алгоритма на ненормализованных данных. Признаки с большими значениями неизбежно доминируют, и результат оказывается бессмысленным.</p>
<h3>6.2. Слепое использование K-Means</h3>
<p>K-Means не всегда подходит. Если кластеры имеют сложную форму или в данных много выбросов, результат может оказаться неудовлетворительным. Всегда стоит пробовать разные алгоритмы.</p>
<h3>6.3. Игнорирование предметной области</h3>
<p>Статистически оптимальная кластеризация может быть бесполезна для бизнеса, если сегменты не интерпретируются. Например, алгоритм может выделить кластер, который невозможно содержательно описать — такой результат сложно использовать в маркетинге.</p>
<h3>6.4. Переобучение при выборе K</h3>
<p>Выбор количества кластеров «под ответ» — распространённая проблема. Если подбирать K так, чтобы результат казался красивым, есть риск получить сегменты, которые не воспроизводятся на новых данных.</p>
<p><strong>Заключение</strong></p>
<p>Кластеризация — мощный инструмент анализа данных, который позволяет находить скрытые группы объектов без размеченной выборки. В отличие от задач классификации или регрессии, здесь не требуется исторических ответов, что делает кластеризацию особенно полезной на начальных этапах работы с данными.</p>
<p>Выбор конкретного алгоритма зависит от структуры данных и задач бизнеса:</p>
<ul>
<li><strong>K-Means</strong> подходит для быстрой сегментации при условии, что форма кластеров близка к сферической</li>
<li><strong>DBSCAN</strong> эффективен, когда форма кластеров неизвестна и в данных присутствуют выбросы</li>
<li><strong>Иерархическая кластеризация</strong> даёт глубокое понимание структуры, но требует больше ресурсов</li>
</ul>
<p>Успех проекта по кластеризации определяется не столько выбором алгоритма, сколько качественной подготовкой данных, грамотным выбором метрик расстояния и, главное, интерпретируемостью результатов для конечного бизнес-пользователя.</p>
<p>Кластеризация не даёт «правильного ответа» в математическом смысле — она даёт инструмент для понимания данных. И именно это понимание становится основой для принятия более эффективных решений.</p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2026/03/104368/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
