license: mit tags: - hospitality - churn-prediction - customer-analytics - scikit-learn - baseline-model - review-analysis
Guest Churn Risk Prediction โ Hospitality (Baseline Model)
Model Overview
This model predicts guest churn risk in the hospitality context using signals extracted from guest review text.
The goal of the project is to demonstrate how unstructured review data can be transformed into structured features and used to estimate churn likelihood when direct behavioral churn data (repeat bookings, loyalty history) is not available.
This is a baseline, proxy-label model built for learning, experimentation, and portfolio demonstration purposes.
Intended Use
- Identify guests who show high dissatisfaction signals in their reviews
- Flag high churn risk cases for possible service recovery or intervention
- Demonstrate an end-to-end ML workflow: feature engineering โ modeling โ deployment
Not intended for
- Direct revenue forecasting
- Production decision-making without further validation
- Use as a replacement for real churn models based on booking or loyalty data
Dataset Used
Source
Public hotel review datasets from Kaggle, containing structured positive and negative review text.
Key columns used
Positive_ReviewNegative_Review
Dataset size
- ~500,000 hotel reviews (raw)
- After preprocessing and filtering: ~350,000 usable review records
Feature Engineering Approach
Since true churn labels (repeat booking behavior) were not available, a proxy labeling approach was used.
From each review, the following features were engineered:
| Feature | Description |
|---|---|
pos_len |
Length of positive review content |
neg_len |
Length of negative review content |
total_len |
Total review length |
neg_ratio |
Ratio of negative content to total content |
complaint_score |
Discrete score (0โ5) derived from complaint intensity |
Proxy Churn Logic
Guests with:
- long negative reviews
- high negative ratio
- strong complaint language
were treated as higher churn risk during training.
This approach allows churn-like behavior to be modeled using review text alone.
Model Details
- Algorithm: Logistic Regression
- Library: scikit-learn
- Input: Structured numeric features derived from review text
- Output: Probability of guest churn (0โ1)
This model is intentionally simple and interpretable, serving as a strong baseline before more advanced NLP or behavioral models.
Training Strategy
- Text reviews were converted into numeric features
- Proxy churn labels were assigned based on complaint intensity
- Data was split into training and validation sets
- Model performance was evaluated using standard classification metrics
Evaluation Summary
- The model performs best at ranking churn risk, rather than making strict binary decisions
- Predicted probabilities tend to be conservative (clustered in midโhigh ranges)
- A higher decision threshold (โ0.80โ0.90) produces more reliable โHigh churn riskโ flags
This behavior is expected for proxy-label churn models.
Deployment Notes
This model is deployed on Hugging Face and used inside a Streamlit application where:
- Users enter one free-text guest review
- A lightweight text-to-feature layer recreates training-scale features
- The model outputs churn probability and risk classification
Limitations
- This model does not use real churn outcomes
- It relies on heuristic assumptions about dissatisfaction
- Cultural and language variations in reviews are not fully captured
- Review sentiment does not always translate to actual churn behavior
These limitations are acknowledged and documented intentionally.
Ethical Considerations
- Predictions should not be used to penalize guests
- The model should be used for service improvement, not exclusion
- Human judgment must remain part of decision-making
Future Improvements
- Incorporate true behavioral churn data (repeat stays, loyalty history)
- Replace heuristic features with transformer-based text embeddings
- Add probability calibration
- Extend model to multi-class risk bands (Low / Medium / High)
- Evaluate bias across regions and property types
Author Notes
This project was built as a hands-on learning exercise to understand:
- Feature engineering from unstructured text
- Proxy labeling strategies
- Churn modeling challenges
- Model deployment on Hugging Face
It represents a complete, end-to-end applied machine learning workflow rather than a production-ready churn system.
Model Files
churn_model.joblibโ trained scikit-learn modelfeatures.jsonโ feature order and schema