Рекомендательная система подработок по хобби: ML-кейс для ВКР на данных опроса
Поддомен: AI/ML · Роль эксперта: Data/ML-инженер
Введение: почему опрос «Авито» — это готовый датасет для диплома
24 марта 2026 года «Авито Подработка» опубликовала результаты исследования: 28% россиян при выборе частичной занятости ориентируются на собственные хобби и увлечения. Для маркетолога это строчка в пресс-релизе. Для выпускника ИТ-направления — это сигнал: спрос на персонализированный подбор вакансий сформирован, аудитория сегментирована, а значит, есть почва для рекомендательных алгоритмов, аналитических пайплайнов и веб-сервисов.
Тема выигрышная сразу с трёх сторон. Во-первых, она «живая»: комиссия видит, что вы работаете с реальным трендом, а не с выдуманным кейсом. Во-вторых, даёт повод построить полноценный ML-пайплайн — от сбора сырых ответов до ранжирования вакансий. В-третьих, легко укладывается в три главы ВКР по ГОСТ 19 и ГОСТ 34. Ниже — конкретные траектории, инструменты и подводные камни, с которыми вы точно столкнётесь.
FAQ: что студенты спрашивают первым делом
Где брать данные, если опрос закрыт?
Три законных пути: (1) провести собственный опрос через Google Forms или Яндекс.Взгляд на 150–300 респондентов; (2) собрать открытые резюме и вакансии с hh.ru и «Авито» через публичные API в рамках пользовательского соглашения; (3) синтезировать датасет на основе открытой статистики и явно это указать в разделе «Ограничения исследования». Комиссия нормально принимает синтетику, если она обоснована.
Какой стек выбрать, чтобы не утонуть?
Для рекомендательной системы хватит Python + pandas + scikit-learn + FastAPI. Если хотите «взрослый» стек — добавьте MLflow для трекинга экспериментов и PostgreSQL для хранения фичей. Тяжёлые нейросети здесь не нужны: коллаборативная фильтрация на матричной факторизации даёт приемлемое качество на малых данных.
Как считать эффективность модели, чтобы это убедило ГЭК?
Не одним Accuracy. Для ранжирования вакансий стандарт — Precision@K, Recall@K, NDCG@K. Плюс бизнес-метрика: конверсия в отклик на рекомендованную вакансию. Комиссия любит, когда техническая метрика привязана к продуктовой.
Как оформить архитектуру по ГОСТ?
Схему компонентов — по ГОСТ 19.701 (или в нотации C4 Level 2 «Контейнеры»). Диаграмму прецедентов и последовательности — в UML. Схему БД — в нотации IDEF1X или Crow’s Foot. Главное — единый стиль по всей работе и подписи элементов.
Темы ВКР: три рабочие траектории
- Тема 1. Рекомендательная система подбора подработок на основе профиля увлечений.
Актуальность — прямая отсылка к цифре 28% из исследования «Авито».
Цель: разработать гибридный рекомендатель (content-based + collaborative filtering), повышающий релевантность выдачи вакансий.
Задачи: 1) анализ предметной области и существующих рекомендателей; 2) формирование признакового пространства «хобби → категория подработки»; 3) реализация и обучение моделей; 4) оценка Precision@10 и NDCG@10, сравнение с baseline.
Главы: 1 — теория рекомендательных систем и обзор источников; 2 — проектирование архитектуры и обучение модели; 3 — эксперименты, метрики, внедрение через FastAPI. - Тема 2. Аналитическая платформа обработки социологических данных о частичной занятости.
Актуальность — потребность в регулярной обработке опросов о рынке подработок.
Цель: построить ETL-пайплайн и дашборд для визуализации сегментов респондентов.
Задачи: 1) проектирование схемы хранилища (звезда); 2) реализация пайплайна извлечения и трансформации; 3) настройка оркестрации; 4) разработка BI-дашборда и расчёт когортных метрик.
Главы: 1 — анализ методов обработки опросных данных; 2 — проектирование DWH и ETL по ISO/IEC 25010; 3 — тестирование производительности и визуализация. - Тема 3. Микросервисный бэкенд маркетплейса подработок с модулем персонализации.
Актуальность — рост спроса на гибкую занятость и персонализированные сервисы.
Цель: спроектировать отказоустойчивое ядро платформы с интеграцией ML-сервиса.
Задачи: 1) анализ требований и доменной модели; 2) проектирование API и контрактов; 3) реализация сервисов каталога и рекомендаций; 4) нагрузочное тестирование и наблюдаемость.
Главы: 1 — обзор архитектурных паттернов; 2 — проектирование и реализация (C4, OpenAPI); 3 — тестирование, мониторинг, метрики SLO. - Тема 4. Веб-приложение подбора подработки с элементами геймификации профиля интересов.
Актуальность — удержание пользователя через вовлекающий профиль.
Цель: разработать SPA + REST API, где пользователь заполняет «карту хобби» и получает вакансии.
Задачи: 1) UX-исследование и прототип; 2) frontend на React/Vue; 3) backend на FastAPI; 4) юзабилити-тестирование по ISO/IEC 25010 (usability).
Главы: 1 — анализ интерфейсных решений; 2 — проектирование и разработка; 3 — тестирование удобства и производительности.
Основная часть: как «вшить» статью в главы ВКР
Глава 1. Откуда взять проблематику и стандарты
Откройте тезис «28% выбирают подработку по хобби» как отправную точку в разделе «Актуальность». Дальше свяжите его с требованиями к качеству ПО: ISO/IEC 25010 даёт вам готовые характеристики — функциональная пригодность, производительность, удобство использования. Именно их вы будете измерять в третьей главе. Не забудьте про источники: официальная публикация CNews + 2–3 научные статьи по recommender systems за последние 5 лет. Комиссия режет за «один источник на всю теорию».
Глава 2. Проектирование и код
Здесь рисуем диаграммы. Минимальный набор: C4 Level 1 (контекст), C4 Level 2 (контейнеры), UML-диаграмма последовательности для сценария «пользователь → рекомендация», схема БД. Ниже — скелет content-based рекомендателя, который часто идёт в приложение ВКР.
# baseline: сопоставление хобби и категорий вакансий через TF-IDF
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
hobbies = ["фотография", "велоспорт", "кулинария и выпечка", "настольный теннис"]
vacancies = ["фотограф на мероприятие", "курьер на велосипеде",
"кондитер на подработку", "тренер по настольному теннису"]
vec = TfidfVectorizer(analyzer="char_wb", ngram_range=(2, 4))
matrix = vec.fit_transform(hobbies + vacancies)
sim = cosine_similarity(matrix[:len(hobbies)], matrix[len(hobbies):])
for i, h in enumerate(hobbies):
best = sim[i].argmax()
print(f"{h} -> {vacancies[best]} (score={sim[i][best]:.3f})")
Далее заверните это в FastAPI-эндпоинт /recommend, добавьте кэш в Redis и логирование через OpenTelemetry. Три строки, а на защите это превращается в полноценный аргумент «сервис наблюдаемый, готов к нагрузке».
Глава 3. Метрики и эффективность
Считайте метрики на отложенной выборке. Данные бейзлайна: 70/15/15 — train/val/test. Минимум три алгоритма для сравнения: популярность (baseline), content-based, гибрид. Сведите результат в таблицу.
| Модель | Precision@10 | Recall@10 | NDCG@10 | Комментарий |
|---|---|---|---|---|
| Популярность (baseline) | 0.11 | 0.08 | 0.14 | Простая, но персонализации нет |
| Content-based (TF-IDF) | 0.27 | 0.21 | 0.31 | Хорошо работает на малых данных |
| Гибрид (SVD + TF-IDF) | 0.34 | 0.26 | 0.39 | Лучшее качество в эксперименте |
Важно: цифры в таблице — ваши, из вашего прогона. Не копируйте чужие, комиссия спрашивает по каждой ячейке. Если получилось скромно — так и напишите, обоснуйте размером датасета и предложите путь улучшения в разделе «Направления развития».
Требования к ТЗ и оформлению
Техническое задание оформите по ГОСТ 34.602. Постановка задач и функциональные требования — отдельные разделы, иначе нормоконтроль завернёт. Для программного изделия при необходимости используйте ГОСТ 19.201. Приложения: листинг кода, скрипты развёртывания, конфиги — всё отдельными приложениями с нумерацией А, Б, В.
Чек-лист «Что проверить перед сдачей»
- Каждая задача из введения закрыта конкретным выводом в заключении — построчно сверили?
- Все схемы пронумерованы, подписаны, на них есть ссылки в тексте. Единая нотация (UML/C4/IDEF).
- Метрики (Precision@K, NDCG@K, конверсия) посчитаны на отдельной выборке и обоснованы.
- Список литературы: 25+ источников, минимум 5 за последние 3 года, есть ссылки на нормативные документы.
- Оформление по ГОСТ: поля, шрифт, интервалы, нумерация страниц и приложений.
- Проверка на заимствования: оригинальность выше порога вуза, корректное цитирование источника CNews.
- Код воспроизводим: requirements.txt, README, инструкция запуска в приложении.
Типичные ошибки студентов
1. Обзор рекомендательных систем без привязки к данным опроса. Работа получается книжной. Исправление: в главе 1 добавьте подраздел «Сегментация аудитории на основе опроса “Авито”», покажите, какие категории хобби доминируют, и уже под них подбирайте модели. Ссылайтесь на исходную публикацию.
2. Обучают модель на всём датасете и меряют Accuracy. Это не защищается. Нужен train/val/test split, отчёт по Precision@K/NDCG@K, отдельная бизнес-метрика. Иначе вы не показываете, что понимаете специфику ранжирования.
3. «Архитектура» из одного блока «Сервер и ML». Комиссия это видит сразу. Нарисуйте минимум: клиент → API-шлюз → сервис рекомендаций → БД + кэш → трекинг экспериментов. Каждый блок подпишите технологией.
Источник: 28% россиян при выборе подработки ориентируются на свои хобби и увлечения — «Авито Подработка» (опубликовано 2026-03-24)