Все материалы
Продуктовая аналитикаматериалстарт

Сегментация пользователей: что это, как делить и где она обманывает

Сегментация — деление пользователей на группы по признаку, чтобы увидеть различия, которые прячет среднее. Виды сегментов, отличие сегмента от когорты, RFM-анализ в SQL, маленькие сегменты, смена состава и сегменты в A/B-тестах — на учебной базе.

КейсПрактика24 сентября 2026 г.11 мин

Продакт пишет в чат: «Сделай сегментацию пользователей, хочу понять, кто у нас платит». Общая конверсия в оплату — 19,77%, и это число выглядит спокойным. Но из пришедших по рекомендациям платит каждый четвёртый, а из платного поиска — меньше одного из десяти. Сегментация нужна как раз для этого: разобрать среднее на группы и понять, какая из них двигает метрику. У неё есть и обратная сторона: чем мельче вы режете, тем больше находите различий, которых на самом деле нет.

Коротко

  • Сегментация — деление пользователей на группы по признаку, который влияет на поведение или на решение: канал, устройство, страна, действия в продукте, тариф.
  • Сегмент выбирают по признаку, когорту — по времени старта. У когорты есть возраст, у сегмента его нет.
  • RFM-анализ делит платящих по давности последней покупки, частоте и сумме. На подписке его приходится адаптировать.
  • Мелкие сегменты шумят: 6 оплат из 33 человек дают интервал от 8,6% до 34,4%.
  • Разница между сегментами может объясняться составом, а не поведением: мобильные платят реже отчасти потому, что среди них вдвое больше трафика из платного поиска.
  • Сегменты, придуманные после A/B-теста, — это гипотезы, а не выводы.

Что такое сегментация пользователей

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

У слова есть и маркетинговое значение: сегментация рынка, выбор целевой аудитории, портреты клиентов. Сегментация клиентов в CRM ближе к нему — там группы нужны для рассылок и персональных предложений. Здесь речь об аналитическом смысле: вы берёте данные о пользователях и проверяете, одинаково ли ведут себя группы.

Хороший сегмент отвечает на три вопроса. По какому признаку он выделен и где этот признак лежит в данных. Чем его поведение отличается от остальных. Что вы сделаете иначе, если различие подтвердится. Если на третий вопрос ответа нет, сегмент будет просто ещё одной строкой в отчёте.

Зачем сегментировать, если есть общая метрика

Общая метрика — это средневзвешенное по группам. Когда группы ведут себя одинаково, среднее их честно описывает. Когда по-разному — прячет самое интересное.

В учебной базе SQL-курса 4613 пользователей, первую оплату сделали 912. По каналам привлечения разброс больше чем трёхкратный: от 26,81% у рекомендаций до 8,47% у платного поиска. По устройствам разрыв меньше: 21,48% на десктопе против 17,95% на мобильных. По странам ещё скромнее: от 19,15% в России до 21,38% в Казахстане. У 55 пользователей без страны — 12,73%, но их слишком мало, к этому вернёмся ниже.

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

Конверсия в первую оплату по сегментам, %

Учебная база SQL-курса, DuckDB. Общая конверсия — 19,77%. Пользователи без страны (55 человек) не показаны.

Конверсия в оплату
Конверсия в первую оплату по сегменту: замените `device` на `channel` или `country`
select
  u.device as segment,
  count(*) as users,
  count(p.user_id) as payers,
  round(100.0 * count(p.user_id) / count(*), 2) as cr_pct
from users as u
left join payments as p
  on p.user_id = u.user_id
 and p.payment_type = 'first'
group by u.device
order by cr_pct desc;

Какие бывают сегменты

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

Поведенческий сегмент в учебной базе — те, кто создал первый отчёт. Их 1775, и платят они чаще: 21,24% против 18,85% у остальных. Это не доказывает, что отчёт приводит к оплате: создают его, возможно, те, кто и так собирался платить. Сегментация показывает связь, а причину проверяют экспериментом.

Типы сегментов на примере учебной базы
ТипПризнакПримерКакой вопрос закрывает
Привлечениеchannelreferral, paid_searchв какой канал вкладываться
Устройствоdevicedesktop, mobileгде ломается путь пользователя
ГеографияcountryRU, KZ, AM, BYнужна ли локализация, цены, оплата
Поведениесобытия в eventsсоздал отчёт или неткакие действия связаны с ценностью
Ценностьpayments.planbasic 514, pro 296, team 102 первых оплаткого удерживать в первую очередь

Чем сегмент отличается от когорты

Когорта — тоже группа пользователей, но выделенная по времени стартового события: зарегистрировались в одну неделю, впервые заплатили в один месяц. Главное в ней — возраст: метрику считают на одинаковом расстоянии от старта. Сегмент возраста не учитывает.

Их часто комбинируют: когорты по неделе регистрации, внутри — разбивка по каналу. Без этого сравнение сегментов искажается, если в одном больше старых пользователей, чем в другом. Такой случай всплывёт ниже, в RFM.

