Churn Prediction s Machine Learning: Praktický průvodce
Churn Prediction s Machine Learning: Praktický průvodce
Co kdybyste věděli týden předem, kteří zákazníci se chystají odejít? S machine learning modelem pro predikci churnu to je možné — a nepotřebujete k tomu data science tým.
Proč predikovat churn?
Ekonomika churnu je brutální:
- Win-back churned zákazníka stojí 5-10x více než retence
- Zvýšení retence o 5% může zvýšit profit o 25-95% (Bain & Company)
- Většina churnu je předvídatelná — zákazníci vysílají signály týdny předem

Jak churn prediction funguje?
ML model analyzuje historická data o zákaznících, kteří odešli, a identifikuje patterns. Tyto patterns pak aplikuje na aktivní zákazníky a přiřadí jim churn risk score.
[Historická data] → [ML Model Training] → [Churn Risk Score]
↓ ↓
[Patterns churnu] [Proaktivní intervence]
Data, která potřebujete
1. Behavioral Features
Nejsilnější prediktory churnu jsou změny v chování:
| Feature | Popis | Importance |
|---|---|---|
| Login frequency trend | Pokles loginů vs. baseline | Vysoká |
| Feature usage depth | Počet používaných funkcí | Vysoká |
| Session duration trend | Změna délky sessions | Střední |
| Time since last activity | Dny od poslední akce | Vysoká |
| Key action completion | Dokončení core workflows | Vysoká |
2. Engagement Features
| Feature | Popis | Importance |
|---|---|---|
| Email open rate | Otevírání komunikace | Střední |
| In-app notification clicks | Engagement s notifikacemi | Střední |
| Support ticket frequency | Nárůst = problém | Střední |
| NPS/CSAT scores | Poslední feedback | Vysoká |
3. Business Features
| Feature | Popis | Importance |
|---|---|---|
| Contract type | Monthly vs annual | Střední |
| Payment failures | Failed payments | Vysoká |
| Pricing tier changes | Downgrade history | Vysoká |
| Account age | Tenure zákazníka | Nízká |
| Company size | SMB vs enterprise | Střední |
Feature Engineering: Klíč k úspěchu
Raw data nestačí — musíte je transformovat na features, které zachycují trends a patterns.
Příklady feature engineering:
1. Rolling averages:
login_7d_avg = logins_last_7_days / 7
login_30d_avg = logins_last_30_days / 30
login_trend = login_7d_avg / login_30d_avg # <1 = declining
2. Percentile ranking:
usage_percentile = percentile_rank(user_usage, all_users_usage)
# Uživatel v 10. percentilu = riziko
3. Days since events:
days_since_last_login = today - last_login_date
days_since_last_key_action = today - last_key_action_date
4. Velocity metrics:
feature_adoption_velocity = new_features_used_30d / total_features
Model Selection
Pro začátek: Logistic Regression
Výhody:
- Jednoduchý na implementaci
- Interpretovatelný (víte, co ovlivňuje score)
- Rychlý na trénování
- Funguje i s menším datasetem
Kdy použít: Méně než 10,000 zákazníků, potřeba interpretability.
Pro produkci: Random Forest / XGBoost
Výhody:
- Vyšší accuracy
- Automaticky zachytí non-linear vztahy
- Robustní vůči outliers
- Feature importance zdarma
Kdy použít: 10,000+ zákazníků, accuracy je priorita.
Porovnání modelů
| Model | Accuracy | Interpretability | Training Time | Best For |
|---|---|---|---|---|
| Logistic Regression | 70-80% | Vysoká | Minuty | Začátky, malé datasety |
| Random Forest | 80-85% | Střední | Hodiny | Balanced approach |
| XGBoost | 85-90% | Nízká | Hodiny | Maximum accuracy |
| Neural Network | 85-92% | Velmi nízká | Dny | Velmi velké datasety |
Implementace krok za krokem
Krok 1: Připravte training data
# Příklad struktury dat
training_data = {
'customer_id': [...],
'login_trend': [...],
'feature_usage_score': [...],
'days_since_activity': [...],
'support_tickets_30d': [...],
'nps_score': [...],
'churned': [0, 1, 0, 1, ...] # Target variable
}
Krok 2: Train model
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
X = training_data[features]
y = training_data['churned']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)
Krok 3: Evaluate
from sklearn.metrics import classification_report, roc_auc_score
y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred))
print(f"AUC: {roc_auc_score(y_test, model.predict_proba(X_test)[:,1])}")
Krok 4: Deploy a score aktivní zákazníky
def get_churn_score(customer_features):
return model.predict_proba(customer_features)[0][1]
# Score všech aktivních zákazníků
for customer in active_customers:
features = extract_features(customer)
churn_score = get_churn_score(features)
save_to_database(customer.id, churn_score)
Integrace do produktu
Automated Alerts
Nastavte thresholds a automatické notifikace:
| Churn Score | Risk Level | Action |
|---|---|---|
| 0.8+ | Critical | Okamžitý outreach od CS |
| 0.6-0.8 | High | Automated email + CS flag |
| 0.4-0.6 | Medium | Engagement campaign |
| <0.4 | Low | Standard communication |
Trigger-based Campaigns
Příklad workflow:
- Churn score překročí 0.6
- Trigger personalizovaný email: "Všimli jsme si, že jste méně aktivní..."
- Nabídněte value: tutorial, feature highlight, nebo personal call
- Track response a adjust score
Customer Success Dashboard
Vytvořte dashboard pro CS tým:
- Seznam high-risk zákazníků
- Důvody (top contributing features)
- Doporučené akce
- History intervencí
Měření úspěchu
| Metrika | Popis | Cíl |
|---|---|---|
| Precision | % správně identifikovaných churnerů | 70%+ |
| Recall | % zachycených churnerů | 80%+ |
| Churn rate reduction | Snížení churnu po implementaci | -15-30% |
| Intervention success rate | % úspěšných zachránění | 20-40% |
Závěr
Churn prediction není rocket science — s dnešními nástroji může implementovat každý growth tým. Klíčem je:
- Správná data — behavioral features jsou nejdůležitější
- Jednoduchý start — začněte s logistic regression
- Integrace — model bez akce je zbytečný
- Iterace — neustále zlepšujte na základě výsledků
Akční kroky:
- Identifikujte dostupná data ve vašich systémech
- Připravte training dataset (minimálně 1000 zákazníků, ideálně 10,000+)
- Implementujte základní model
- Integrujte do CS workflow
- Měřte a iterujte