Machine learning · Team project
Berlin Airbnb price prediction
How accurately can listing information predict nightly prices in Berlin, and how well does the model generalize to hosts it has never seen?
Team coursework using the September 2025 Inside Airbnb Berlin snapshot. Listing prices are observational platform data, not a representative sample of all Berlin accommodation or a causal pricing experiment.
View GitHub repositoryLog-target random forest / holdout
- MAE
- €29.59
- RMSE
- €49.24
- R²
- 0.645
Five-split sensitivity check
- Random listings
- MAE €29.32 ± €0.29
- Previously unseen hosts
- MAE €34.45 ± €1.47
Mean ± standard deviation across five splits per design. These values describe split variability, not confidence intervals or individual prediction uncertainty.
Within the team project, I was responsible for modeling, evaluation, and the final analytical summary. I compared multiple model families, selected metrics that remained interpretable in euros, and separated ordinary holdout performance from the harder unseen-host test.
Zeynep Sude Kırlı: exploratory analysis. Natasha Machate: feature engineering. Yazan Aljerro: modeling, evaluation, and final summary. Cleanup, presentation, and discussion were shared.
- 0180/20 listing holdout stratified by price decile, with three-fold cross-validation on training data
- 02Baseline, linear, and ridge models
- 03Random forest and gradient boosting
- 04PyTorch multilayer perceptron
- 05Additional split by previously unseen hosts
- Selected log-target random forest: MAE €29.59, RMSE €49.24, and R² 0.645.
- 63.2% of test predictions fell within €25; 84.4% fell within €50.
- Across five repeated splits, random-listing MAE was €29.32 ± €0.29, versus €34.45 ± €1.47 for unseen hosts (mean ± standard deviation across splits).
- The model estimates association, not causal pricing effects.
- Listing data can encode neighborhood, host, and platform biases; missing prices and upper-tail observations were excluded.
- Some preprocessing, including the upper-tail cutoff and category vocabulary, preceded the split. The evaluation should not be described as entirely leakage-free.
- The unseen-host test reuses the selected model configuration. Split standard deviation is not a confidence interval or an individual prediction interval.
- Modeling notebook (opens in a new tab)
Model selection, target transformation, cross-validation, and holdout evaluation.
- Final evaluation notebook (opens in a new tab)
Five repeated listing splits and five unseen-host splits; variability is standard deviation across splits.
- Data context and team credits (opens in a new tab)
Dataset, preprocessing, collaboration, and scope.