СегментКогорта
Признак группылюбой: канал, страна, поведениевремя стартового события
Составможет меняться (сменил тариф)зафиксирован навсегда
Ось анализаобычно календарь или всё времявозраст: неделя 1, 2, 3 после старта
Типичный вопроскто ведёт себя иначедержатся ли новые так же, как прежние

Что такое RFM-анализ и как посчитать его в SQL

RFM — классическая поведенческая сегментация платящих клиентов по трём признакам. Recency — сколько дней прошло с последней покупки. Frequency — сколько было покупок. Monetary — сколько клиент заплатил. Каждый признак делят на ранги, обычно от 1 до 3 или от 1 до 5, и клиент получает код вроде 3-3-3: покупал недавно, часто и на большую сумму.

Классический рецепт — делить на ранги по квантилям, в SQL для этого есть ntile. На учебной базе 912 плательщиков, и сразу видно, где этот рецепт ломается. Оплат у человека от одной до трёх: 622 заплатили один раз, 241 — дважды, 49 — трижды. ntile(3) режет строки на три равные части по 304 и не смотрит на одинаковые значения. В результате в первый и второй ранг частоты попадают люди с одной оплатой, а 14 человек с одной оплатой — в высший ранг.

С суммой то же самое: в подписке три цены, $19, $29 и $39, и 349 человек заплатили ровно $19. Первый ранг по сумме — сплошь $19, второй — от $19 до $38. Такие ранги ничего не различают.

Ранг частоты по ntile(3) и настоящее число оплат
Ранг fОплат у пользователяПользователей
11304
21304
3114
32241
3349
RFM по учебнику: ранги через ntile и проверка, что попало в ранг частоты
with per_user as (
  select
    user_id,
    date_diff('day', max(paid_at), date '2026-08-31') as recency_days,
    count(*) as frequency,
    sum(amount) as monetary
  from payments
  group by user_id
),
scored as (
  select
    *,
    ntile(3) over (order by recency_days desc, user_id) as r,
    ntile(3) over (order by frequency, user_id) as f,
    ntile(3) over (order by monetary, user_id) as m
  from per_user
)
select f, frequency, count(*) as users
from scored
group by f, frequency
order by f, frequency;
Когда квантили не работают

Если у признака мало разных значений, ntile раскладывает одинаковых людей по разным рангам в зависимости от порядка сортировки. Перед квантилями посмотрите распределение: select frequency, count(*) … group by frequency. Если значений три — ранги ставьте по ним напрямую.

Как собрать RFM-сегменты по правилам бизнеса

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

Получилось четыре сегмента. Постоянных — 232 из 912, четверть плательщиков, а выручки они принесли $12 617, это 41,2% от всех $30 639. Разовых, которые заплатили один раз и не продлили, — 212.

Самый большой сегмент — «новые плательщики», 410 человек, и тут видна ловушка. У них одна оплата не потому, что они хуже, а потому что с первой оплаты не прошло месяца и продлевать было ещё рано. Сегмент смешал поведение с возрастом. Сравнивать их с «разовыми» можно только через месяц, когда у них наступит срок продления, — то есть по когортам.

RFM-сегменты на учебной базе, давность считается от 31 августа
СегментПользователиСредняя выручкаВыручка
новые плательщики410$24,6$10 090
постоянные232$54,4$12 617
разовые212$24,3$5148
перестали после продления58$48,0$2784
RFM-сегменты по порогам из цикла подписки
with per_user as (
  select
    user_id,
    date_diff('day', max(paid_at), date '2026-08-31') as recency_days,
    count(*) as frequency,
    sum(amount) as monetary
  from payments
  group by user_id
),
segments as (
  select
    *,
    case
      when recency_days <= 30 and frequency >= 2 then 'постоянные'
      when recency_days <= 30 then 'новые плательщики'
      when frequency >= 2 then 'перестали после продления'
      else 'разовые'
    end as segment
  from per_user
)
select
  segment,
  count(*) as users,
  round(avg(monetary), 1) as avg_revenue,
  sum(monetary) as revenue
from segments
group by segment
order by users desc;

Сколько сегментов нужно

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

Второе ограничение — размер. Каждое новое измерение умножает число групп. Канал, устройство и страна в учебной базе дают 32 сегмента: от 23 до 533 человек, медиана — 82,5. В 19 сегментах меньше ста человек, в семи — меньше пятидесяти. На таких размерах конверсия в 20% означает десяток-другой оплат, и одна лишняя сдвигает её на несколько пунктов.

Почему маленький сегмент врёт

Отсортируйте 32 сегмента по конверсии и вы найдёте истории. Например, платный поиск на десктопе из Армении: 6 оплат из 33 пользователей, 18,18%. Это вдвое выше, чем у платного поиска в целом (8,47%), и так и хочется предложить поднять ставки на эту связку.

Доверительный интервал остужает. Для 6 из 33 95-процентный интервал Уилсона — от 8,6% до 34,4%: в него попадает и средняя конверсия платного поиска, и уровень лучших каналов. Для сравнения, у десктопа в целом интервал 19,9–23,2%, у мобильных 16,4–19,6%. Эти два не пересекаются, и разнице между устройствами можно доверять больше.

