Теория
Расстояния и близость объектов
<h2>Как алгоритм понимает похожесть</h2>
<p>Алгоритм не работает с человеческими описаниями напрямую. Для него объект обычно является вектором признаков: набором чисел. Например, клиента можно представить как <code>[средний чек, покупок в месяц]</code>, а документ — как набор численных характеристик текста.</p>
<p>Чтобы решить, какие объекты похожи, нужно выбрать меру близости. Чаще всего используют расстояние: чем оно меньше, тем ближе объекты в пространстве признаков.</p>
<h2>Объект как вектор признаков</h2>
<p>Если у объекта есть \(m\) численных признаков, его можно записать как вектор:</p>
<p>$$x = (f_1(x), f_2(x), \ldots, f_m(x)).$$</p>
<p>Например, для клиента это может быть \((\text{средний чек}, \text{покупок в месяц}, \text{дней с последней покупки})\). После такого представления объект становится точкой в пространстве признаков.</p>
<h2>Евклидово расстояние</h2>
<p>Евклидово расстояние — это обычное расстояние по прямой. Для двух точек \(A(x_1, y_1)\) и \(B(x_2, y_2)\) оно вычисляется так:</p>
<p>$$d(A,B)=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}$$</p>
<p>В многомерном случае формула расширяется на все признаки:</p>
<p>$$d(x,y)=\sqrt{\sum_{j=1}^{m}(x_j-y_j)^2}$$</p>
<p>Здесь \(m\) — количество признаков, а \(x_j\) и \(y_j\) — значения j-го признака у двух объектов.</p>
<h2>Матрица расстояний</h2>
<p>Иногда удобно не смотреть на координаты напрямую, а построить таблицу попарных расстояний между объектами. Такая таблица показывает, какие пары объектов близки, а какие далеки. На этой идее строятся многие методы: от простых правил ближайшего соседа до иерархической кластеризации.</p>
<p>Для маленькой выборки из трех объектов матрица расстояний может выглядеть так:</p>
<table>
<thead>
<tr><th></th><th>\(x_1\)</th><th>\(x_2\)</th><th>\(x_3\)</th></tr>
</thead>
<tbody>
<tr><th>\(x_1\)</th><td>0</td><td>2.1</td><td>8.4</td></tr>
<tr><th>\(x_2\)</th><td>2.1</td><td>0</td><td>7.9</td></tr>
<tr><th>\(x_3\)</th><td>8.4</td><td>7.9</td><td>0</td></tr>
</tbody>
</table>
<p>По такой таблице видно, что \(x_1\) и \(x_2\) ближе друг к другу, чем к \(x_3\).</p>
<h2>Что важно помнить</h2>
<ul>
<li>Расстояние отражает только те признаки, которые попали в данные.</li>
<li>Близость зависит от выбранной метрики.</li>
<li>Если признаки имеют разные масштабы, расстояние может стать искаженным.</li>
<li>Малое расстояние не всегда означает полезную похожесть для конкретной бизнес-задачи.</li>
</ul>
<h2>Практический вывод</h2>
<p>Перед кластеризацией нужно не просто выбрать алгоритм, а ответить на вопрос: "что значит быть похожими в этой задаче?" Если ответ не сформулирован, результат может быть математически корректным, но практически бесполезным.</p>