⏳ Загрузка объявлений…
Рекомендации для определения зоны поиска
  1. Имеет смысл ограничиться одним типом объектов. Например, «Однокомнатные квартиры», так как цена за квадратный метр однокомнатной и трехкомнатной квартиры может сильно различаться, что искажает медианные и средние метрики, используемые в оценке рисков.
  2. Имеет смысл ограничиться небольшой, но достаточной областью. Идеально, если в области будет от нескольких десятков до нескольких сотен объектов. Тогда оценка будет наиболее корректной, так как большая область может содержать серьезный разброс цен.
  3. Если область содержит несколько тысяч объектов, сбор информации будет выполнен в случайном порядке по нескольким сотням (примерно 500). При необходимости на последующих этапах можно запустить сбор для подобласти внутри исходной области.
  4. Используя инструмент «Ножницы», вы можете вырезать из выборки область и все входящие в нее объекты. Это нужно для формирования отчета.

Методика RiskEstate

1) Сбор выборки

Для объекта подбираются аналоги того же типа недвижимости. Поиск выполняется в расширяющемся радиусе: от ближайшего окружения до более широкой зоны, пока не набирается достаточная выборка.

2) Риск объявления (0–100)

Показатель отражает, насколько цена объекта выглядит подозрительно низкой относительно похожих объявлений. Чем выше значение, тем сильнее цена отклоняется вниз от рынка.

Итоговый риск объявления
R_listing = 0.50*risk_ratio + 0.30*risk_z + 0.20*risk_pct
R_listing = 0.50 * risk_ratio + 0.30 * risk_z + 0.20 * risk_pct
Диапазон: 0..1 (в интерфейсе отображаем как 0..100 баллов).
Смысл: чем выше значение, тем сильнее цена выглядит подозрительно низкой.
Компонента отклонения от медианы
ratio = price_per_m2 / median
ratio = price_per_m2 / median
Где: price_per_m2 — цена объекта за м², median — медиана по сравнимым объявлениям.
Интерпретация: ratio < 1 — объект дешевле медианы рынка.
Modified z-score через MAD
z = 0.6745 * (price_per_m2 - median) / mad_std
z = 0.6745 * (price_per_m2 - median) / mad_std
Где: mad_std — робастная оценка разброса цен.
Интерпретация: отрицательные z означают цену ниже рынка.
Сигмоида для компоненты риска
risk_z = 1 / (1 + exp(z / 0.4))
risk_z = 1 / (1 + exp(z / 0.4))
Диапазон: 0..1.
Смысл: чем сильнее цена ниже медианы, тем ближе risk_z к 1.
Компонента положения в распределении
risk_pct = 1 - percentile_rank / 100
risk_pct = 1 - percentile_rank / 100
Где: percentile_rank — позиция цены в распределении (0..100).
Смысл: чем объявление ближе к «самым дешевым», тем выше risk_pct.

3) Рейтинг продавца (0–100 баллов)

Рейтинг показывает надежность продавца по его истории в базе. Чем выше показатель, тем более стабильной выглядит история его объявлений.

Вес свежести объявления
w_i = exp(-age_days/90)
w_i = exp(-age_days / 90)
Диапазон: 0..1.
Смысл: свежие объявления имеют больший вес, старые — меньший.
Взвешенный средний риск автора
weighted_avg_risk = sum(w_i*r_i) / sum(w_i)
weighted_avg_risk = sum(w_i * r_i) / sum(w_i)
Где: r_i — риск i-го объявления автора (neighborhood_risk_score).
Сглаженный риск автора (Bayesian smoothing)
smoothed_risk = (prior_risk*prior_weight + weighted_avg_risk*total_w) / (prior_weight + total_w)
smoothed_risk = (prior_risk * prior_weight + weighted_avg_risk * total_w) / (prior_weight + total_w)
Где: prior_risk — базовый риск по рынку (в batch — медиана рисков датасета),
prior_weight — сила сглаживания (текущее значение 2.0),
total_w — сумма весов свежести.
Смысл: при малом числе объявлений оценка ближе к рыночному baseline.
Итоговый рейтинг продавца
trust_score = round((1 - smoothed_risk)*100)
trust_score = round((1 - smoothed_risk) * 100)
Диапазон: 0..100.
Смысл: чем выше рейтинг, тем надежнее профиль продавца по истории его объявлений.
Особое правило при одном объявлении
При scored_count = 1: smoothed_risk = risk_единственного_объявления
Если у автора только одно объявление с рассчитанным риском, сглаживание к prior не применяется.

4) Важные ограничения

🔍 Добавить область для поиска

Сбор объявлений… 0%
Подключение…