Правило простое: рядом с процентом сегмента показывайте абсолютные числа, а если знаменатель в десятках — интервал.

Когда разница между сегментами — это состав, а не поведение

Мобильные платят реже десктопа: 17,95% против 21,48%. Первая мысль — неудобная оплата в мобильной версии. Но посмотрите на состав: среди мобильных пользователей 30,1% пришли из платного поиска, среди десктопных — 14,5%. А платный поиск конвертируется хуже всех на любом устройстве.

Проверка — пересчитать мобильную конверсию так, будто у мобильных каналы распределены как у десктопа. Получается 20,13%. Разрыв с десктопом сокращается с 3,5 пункта до 1,4. Большую часть разницы между устройствами объясняет трафик, а не интерфейс. А у партнёрского канала мобильные вообще платят чаще: 18,6% против 15,84%.

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

Мобильная конверсия со структурой каналов десктопа: 20,13%
with desktop_mix as (
  select
    channel,
    count(*) * 1.0 / sum(count(*)) over () as desktop_share
  from users
  where device = 'desktop'
  group by channel
),
mobile_cr as (
  select
    u.channel,
    count(p.user_id) * 1.0 / count(*) as mobile_cr
  from users as u
  left join payments as p
    on p.user_id = u.user_id
   and p.payment_type = 'first'
  where u.device = 'mobile'
  group by u.channel
)
select round(100 * sum(desktop_share * mobile_cr), 2) as mobile_cr_with_desktop_mix
from desktop_mix
join mobile_cr using (channel);

Как смотреть сегменты в A/B-тесте

В эксперименте onboarding_checklist из учебной базы чеклист онбординга поднял конверсию с 20,04% до 30,3%. Разбивка по устройствам показывает, откуда взялся эффект: на десктопе 39,78% против 20,03%, на мобильных 19,89% против 20,05%. Разница на десктопе — +19,75 пункта, интервал от 15,4 до 24,1. На мобильных — −0,16, интервал от −4,2 до 3,9, эффекта не видно.

Такая находка полезна, но её статус зависит от того, когда вы решили смотреть на устройства. Если разбивка была запланирована до запуска, это результат. Если вы перебрали после теста каналы, устройства и страны, это 10 срезов: четыре канала, два устройства, четыре страны. Будь проверки независимыми, при уровне значимости 5% хотя бы одна ложная находка случилась бы с вероятностью около 40%.

Обратный пример из того же теста: в Беларуси разница всего +1,4 пункта. Сказать «в Беларуси чеклист не работает» нельзя: интервал от −8,9 до 11,7 пункта, данных слишком мало, чтобы отличить отсутствие эффекта от обычного. Сегменты, найденные после теста, записывайте как гипотезы и проверяйте отдельным экспериментом или поправкой на множественные сравнения.

Конверсия в эксперименте по устройствам и вариантам
select
  u.device,
  e.variant,
  count(*) as users,
  count(*) filter (where e.converted) as converted,
  round(100.0 * count(*) filter (where e.converted) / count(*), 2) as cr_pct
from experiment_exposures as e
join users as u
  on u.user_id = e.user_id
where e.experiment_name = 'onboarding_checklist'
group by u.device, e.variant
order by u.device, e.variant;

Какие ошибки встречаются чаще всего

  • Сегменты без решения. Отчёт на двадцать разрезов, после которого никто ничего не меняет.
  • Проценты без количества. Сегмент с лучшей конверсией может приносить меньше всех клиентов: у рекомендаций 278 платящих, у органики 410.
  • Поведение и возраст в одном признаке. «Одна оплата» у тех, кто платит первый месяц, и у тех, кто не продлил, — разные вещи.
  • Квантили на дискретных значениях. ntile по числу покупок раскладывает одинаковых клиентов по разным рангам.
  • Сегмент по признаку, который появился после целевого действия. Если выделить «активных в последнюю неделю» и сравнить их удержание, вы найдёте удержание в самом определении сегмента.
  • Перебор срезов после эксперимента без поправки. Чем больше разрезов, тем больше случайных «открытий».

Что читать дальше

Сегментация чаще всего работает вместе с воронкой, когортами и экспериментами. Эти материалы разбирают соседние инструменты на той же учебной базе.

Продолжить чтение
Вся библиотека
Продуктовая аналитика24 сентября 2026 г.11 мин
Широкий поток точек сужается, и лишь часть из них проходит через узкий проём

Конверсия: что это, формула и как считать без ошибок

Конверсия — доля тех, кто сделал целевое действие, среди тех, кто мог его сделать. Формула CR, выбор знаменателя, окно конверсии, шаги воронки, сегменты и почему нельзя усреднять конверсии — на примерах с учебной базы.

Читать материал
Продуктовая аналитика24 сентября 2026 г.11 мин
Ступенчатая сетка из цветных клеток, которые бледнеют слева направо

Когорта: что это простыми словами и зачем нужен когортный анализ

Когорта — группа пользователей с общим стартовым событием в одном периоде. Что такое когортный анализ, как построить и читать когортную таблицу, какие бывают когорты и почему последние когорты нельзя сравнивать с остальными.

Читать материал