← Назад к вопросам
Анализировал ли удаление приложений
1.0 Junior🔥 141 комментариев
#Метрики и KPI#Опыт работы и проекты
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI21 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
# Анализ удаления приложений (Churn Analysis)
Да, проводил подробный анализ churn в своей практике
Проект 1: FinTech стартап (2017)
Проблема: Retention упал с 42% (3 месяца) до 32%. Нужно понять причину.
Подход:
- Cohort Analysis - разбор по когортам регистрации
SELECT
DATE_TRUNC('month', signup_date) as cohort,
DATE_TRUNC('month', last_activity_date) as activity_month,
COUNT(DISTINCT user_id) as users
FROM users
GROUP BY 1, 2
-- Результат: выявили, что падение начало со спецификации в августе
- Сегментация по характеристикам
- По девайсу (мобиль vs веб): падение retention на мобиле на 20%
- По версии приложения: v2.5 (выпущена в августе) имеет низший retention
- Вывод: баг в UI мобильного приложения v2.5
- Анализ поведения перед удалением
- Users, которые удалили: меньше сессий, короче время использования
- За неделю до удаления: 40% вообще не заходили в приложение
Результат: Engineering зафиксил баг за 2 дня. Retention восстановился. Impact: сохранили $2M+ в году.
Проект 2: SaaS платформа (2021)
Задача: Предсказать, какие пользователи удалят приложение в следующем месяце.
Методология:
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
# Features (за последние 30 дней)
features = [
'days_since_signup', # Новые юзеры склонны удалять чаще
'sessions_count', # Активные юзеры не удаляют
'avg_session_duration', # Engaged юзеры лучше
'features_used_count', # Много функций = более вовлечён
'support_tickets_count', # Баги = проблемы = удаление
'payment_failures', # Проблемы с платежом
'days_since_last_activity' # Долгая неактивность = риск
]
# Build model
X = user_data[features]
y = user_data['churned_next_30_days']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
model = RandomForestClassifier(n_estimators=100, max_depth=8, random_state=42)
model.fit(X_train, y_train)
# Feature importance
feature_importance = pd.DataFrame({
'feature': features,
'importance': model.feature_importances_
}).sort_values('importance', ascending=False)
# Predict churn probability
user_data['churn_prob'] = model.predict_proba(X)[:, 1]
# Top risk users (20%)
threshold = user_data['churn_prob'].quantile(0.8)
at_risk = user_data[user_data['churn_prob'] >= threshold]
Model Performance:
- AUC: 0.82
- Recall: 75% (выявляем 75% реальных churn)
- Precision: 58% (58% предсказанных churn действительно удаляют)
Action: Sales team проводил proactive outreach:
- Звонки at-risk users
- Персональные предложения (скидки, новые фичи)
- Результат: сохранили 35% at-risk users = $5M revenue/год
Проект 3: Анализ причин удаления (Qualitative)
Метод: Опрос удалил пользователей через push-уведомление
"Почему вы удалили приложение?"
1. Не нашёл нужной функции (32%)
2. Приложение часто падает (18%)
3. Слишком сложный интерфейс (15%)
4. Лучше альтернатива (12%)
5. Перестал нужно (10%)
6. Плохо работает на моём девайсе (8%)
7. Дорого (5%)
Действия:
- #1: Добавили недостающие функции (опрос показал, что нужны)
- #2: Зафиксили критические баги
- #3: Переделали UI (упростили)
Result: Следующий месяц retention улучшился на 8%.
Основной подход к анализу churn
- Quantitative: Когортный анализ, предсказательное моделирование
- Qualitative: Опросы, интервью с удалившими
- Behavioral: Анализ последовательности действий перед удалением
- Temporal: Когда удаляют (день недели, время суток)
SQL для анализа churn
-- Когортный анализ
WITH cohorts AS (
SELECT
user_id,
DATE_TRUNC('month', signup_date)::date as cohort,
DATE_TRUNC('month', last_activity_date)::date as activity_date,
(DATE_PART('year', DATE_TRUNC('month', last_activity_date)) -
DATE_PART('year', DATE_TRUNC('month', signup_date))) * 12 +
(DATE_PART('month', DATE_TRUNC('month', last_activity_date)) -
DATE_PART('month', DATE_TRUNC('month', signup_date))) as months_since_signup
FROM users
)
SELECT
cohort,
months_since_signup,
COUNT(DISTINCT user_id) as active_users,
LAG(COUNT(DISTINCT user_id)) OVER (PARTITION BY cohort ORDER BY months_since_signup) as prev_month_users,
ROUND(100.0 * COUNT(DISTINCT user_id) /
LAG(COUNT(DISTINCT user_id)) OVER (PARTITION BY cohort ORDER BY months_since_signup), 1) as retention_pct
FROM cohorts
GROUP BY 1, 2
ORDER BY 1 DESC, 2;
Insights из анализов
- День 7: Критическая точка. Если юзер не активен на 7-й день, вероятность удаления 60%+
- Новые пользователи: Первые 14 дней определяют судьбу. Если not engaged → удалит
- Bagging: Часто есть волна удалений через 30 дней (когда кончается trial)
- Сезонность: Удаления выше перед выходными, в праздники
Результаты в моей практике
- Снизил чистый churn с 5%/месяц на 2%/месяц через целевые вмешательства
- Предсказал 75% churn до того, как произойдёт
- Сохранил $5-10M в annual revenue через proactive retention efforts