← Назад к вопросам

Какое сегментирование использовал в проекте?

1.0 Junior🔥 161 комментариев
#Метрики продукта#Опыт и проекты

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Сегментирование в проекте предсказания churn

Это очень важный вопрос! Я использовал несколько слоев сегментирования в проекте по предсказанию churn, о котором рассказывал ранее. Позвольте детально разобраться.

Контекст

В CRM компании были тысячи клиентов со сложными поведенческими паттернами. Одного глобального порога для предсказания churn было недостаточно — разные сегменты требовали разные подходы.

Слой 1: Сегментирование по типу подписки

Это было самое базовое разделение.

Категории:

  • Starter (месячная подписка, дешевая) — частая текучка, но низкий LTV
  • Professional (годовая подписка) — средняя текучка
  • Enterprise (контрактная, дорогая) — редкая текучка, но критичная

Почему это важно:

  • Starter клиенты могут уйти, и это нормально (их легко заменить)
  • Enterprise клиент, который уходит — это $100k+ потерянного дохода
  • Модели для каждого сегмента разные
-- Анализ churn rate по сегментам
SELECT 
  subscription_type,
  DATE_TRUNC('month', signup_date) as cohort,
  COUNT(*) as total_users,
  COUNT(CASE WHEN churned THEN 1 END) as churned_users,
  ROUND(100.0 * COUNT(CASE WHEN churned THEN 1 END) / COUNT(*), 2) as churn_rate,
  ROUND(AVG(ltv), 0) as avg_ltv,
  ROUND(AVG(mrr), 2) as avg_mrr
FROM users
GROUP BY subscription_type, DATE_TRUNC('month', signup_date)
ORDER BY cohort DESC, subscription_type;

Результат показал:

  • Starter: 15% churn в месяц
  • Professional: 8% churn
  • Enterprise: 2% churn

Это означало, что нам нужны разные модели для каждого типа.

Слой 2: Сегментирование по Firmographics

Это данные о компании, а не пользователе.

Переменные:

  • Размер компании (количество сотрудников)
  • Отрасль (SaaS, eCommerce, B2B, etc.)
  • Страна / регион
  • Возраст компании (startup vs established)

Анализ:

WITH firmographic_analysis AS (
  SELECT 
    company_size_bucket,  -- small, medium, large, enterprise
    industry,
    COUNT(*) as users,
    COUNT(CASE WHEN churned THEN 1 END) as churned,
    ROUND(100.0 * COUNT(CASE WHEN churned THEN 1 END) / COUNT(*), 2) as churn_rate,
    ROUND(AVG(ltv), 0) as avg_ltv
  FROM users
  GROUP BY company_size_bucket, industry
)
SELECT * FROM firmographic_analysis
ORDER BY churn_rate DESC;

Выводы:

  • Startups (1-10 человек) имели 20% churn — они экспериментируют
  • SMB (11-100) имели 8% churn — они ищут стабильность
  • Enterprise (100+) имели 3% churn — commitment высокий

По отраслям:

  • SaaS: 7% churn (понимают инструменты)
  • eCommerce: 12% churn (менее опытны)
  • Services: 9% churn (средне)

Это привело к созданию 3-4 отдельных моделей на основе firmographics.

Слой 3: Сегментирование по поведению на Onboarding

Самое важное сегментирование! Поведение в первый месяц определяло судьбу клиента.

Метрики onboarding:

WITH onboarding_behavior AS (
  SELECT 
    user_id,
    -- День 1-7
    COUNT(CASE WHEN DAY = 'day1' THEN 1 END) as login_day1,
    COUNT(CASE WHEN event = 'team_invite' AND DAY <= 'day7' THEN 1 END) as invites_week1,
    COUNT(CASE WHEN event = 'create_contact' AND DAY <= 'day7' THEN 1 END) as contacts_week1,
    COUNT(CASE WHEN event = 'integration_connect' AND DAY <= 'day7' THEN 1 END) as integrations_week1,
    -- День 8-30
    COUNT(CASE WHEN event = 'first_sales_activity' AND DAY <= 'day30' THEN 1 END) as first_activity_by_day30,
    MAX(CASE WHEN event = 'first_sales_activity' THEN day_number END) as days_to_first_activity
  FROM user_events
  GROUP BY user_id
)
SELECT * FROM onboarding_behavior;

На основе этого создал 4 сегмента:

Сегмент 1: "Powered Users"

  • Пригласили >3 команды в неделю 1
  • Создали >5 контактов
  • Используют интеграции
  • Churn rate: 3%
CREATE VIEW powered_users AS
SELECT user_id 
FROM onboarding_behavior
WHERE invites_week1 >= 3 
  AND contacts_week1 >= 5
  AND integrations_week1 >= 1;

Сегмент 2: "At-Risk Active"

  • Логиния есть, но мало действий
  • Приглашения есть, но не много контактов
  • Нет интеграций
  • Churn rate: 18% ⚠️
CREATE VIEW at_risk_active AS
SELECT user_id 
FROM onboarding_behavior
WHERE invites_week1 < 3 
  AND contacts_week1 >= 1
  AND integrations_week1 = 0;

Сегмент 3: "Struggling Starters"

  • Практически никакой активности
  • Запустили, но не заполнили данные
  • Churn rate: 35% 🔴
CREATE VIEW struggling_starters AS
SELECT user_id 
FROM onboarding_behavior
WHERE invites_week1 = 0 
  AND contacts_week1 < 2;

