TanSana: шанс поступления на грант

Модель прогнозирует проходной балл общего конкурса на грант для варианта «вуз × группа образовательных программ (ГОП)» Казахстана на следующий год и считает шанс абитуриента с заданным баллом Единого национального тестирования (ЕНТ). Она работает в продукте TanSana, где шанс показывается словом с подписью «шанс по данным 5 лет, ориентир, не гарантия», а не числом.

Что внутри файла

model-v2.joblib это словарь с полями model (объект BaselineChance), calibrator (изотоническая калибровка Calibrator), shift (сдвиг роста по группам программ), features (last, group), forecast_year (2027), show_number (false), data_hash и sklearn (версия, на которой файл сохранён). Классы лежат в engine/chance.py этого репозитория; кроме него нужны engine/history.py, engine/rules.py, numpy и scikit-learn.

Способ расчёта: прогноз отсечки равен отсечке последнего года плюс сдвиг роста (среднее изменение «год к году» за два последних перехода по группе программ, первые три знака кода ГОП). Распределение изменения берётся из фактических изменений «год к году» вариантов той же группы; группа с малым числом изменений берёт изменения всех вариантов. Шанс равен доле изменений, при которых балл не ниже прогнозной отсечки; квантили 10, 50 и 90 берутся из того же распределения. Сырой шанс проходит изотоническую калибровку.

Как загрузить

import joblib
from engine.chance import History

bundle = joblib.load("model-v2.joblib")
model, calibrator = bundle["model"], bundle["calibrator"]

# условный ряд отсечек варианта по годам
h = History(univ_id="kbtu", gop="B057", cutoffs={2022: 104, 2023: 107, 2024: 108, 2025: 110, 2026: 111})
print(model.predict(h, 2027))          # {'p10': ..., 'p50': ..., 'p90': ...}
raw = model.chance(h, 113, 2027)       # сырой шанс балла 113
print(float(calibrator(raw)))          # шанс после калибровки

Запускать из папки репозитория, чтобы пакет engine находился рядом с файлом модели.

Данные

Ряды построены по таблице проходных баллов общего конкурса за 2021-2026 годы: 1 748 вариантов «вуз × ГОП». Строки 2022-2025 годов взяты в основном с сайтов-агрегаторов, часть с официальных сайтов вузов, а 2026 год с копии официальной публикации. Таблица в репозиторий модели не входит. Признаки и сдвиг каждого целевого года строятся только по годам до него; модель обучена на целевых годах 2023-2026, калибровка на 2026 годе.

Проверка на 2026 годе

Перед выбором способа базовая линия и машинное обучение (три HistGradientBoostingRegressor с квантильной функцией потерь) прогнозировали отсечки 2026 года по данным прошлых лет. В продукт выбрана базовая линия, потому что её полоса 10-90 накрыла факт у 85 % вариантов при пороге 70 %.

Показатель (1 054 варианта) Базовая линия Машинное обучение Отсечка прошлого года
Средняя ошибка медианы прогноза (MAE), баллов 7,68 7,72 10,38
Медианная ошибка, баллов 5,02 5,86 8,00
Покрытие полосы 10-90 85 % 61 % нет
Средняя ширина полосы 10-90, баллов 30,3 17,2 нет
Оценка Брайера до калибровки 0,1259 0,1298 нет
Оценка Брайера после калибровки 0,1505 0,1341 нет

Полный отчёт с методикой лежит рядом: report.md и report.json.

Ограничения

Модель даёт ориентир, а не гарантию: отсечка зависит от числа грантов, конкурса и правил года, которых в рядах нет. Средняя ошибка медианы около 8 баллов, поэтому продукт показывает шанс словом и полосой, а числа отсечек и правил считает код по официальным данным. Модель не знает о новых программах без истории и о вузах вне таблицы.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support