Выключить гедоническую коррекцию — она стала чистым занижением цены #3538
2 changed files with 94 additions and 74 deletions
|
|
@ -430,7 +430,27 @@ class Settings(BaseSettings):
|
||||||
# эконом/комфорт/премиум лучше, элит без изменений (no harm).
|
# эконом/комфорт/премиум лучше, элит без изменений (no harm).
|
||||||
# После фактора заново применяется le_asking-кламп (expected_sold ≤ asking).
|
# После фактора заново применяется le_asking-кламп (expected_sold ≤ asking).
|
||||||
# OFF ⇒ точно старое поведение expected_sold.
|
# OFF ⇒ точно старое поведение expected_sold.
|
||||||
estimate_hedonic_correction_enabled: bool = True
|
# ВЫКЛЮЧЕНА 2026-09-16. Замер на проде показал, что коррекция превратилась в
|
||||||
|
# чистое занижение цены: она двигает точку вниз и НЕ покупает за это точности.
|
||||||
|
# Контролируемый эксперимент — одна и та же выборка (--engine full --sample 2000
|
||||||
|
# --since 2025-06-01 --spread scattered --seed 42 --resolve-house-id), меняется
|
||||||
|
# ровно эта переменная:
|
||||||
|
# регион ВКЛ bias/MAPE/покрытие ВЫКЛ bias/MAPE/покрытие
|
||||||
|
# 77 Москва -9.1 / 20.5 / 69.0 -4.1 / 19.7 / 71.2
|
||||||
|
# 50 область -12.1 / 19.4 / 75.4 -10.4 / 19.2 / 74.8
|
||||||
|
# 66 обл. целиком -17.1 / 23.0 / 66.7 -12.4 / 23.2 / 66.2
|
||||||
|
# 66 только ЕКБ -17.4 / 21.2 / 69.8 -14.2 / 21.3 / 69.9
|
||||||
|
# Последняя строка решающая: ЕКБ — ровно та выборка, на которой коэффициенты
|
||||||
|
# перефитили 30.08.2026 (#3248, n=1269). Даже там выключение снимает 3.2 пункта
|
||||||
|
# занижения при неизменных MAPE и покрытии. Механика понятна из самих
|
||||||
|
# коэффициентов: b_larea=0, поэтому фактор = exp(-0.0140 + 0.0769*(year-2000)/20
|
||||||
|
# - 0.0745*[floor==1]), и для дома 1980 года это 0.913, то есть -8.7%. Жилой фонд
|
||||||
|
# в выборке преимущественно старый → фактор systematically < 1 → минус к цене.
|
||||||
|
# Коэффициенты фитили на остатке log(actual_sold/expected_sold) ПРИ ТОЙ базе,
|
||||||
|
# какая была тогда; база с тех пор уехала (area-бакетный ratio #2620, коэффициент
|
||||||
|
# asking->sold пересчитан по регионам 15.09), а хедонику не пересчитывали.
|
||||||
|
# ВКЛЮЧАТЬ ОБРАТНО только вместе с перефитом и замером всех четырёх строк выше.
|
||||||
|
estimate_hedonic_correction_enabled: bool = False
|
||||||
# #3248 (перефит 2026-08-30, n=1269 из свежей прод-фикстуры ЕКБ 1600 сделок).
|
# #3248 (перефит 2026-08-30, n=1269 из свежей прод-фикстуры ЕКБ 1600 сделок).
|
||||||
#
|
#
|
||||||
# Прежние значения (b0=0.6146, year=0.1220, larea=-0.1603, first=-0.1248) зафичены
|
# Прежние значения (b0=0.6146, year=0.1220, larea=-0.1603, first=-0.1248) зафичены
|
||||||
|
|
|
||||||
|
|
@ -2,21 +2,21 @@
|
||||||
"calibration": {
|
"calibration": {
|
||||||
"high": {
|
"high": {
|
||||||
"coverage_pct": 75.0,
|
"coverage_pct": 75.0,
|
||||||
"mape_pct": 25.94,
|
"mape_pct": 19.6,
|
||||||
"n": 8,
|
"n": 8,
|
||||||
"n_covered": 6
|
"n_covered": 6
|
||||||
},
|
},
|
||||||
"low": {
|
"low": {
|
||||||
"coverage_pct": 87.41,
|
"coverage_pct": 83.59,
|
||||||
"mape_pct": 14.06,
|
"mape_pct": 15.64,
|
||||||
"n": 1562,
|
"n": 1562,
|
||||||
"n_covered": 1076
|
"n_covered": 1029
|
||||||
},
|
},
|
||||||
"medium": {
|
"medium": {
|
||||||
"coverage_pct": 73.33,
|
"coverage_pct": 70.0,
|
||||||
"mape_pct": 18.64,
|
"mape_pct": 27.59,
|
||||||
"n": 30,
|
"n": 30,
|
||||||
"n_covered": 22
|
"n_covered": 21
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"confidence_order": [
|
"confidence_order": [
|
||||||
|
|
@ -26,111 +26,111 @@
|
||||||
],
|
],
|
||||||
"expected_sold": {
|
"expected_sold": {
|
||||||
"overall": {
|
"overall": {
|
||||||
"mape_pct": 14.28,
|
"mape_pct": 15.88,
|
||||||
"median_bias_pct": -1.61,
|
"median_bias_pct": 2.87,
|
||||||
"n": 1269,
|
"n": 1269,
|
||||||
"n_no_analogs": 0,
|
"n_no_analogs": 0,
|
||||||
"p25_pct": -14.08,
|
"p25_pct": -10.88,
|
||||||
"p75_pct": 14.6
|
"p75_pct": 22.98
|
||||||
},
|
},
|
||||||
"per_area_bucket": {
|
"per_area_bucket": {
|
||||||
"0 <30": {
|
"0 <30": {
|
||||||
"mape_pct": 16.51,
|
"mape_pct": 19.76,
|
||||||
"median_bias_pct": -3.13,
|
"median_bias_pct": -1.49,
|
||||||
"n": 161,
|
"n": 161,
|
||||||
"p25_pct": -14.08,
|
"p25_pct": -16.45,
|
||||||
"p75_pct": 22.87
|
"p75_pct": 34.7
|
||||||
},
|
},
|
||||||
"1 30-44": {
|
"1 30-44": {
|
||||||
"mape_pct": 14.06,
|
"mape_pct": 15.64,
|
||||||
"median_bias_pct": -2.33,
|
"median_bias_pct": 4.37,
|
||||||
"n": 503,
|
"n": 503,
|
||||||
"p25_pct": -14.49,
|
"p25_pct": -10.58,
|
||||||
"p75_pct": 12.58
|
"p75_pct": 22.86
|
||||||
},
|
},
|
||||||
"2 44-62": {
|
"2 44-62": {
|
||||||
"mape_pct": 12.48,
|
"mape_pct": 13.86,
|
||||||
"median_bias_pct": -0.39,
|
"median_bias_pct": 4.15,
|
||||||
"n": 379,
|
"n": 379,
|
||||||
"p25_pct": -11.23,
|
"p25_pct": -7.92,
|
||||||
"p75_pct": 14.65
|
"p75_pct": 23.85
|
||||||
},
|
},
|
||||||
"3 62-85": {
|
"3 62-85": {
|
||||||
"mape_pct": 15.24,
|
"mape_pct": 15.97,
|
||||||
"median_bias_pct": -1.94,
|
"median_bias_pct": -2.33,
|
||||||
"n": 179,
|
"n": 179,
|
||||||
"p25_pct": -14.98,
|
"p25_pct": -12.1,
|
||||||
"p75_pct": 15.27
|
"p75_pct": 18.18
|
||||||
},
|
},
|
||||||
"4 >=85": {
|
"4 >=85": {
|
||||||
"mape_pct": 20.88,
|
"mape_pct": 20.46,
|
||||||
"median_bias_pct": -10.36,
|
"median_bias_pct": -4.97,
|
||||||
"n": 47,
|
"n": 47,
|
||||||
"p25_pct": -24.08,
|
"p25_pct": -26.03,
|
||||||
"p75_pct": 13.38
|
"p75_pct": 7.15
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"per_rooms": {
|
"per_rooms": {
|
||||||
"0": {
|
"0": {
|
||||||
"label": "студия",
|
"label": "студия",
|
||||||
"mape_pct": 16.51,
|
"mape_pct": 19.76,
|
||||||
"median_bias_pct": -3.13,
|
"median_bias_pct": -1.49,
|
||||||
"n": 161,
|
"n": 161,
|
||||||
"n_no_analogs": 0,
|
"n_no_analogs": 0,
|
||||||
"p25_pct": -14.08,
|
"p25_pct": -16.45,
|
||||||
"p75_pct": 22.87
|
"p75_pct": 34.7
|
||||||
},
|
},
|
||||||
"1": {
|
"1": {
|
||||||
"label": "1к",
|
"label": "1к",
|
||||||
"mape_pct": 14.06,
|
"mape_pct": 15.64,
|
||||||
"median_bias_pct": -2.33,
|
"median_bias_pct": 4.37,
|
||||||
"n": 503,
|
"n": 503,
|
||||||
"n_no_analogs": 0,
|
"n_no_analogs": 0,
|
||||||
"p25_pct": -14.49,
|
"p25_pct": -10.58,
|
||||||
"p75_pct": 12.58
|
"p75_pct": 22.86
|
||||||
},
|
},
|
||||||
"2": {
|
"2": {
|
||||||
"label": "2к",
|
"label": "2к",
|
||||||
"mape_pct": 12.48,
|
"mape_pct": 13.86,
|
||||||
"median_bias_pct": -0.39,
|
"median_bias_pct": 4.15,
|
||||||
"n": 379,
|
"n": 379,
|
||||||
"n_no_analogs": 0,
|
"n_no_analogs": 0,
|
||||||
"p25_pct": -11.23,
|
"p25_pct": -7.92,
|
||||||
"p75_pct": 14.65
|
"p75_pct": 23.85
|
||||||
},
|
},
|
||||||
"3": {
|
"3": {
|
||||||
"label": "3к",
|
"label": "3к",
|
||||||
"mape_pct": 15.24,
|
"mape_pct": 15.97,
|
||||||
"median_bias_pct": -1.94,
|
"median_bias_pct": -2.33,
|
||||||
"n": 179,
|
"n": 179,
|
||||||
"n_no_analogs": 0,
|
"n_no_analogs": 0,
|
||||||
"p25_pct": -14.98,
|
"p25_pct": -12.1,
|
||||||
"p75_pct": 15.27
|
"p75_pct": 18.18
|
||||||
},
|
},
|
||||||
"4": {
|
"4": {
|
||||||
"label": "4+",
|
"label": "4+",
|
||||||
"mape_pct": 20.88,
|
"mape_pct": 20.46,
|
||||||
"median_bias_pct": -10.36,
|
"median_bias_pct": -4.97,
|
||||||
"n": 47,
|
"n": 47,
|
||||||
"n_no_analogs": 0,
|
"n_no_analogs": 0,
|
||||||
"p25_pct": -24.08,
|
"p25_pct": -26.03,
|
||||||
"p75_pct": 13.38
|
"p75_pct": 7.15
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"per_segment": {
|
"per_segment": {
|
||||||
"бизнес": {
|
"бизнес": {
|
||||||
"mape_pct": 16.86,
|
"mape_pct": 19.58,
|
||||||
"median_bias_pct": -16.84,
|
"median_bias_pct": -19.58,
|
||||||
"n": 144,
|
"n": 144,
|
||||||
"p25_pct": -25.83,
|
"p25_pct": -27.32,
|
||||||
"p75_pct": -9.36
|
"p75_pct": -12.79
|
||||||
},
|
},
|
||||||
"комфорт": {
|
"комфорт": {
|
||||||
"mape_pct": 12.14,
|
"mape_pct": 10.68,
|
||||||
"median_bias_pct": -5.9,
|
"median_bias_pct": -5.78,
|
||||||
"n": 425,
|
"n": 425,
|
||||||
"p25_pct": -16.66,
|
"p25_pct": -15.88,
|
||||||
"p75_pct": 4.9
|
"p75_pct": 4.49
|
||||||
},
|
},
|
||||||
"премиум": {
|
"премиум": {
|
||||||
"mape_pct": null,
|
"mape_pct": null,
|
||||||
|
|
@ -140,18 +140,18 @@
|
||||||
"p75_pct": null
|
"p75_pct": null
|
||||||
},
|
},
|
||||||
"эконом": {
|
"эконом": {
|
||||||
"mape_pct": 15.17,
|
"mape_pct": 20.17,
|
||||||
"median_bias_pct": 6.26,
|
"median_bias_pct": 18.98,
|
||||||
"n": 697,
|
"n": 697,
|
||||||
"p25_pct": -6.89,
|
"p25_pct": 1.25,
|
||||||
"p75_pct": 28.97
|
"p75_pct": 41.97
|
||||||
},
|
},
|
||||||
"элит": {
|
"элит": {
|
||||||
"mape_pct": 31.18,
|
"mape_pct": 36.11,
|
||||||
"median_bias_pct": -31.18,
|
"median_bias_pct": -36.11,
|
||||||
"n": 3,
|
"n": 3,
|
||||||
"p25_pct": -46.94,
|
"p25_pct": -44.21,
|
||||||
"p75_pct": -28.1
|
"p75_pct": -32.72
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -162,9 +162,9 @@
|
||||||
},
|
},
|
||||||
"range_coverage": {
|
"range_coverage": {
|
||||||
"overall": {
|
"overall": {
|
||||||
"coverage_pct": 87.0,
|
"coverage_pct": 83.22,
|
||||||
"n": 1269,
|
"n": 1269,
|
||||||
"n_covered": 1104
|
"n_covered": 1056
|
||||||
},
|
},
|
||||||
"per_confidence": {
|
"per_confidence": {
|
||||||
"high": {
|
"high": {
|
||||||
|
|
@ -173,14 +173,14 @@
|
||||||
"n_covered": 6
|
"n_covered": 6
|
||||||
},
|
},
|
||||||
"low": {
|
"low": {
|
||||||
"coverage_pct": 87.41,
|
"coverage_pct": 83.59,
|
||||||
"n": 1231,
|
"n": 1231,
|
||||||
"n_covered": 1076
|
"n_covered": 1029
|
||||||
},
|
},
|
||||||
"medium": {
|
"medium": {
|
||||||
"coverage_pct": 73.33,
|
"coverage_pct": 70.0,
|
||||||
"n": 30,
|
"n": 30,
|
||||||
"n_covered": 22
|
"n_covered": 21
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue