Case File
Kocaeli Real Estate Price Prediction & Market Intelligence
End-to-end model and product line predicting unit price (TL/m²) from Kocaeli sale and rental listings with fold-safe features. Global R² 0.652, MAPE 11.8%; in active development.
- Domain
- Data Science
- Focus
- Price prediction, market intelligence
- Stack
- Python, Pandas
- Status
- In active development
- Year
- 2026
Live snapshot · Data as of 2026-08-10T21:05:32.946Z · ps-20260810T210526Z
Global R²
0.652
Global MAPE
11.8%
Sale + rental
6,979 + 3,573
R² is the share of variance explained, not “65% of predictions are correct”. MAPE is mean absolute percentage error. Sale and rental counts are inventory totals; evaluation used 6,667 rows.
Outcome summary
- Site and project identity signals were validated on the Kocaeli global model.
- After the V24.1 merge repair, full_v24 became the new global best checkpoint.
- Raw listing title, site, and address were turned into county-scoped, fold-safe features instead of being fed raw into the model.
What remains hard
- Underprediction on premium and top-decile listings is not fully resolved.
- Unobserved signals such as interior quality, true view, façade, and in-site unit position still set a performance ceiling.
Actual vs predicted density
FIG. Actual vs predicted (unit price)
Cell intensity equals count or density · Model target: unit_price_gross (TL/m²)
- Predictions follow the overall price structure along the unit-price diagonal.
- Mean-pull and underprediction can still appear in the most expensive segment.
Problem: why this is hard
Counties inside the same province have different price mechanisms and listing densities.
Premium, large-home-heavy areas such as Başiskele can show variance compression.
Listing fields are incomplete, inconsistent, and user-entered.
Site and project names have spelling variants, and the same name can appear in different counties, so they cannot be used raw.
The model must capture spread in expensive, heterogeneous segments, not only the mean.
System overview
FIG. Data and product flow
- 01Public sale and rental listings
- 02Cleaning, geo and location features, trend and demographic enrichment
- 03Site, project, duplex, and large-home extraction
- 04Fold-safe model pipeline and validation
- 05Prediction service
- 06User location and site selection
- 07Point estimate plus reasonable value band
The user picks a map location (lat/lon). Nearby known site and project options appear. “No site”, “not in list”, and a manual site name are supported. An unknown manual name is never wired into target encoding; it is collected as feedback.
Dataset evidence
FIG. Sale and rental by county
Volume is not success by itself. Uneven county coverage is why evaluation is reported county by county, not only as a single global score.
Listing growth
Kocaeli · Europe/Istanbul · saved_at · 2026-05-25 to 2026-08-09
Last 30 days: new listings per day
FIG. Daily new listings (saved_at, Europe/Istanbul)
All-time cumulative listings
FIG. Cumulative sale, rental, and total
Technical innovations
Site and project identity
- Raw title, site_name, and address_text do not enter the model directly.
- Identity is county-scoped (for example basiskele::zeray_perla).
- Controlled categorical and flag features plus fold-safe target encoding; merge audit catches bad joins.
- V24.1: severe merge warnings = 0; 12 non-blocking possible bad merges remain for manual review.
Duplex and large-home signals
- Structured detail_konut_tipi is the primary source; title is fallback only.
- On conflict, structured detail wins. “Ara Kat” versus “Ara Kat Dubleks” is preserved.
- Roof, garden, mid-floor, and standard duplex flags and types; large-home buckets and site interactions.
Example feature families
- site_project_id
- has_site_project_id
- frequency bucket
- match source
- site quality tier
- OOF price/residual/confidence
- county/district/location/duplex interactions
Model and experiment timeline
FIG. Selected milestones
V1 to V16 / legacy thesis era
[rejected]Classical tabular models; low R² and variance compression in Başiskele.
V17 to V18 / location era
[selected]Geo features lifted Başiskele; the comparable-market predictor was rejected.
V19 / calibration diagnostics
[rejected]Isotonic and linear calibration and a no-ridge variant were tried; R² and MAPE worsened, so they were rejected.
V20 to V21 / site-project signals
[selected]Site and project identity produced the first meaningful lift; extraction improved.
V22 / satellite pilot
[diagnostic]GEE and Sentinel features gave no meaningful lift and were closed as diagnostic.
V23 / duplex interactions
[selected]Modest but consistent lift on refreshed Başiskele data; Başiskele-only best.
V24 to V24.1 / global repair
[current best]Kocaeli global site-aware model; after merge repair, full_v24 is the global best.
Results
Selected experiment full_v24 on kocaeli_global. County metrics, variance ratio, leakage, and merge audit details sit in the panels below.
vs duplex_largehome_global: R² +0.01646, MAPE -0.00241; variance ratio improved
County results
| County | R² | MAPE |
|---|---|---|
| İzmit | 0.682681 | 0.129376 |
| Gölcük | 0.670027 | 0.118001 |
| Başiskele | 0.511732 | 0.102983 |
| Karamürsel | 0.578453 | 0.158589 |
| Kartepe | 0.550115 | 0.101380 |
Merge audit
Severe merge warnings: 0. Possible bad merges: 12 (non-blocking manual review).
Product translation: value band
FIG. Illustrative total property value
Illustrative example: total property value
Illustrative example: total property value (not unit price TL/m²)
- Estimated value
- 7.2M TL
- Reasonable value range
- 6.5M TL to 8.0M TL
- Wider market range
- 6.1M TL to 8.4M TL
The product leads with a point estimate and a reasonable band; a wider market range stays in detail or tooltip. Intervals are a more honest decision aid for users than quoting R² alone.
Limitations
- Premium and top-decile underprediction continues.
- Visual and interior quality, view, and façade signals are unobserved.
What did not improve the model
- V19 calibration: variance ratio opened slightly, but R² and MAPE worsened, so it was rejected.
- The no-ridge variant degraded and was rejected.
- V22 Sentinel satellite environment indices produced no meaningful lift over V21 and were closed as diagnostic.