tgoop.com/eboutdatascience/31
Last Update:
Как сделать рекомендательную систему
🧮
Мне дали тестовое задание после выигранного хака от Росэлторга 😎
На вход: у вас есть услуга ,и её надо продать. Также есть её описание: цена, категория, площадка продажи и тд.
На выход: топ покупателей, которые в потенциале могут заинтересовать этой услугой
Решение:
1️⃣ Преподготовка данных.
Датасеты, которые мне дали были довольно таки большие, поэтому я разбил его на рандомные строки и смерджил
Почистил их, сгенерил пару фич и свалидировал на основании времени
Дефолтная скучная фигня в данном случае
2️⃣ Обучение модельки
На одну услугу претендует несколько продавцов, но выигрывает только один. Поэтому я решил задачу бинарной классификации (чи купил/чи не купил).
ROC-AUC = 0.907 | PR-AUC = 0.955
Репозиторий с хорошими примерами использования CatBoost
3️⃣ Формирование эмбеддинга
Также в данных было описание: "Продам ребёнка машину недорого 3-х лет "
Найдя похожие записи про продажи детей машин, я бы сократил мою выборку, над которой работала уже обученная модель, в несколько раз
Я использовал FastText над лемматизированными словами. так как он не боится редких слов и не боится орфографических ошибок из-за n-gramm
4️⃣ Метрики
Было подсчитано две метрики
1 - Для какой части процедур в зависимости от n угадали хотя бы одного участника, то есть с какой долей вероятности мы угадали хотя бы одно микрославича
2 - Общая доля угаданных уникальных участий, сколько в среднем микрославичей мы можем угадать
Вывод:
Можно построить рекомендательную системы таким образом, которым я рассказал. Такой подходит тогда, когда у вас нет оценки релевантности у продукта, а только лишь его описание. Такой метод называется Контентной рекомендацией.
Отбор кандидатов - нахождение похожих товаров с помощью FastText и косинусной близости
Формирование фичей и применение модельки поверх всего говна, которого мы сделали 💩
BY Ebout Data Science | Дима Савелко

Share with your friend now:
tgoop.com/eboutdatascience/31