Mebourne Short-Term Rental Analytics
Objective
Developed an end-to-end machine learning pipeline to accurately forecast short-term rental prices across Melbourne suburbs. By extracting signals from listing metadata, host behavior, and geographic characteristics, the project provides a data-driven benchmark for evaluating expected rental returns and setting competitive property rates.
tool
Python, Jupyter Notebook, pandas, numpy, matplotlib, seaborn, scikit-learn, CatBoost, XGBoost, Optuna
award
Top 5 Finish / 100+ Competitors
Role
Lead Data Analyst / Machine Learning Engineer

PROJECT OVERVIEW
Dataset: Melbourne Airbnb listings with 7,000 training rows and 3,000 test rows.
Problem: Predict the listing price using host details, location, property attributes, reviews, availability, and amenities.
Scope: Task 1 covered problem understanding and data analysis; Task 2 focused on cleaning, imputation, and feature engineering; Task 3 trained and compared machine learning models for final prediction.
Evaluation: Forecast quality was judged by Mean Absolute Error (MAE), which measures average absolute difference between predicted and actual prices
GOAL
Build an accurate pricing model for Airbnb listings in Melbourne.
Understand which listing, host, and location features drive price.
Produce a submission that performs strongly on the Kaggle-style leaderboard.
Demonstrate a complete end-to-end analytics workflow from EDA and preprocessing to model tuning and submission.
Leaderboard: 5th / 100+ competitors

METHODOLOGY
Problem analysis
Defined the forecasting task and stakeholder value for hosts, travelers, Airbnb, and investors.
Evaluated MAE as the competition metric and its strengths/weaknesses.
Data cleaning and preprocessing
Converted mixed-format numeric fields to numeric values (
price,host_response_rate,host_acceptance_rate,bathrooms).Investigated missing data and imputed gaps in both train and test sets.
Filled missing free-text fields with placeholder text.
Imputed categorical missing values with mode and numeric missing values with mean.
Converted review dates to datetime and filled missing review dates by forward fill.
Feature engineering
Extracted new verification flags from
host_verifications.Generated amenity summary features by grouping amenities into quartile-based buckets.
Created binary amenity flags such as
has_balcony,has_TV,has_AC.Added
room_type_encodedandhost_response_timeordinal encodings.Computed geographic feature
distance_to_CBD_km.Derived
yrs_experiencefromhost_since.Ranked property type categories with
prop_main_rank.Created price-tier amenity counts and other engineered numeric indicators.
Encoding
Used one-hot encoding for high-cardinality categorical variables after mapping to top categories plus
other.Encoded binary flags from
t/fstrings to 0/1.Dropped raw text and redundant columns after encoding.
Modeling
Performed EDA using Spearman correlation and Random Forest feature importance.
Selected three models: Random Forest, XGBoost, and CatBoost.
Tuned hyperparameters via cross-validation and Optuna for CatBoost.
Log-transformed price with
log1p(price + 10)to stabilize skew.Compared model performance and selected the best performing model for submission.





Business Insights
Price distribution was highly right-skewed, with extreme outliers above $100,000 and many listings clustered below $300.
Key price drivers were location, listing size, availability, and property type rather than individual review scores.
Location and capacity interactions mattered more than any single predictor, so tree-based models were a strong fit.
Categorical encoding, feature engineering, and careful imputation were essential for stable model performance.
The tuned CatBoost model achieved the best results and was used for the final Kaggle submission, reaching a leaderboard performance consistent with the notebook’s reported score.
