есть в БД много объявлений по продаже и аренде квартир, которые собираются с других сайтов.
Пользователи иногда не корректно публикуют объявления, чаще всего пропускают одну цифру или наоборот добавляют лишний НОЛЬ в цене.
К примеру, вместо 124кв, в объявлении по ошибке написано 1240кв.
или вместо 100 000 USD по ошибке пишут 1 000 000 USD.
Мне нужен механизм, при помощи которого я смогу выявлять, такие объявления.
Сейчас я вытащил из БД объявления на продажу из одного города, всего 51 282 объявления.
Далее я взял 99 перцентиль для price_per_square и вытащил из БД 516 объявления.
https://docs.google.com/spreadsheets/d/1Xjpi-9lZgMmsDCMlDXvB-G2mPROUmlGUxr8k43YTFK4/edit?usp=sharing
- 285 некорректные.
- 65 корректные.
- 166 еще не проверил.
Друзья, пожалуйста подскажите мне методу, при помощи которой можно будет выявлять объявления с неправильной площадью или ценой.
Буду признателен вам за любую информацию.
Я бы построил какую-нибудь простенькую модельку, предсказывающую price_per_square (например, дерево или деревянный ансамбль), и если прогноз отличается от факта в примерно 10 раз (в любую сторону) или в какую-то степень десятки, то это похоже на лишнюю или пропущенную цифру в цене либо метраже. Чтобы моделька нормально обучалась на шумных данных, можно сделать квантильную регрессию, т.е. предсказывать не среднее арифметическое, а медиану (в sklearn'овских деревьях это достигается аргументом criterion="mae").
Это называется Anomaly Detection или более детально Outlier Detection. Я бы гуглил в эту сторону. sklearn содержит несколько алгоритмов для решения этой проблемы (например, IsolationForest).
Обсуждают сегодня