Обновить
4K+
3
Андрей Басов@clapton

team lead

18
Рейтинг
1
Подписчики
Отправить сообщение

А в какой момент в статье вы пришли к тому что у вас везде нормальное распределение чтобы этим пользоваться?

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

Однако мы максимально нормализуем данные/логи — убираем GUID, timestamp, IP, шаблонизируем stack trace итд — чтобы сжать семантическое пространство и снизить шум.
И принимаем что данные в виде логов априори не могут иметь множество вариантов.
Это помогает сделать кластеры плотными, а расстояния — близкими к нулю.
Но это не превращает распределение в нормальное — и мы это понимаем.

Мы не строим доверительные интервалы в статистическом смысле.
Поэтому используем μ и σ — не как параметры модели, а ближе к эмпирическим агрегатам, удобным для нас в расчёте границ:

  • μ — среднее расстояние до центроида,

  • σ — мера разброса,

  • r = μ + k·σинтерпретируемая эвристика, а не статистический порог.

Это как Z-оценка. Не требует нормальности, но работает как фильтр.

Ощущение что где-то здесь потерялась формула .

Вы правы — спасибо большое, действительно, формулы не хватало. Добавил.

Мы используем её не как доказательство нормальности, а как удобную параметризацию:

отображение доли “дальних” точек в масштабный коэффициент k.

Это позволяет интуитивно интерпретировать k, даже если распределение не нормальное.

Какой-то винегрет из тёплого с мягким, вы либо среднюю используйте в комбинации с сигмой, либо медиану в комбинации с MAD

Вы правы: использование median + 2·σ — неконсистентно.

Median устойчива к выбросам, а σ — нет.

В версии статьи для упрощения мы действительно использовали эту эвристику, чтобы не вводить MAD и упростить понимание.

На практике:

median используется только для оценки доли “дальних” точек (P_tail),

Основная граница кластера r = μ + k·σ строится на mean и std — она не зависит от median.

Робастность важна, но в статье мы жертвовали ею ради простоты изложения — чтобы не перегружать читателя.

Спасибо — добавим пояснение.

Кстати, стоит уточнить, как устроена наша система:

В малых кластерах (< 10k точек) — используется MST со сглаживанием как основной метод оценки плотности.

Граница MST строится как с использованием дополнительно k_mst — адаптивный коэффициент, обновляемый на каждом ребилде.

Он не пересчитывается с нуля, а обновляется через байесовское сглаживание:

старое k_mst используется как prior, новое — оценивается по верхним квантилям рёбер MST, итоговое k_mst — взвешенное среднее. Это делает границу стабильной и не чувствительной к шуму.


В крупных кластерах (> 30k) или при медленном ребилде (всегда замеряется время пересбора для каждого кластера) — MST отключается (из-за O(n²)),

→ переходим на μ + k·σ,

→ вызываем estimate_threshold,

→ считаем MAD для робастной оценки P_tail,

→ уточняем k относительно накопленной истории агрегатов.

→ адаптируем k через экспоненциальное сглаживание.

То есть:

MAD — не замена MST,

а лёгкая компенсация за потерю топологической точности,

с сохранением робастности и стабильности адаптации.

Если n < 30

Да, подход вдохновлён байесовским обновлением — «старое убеждение + новое наблюдение»,

но формально это экспоненциальное сглаживание, а не полноценный байесовский вывод.

При малом n мы не можем надёжно оценить хвост — поэтому используем prior_p_tail = 0.02 как априорное убеждение,

которое будет обновляться по мере поступления данных в кластер и его пересборкой.

Эта статья — первая часть серии.

Цель — показать базовую математику, идею “кластер как агент”, а не все детали production-логики.

Мы не могли в одну статью включить всё: MST, k_corr, MAD, динамику центроидов, все агрегаты, различные LLM-интеграции и все применяемые алгоритмы.

Обещаем — в следующих частях расскажем подробнее.


Спасибо большое за ваш комментарий — он помог нам лучше отразить некоторые моменты и сделать материал понятнее.

Информация

В рейтинге
458-й
Откуда
Нижний Новгород, Нижегородская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Фулстек разработчик, Системный инженер
C#
Алгоритмы и структуры данных
Python
Bash
CI/CD
Базы данных
Powershell
Техническая поддержка
SRE
Мониторинг