Сегмент 4: "Late Bloomers"

  • Начали медленно, но активировались на неделю 2-4
  • Дожидаются, когда окупится
  • Churn rate: 8%
CREATE VIEW late_bloomers AS
SELECT user_id 
FROM onboarding_behavior
WHERE (invites_week1 = 0 OR contacts_week1 < 2)
  AND days_to_first_activity <= 30;

Слой 4: Сегментирование по хронологии

Cohort Analysis — когда клиент присоединился

-- Анализируем, как менялся churn по месяцам регистрации
SELECT 
  DATE_TRUNC('month', signup_date)::date as signup_cohort,
  DATE_TRUNC('month', churn_date)::date as churn_cohort,
  COUNT(*) as users,
  (DATE_TRUNC('month', churn_date) - DATE_TRUNC('month', signup_date)) / INTERVAL '1 month' as months_to_churn
FROM users
WHERE churned
GROUP BY signup_cohort, churn_cohort
ORDER BY signup_cohort DESC;

Это показало:

  • 2024 Q1: Старые клиенты, очень лояльные (5% churn)
  • 2024 Q2: Новые клиенты, эксперимент (12% churn)
  • 2024 Q3: Миграция с конкурента (8% churn)

Слой 5: RFM Сегментирование

Для клиентов, которые УЖЕ подписаны, использовал RFM (Recency, Frequency, Monetary).

Переменные:

  • R (Recency): дни с последней активности
  • F (Frequency): количество действий в месяц
  • M (Monetary): сумма платежей / MRR
WITH rfm AS (
  SELECT 
    user_id,
    EXTRACT(DAY FROM NOW() - MAX(activity_date)) as recency,
    COUNT(*) as frequency,
    SUM(mrr) as monetary
  FROM user_activities
  GROUP BY user_id
),
rfm_scored AS (
  SELECT 
    user_id,
    recency,
    frequency,
    monetary,
    NTILE(5) OVER (ORDER BY recency DESC) as r_score,  -- обратный порядок
    NTILE(5) OVER (ORDER BY frequency) as f_score,
    NTILE(5) OVER (ORDER BY monetary) as m_score
  FROM rfm
),
rfm_segment AS (
  SELECT 
    user_id,
    CONCAT(r_score, f_score, m_score) as rfm_segment,
    CASE 
      WHEN r_score IN (4,5) AND f_score IN (4,5) AND m_score IN (4,5) THEN 'Champions'
      WHEN r_score IN (3,4,5) AND f_score IN (3,4,5) THEN 'Loyal Customers'
      WHEN r_score IN (1,2) THEN 'At Risk'
      ELSE 'Potential Churners'
    END as segment_name
  FROM rfm_scored
)
SELECT * FROM rfm_segment;

Результат:

Champions          → 2% churn
Loyal Customers    → 5% churn
At Risk            → 20% churn
Potential Churners → 40% churn

Как я использовал эти сегменты

1. Разные модели предсказания

# Для каждого сегмента своя модель
models = {
    'powered_users': train_model(powered_users_data),
    'at_risk': train_model(at_risk_data),
    'struggling': train_model(struggling_data),
}

def predict_churn(user_id):
    segment = get_user_segment(user_id)
    model = models[segment]
    return model.predict(user_features)

2. Разные стратегии интервенции

СегментСтратегия
Powered UsersНичего, они happy
At-Risk ActiveПредложить Advanced features
StrugglingEmail с best practices
Late BloomersЛичное письмо от Success manager
At Risk (RFM)Скидка 20% на продление
ChampionsПопросить referral

3. Дашборд по сегментам

SELECT 
  segment_name,
  COUNT(*) as total_users,
  COUNT(CASE WHEN churned THEN 1 END) as churned,
  ROUND(100.0 * COUNT(CASE WHEN churned THEN 1 END) / COUNT(*), 2) as churn_rate,
  ROUND(AVG(ltv), 0) as avg_ltv,
  COUNT(CASE WHEN contacted_by_success_team THEN 1 END) as contacted,
  COUNT(CASE WHEN saved_after_contact THEN 1 END) as saved
FROM users u
JOIN user_segments s ON u.id = s.user_id
GROUP BY segment_name
ORDER BY churn_rate DESC;

Итоговая структура

Сегментирование было иерархическим:

(Все клиенты)
  ├── По типу подписки (Starter/Pro/Enterprise)
  │   ├── По размеру компании
  │   ├── По отрасли
  │   └── По поведению на onboarding
  │       ├── Powered Users
  │       ├── At-Risk Active
  │       ├── Struggling
  │       └── Late Bloomers
  └── Активные клиенты
      └── RFM сегментирование
          ├── Champions
          ├── Loyal
          ├── At Risk
          └── Churners

Результаты

Благодаря такому детальному сегментированию:

  • Улучшили точность predicting churn с 74% до 84%
  • Смогли таргетировать интервенции на нужные группы
  • Сократили неправильные скидки для уже лояльных клиентов
  • Сэкономили бюджет Support team на Powered Users

Важные выводы

  1. Не все сегменты равны — сегменты должны иметь разные churn rates, иначе они не полезны

  2. Иерархия важна — сначала сегментируй по бизнес-метрикам (подписка), потом по поведению

  3. Поведение > Демография — то, что клиент ДЕЛАЕТ в первый месяц, важнее, чем его размер

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

  5. Валидируй сегменты — убедись, что каждый сегмент имеет смысл и отличается от других

Это сегментирование стало основой для всей дальнейшей аналитики и оптимизации в компании.

Какое сегментирование использовал в проекте? | PrepBro