Интеллектуальная система контроля посещаемости
Student Check AI: Взгляд со стороны AI/ML разработки
В основе Student Check AI лежит переход от реактивного сбора данных к проактивной аналитике. Мы не просто храним логи посещаемости; мы используем их как сырье для обучения моделей, которые находят скрытые закономерности, предсказывают риски и автоматизируют рутинные проверки.
AI-компоненты системы спроектированы не как отдельные надстройки, а как интегрированные сервисы, к которым обращается основная бизнес-логика приложения (Backend на Flask) в процессе обработки запросов.
🏗 Архитектура AI-модулей
Архитектурно AI-функционал выделен в отдельный слой AI Core, который взаимодействует с базой данных для получения исторических данных и с бизнес-логикой для отдачи предиктов.
Технологический стек AI Core
  • Язык: Python 3.11+ (единый стек с бэкендом).
  • Обработка данных: Pandas, NumPy — для векторизации данных и манипуляций с датафреймами логов посещаемости.
  • Классическое ML: scikit-learn — базовые модели классификации, регрессии и кластеризации.
  • NLP и Матчинг строк: RapidFuzz или python-Levenshtein — для нечеткого сравнения данных студентов.
  • Сериализация моделей: pickle/joblib — для сохранения обученных моделей и их быстрой загрузки в память приложения.
🛠 Реализованные AI-компоненты (Deep Dive)1. Детекция аномалий в регистрациях (Anomaly Detection System)
Задача: В реальном времени выявлять подозрительные отметки (например, передача карты другому лицу).
Как это работает: Мы используем комбинацию эвристических правил и методов обучения без учителя (Unsupervised Learning).
  • Пайплайн данных: На вход поступает новая запись о регистрации (ID студента, время, ID терминала). Система подтягивает N последних записей этого студента.
  • Feature Engineering: Вычисляются временные дельты между регистрациями и географическое "расстояние" между терминалами.
  • Модель: Используется алгоритм Isolation Forest (Изолирующий лес) или статистический анализ на основе Z-оценки. Модель обучается на "нормальном" поведении студентов. Если новая точка данных слишком далеко отклоняется от кластера нормального поведения (например, регистрация в двух удаленных корпусах с интервалом в 5 минут), она помечается как аномалия.
  • Результат: В БД запись получает флаг requires_verification, а в интерфейсе преподавателя она подсвечивается.
2. Предиктивная аналитика пропусков (Predictive Analytics)
Задача: Заблаговременно выявлять студентов "группы риска", которые могут перестать посещать занятия.
Как это работает: Это задача бинарной классификации (Supervised Learning).
  • Данные для обучения: Исторические логи посещаемости за предыдущие семестры, размеченные данными о том, кто в итоге был отчислен или имел проблемы с успеваемостью.
  • Feature Engineering: Ключевой этап. Создаются фичи: "процент посещаемости за последние 2 недели", "динамика пропусков (участились ли?)", "пропуски конкретных предметов", "день недели с наибольшим числом пропусков".
  • Модель: Используются ансамблевые методы, такие как Random Forest или градиентный бустинг (XGBoost/LightGBM), так как они хорошо работают с табличными данными и устойчивы к переобучению.
  • Результат: Каждому студенту присваивается risk_score (вероятность проблем с посещаемостью). На дашборде куратора формируется топ студентов с высоким риском.
3. Интеллектуальная дедупликация (Smart Deduplication)
Задача: При импорте больших CSV/XML баз найти дублирующиеся записи студентов, даже если в именах есть опечатки (например, "Иванов Иван" и "Иванов Ивон").
Как это работает: Используются методы нечеткого сравнения строк (Fuzzy String Matching).
  • Процесс: При импорте новой записи она сравнивается с существующей базой.
  • Алгоритмы: Применяется расстояние Левенштейна для вычисления схожести строк, а также фонетические алгоритмы (вроде Metaphone для поддержки кириллицы), чтобы находить созвучные фамилии.
  • Результат: Если коэффициент схожести выше порога (например, >90%), система предлагает объединить записи администратору.