<?xml version='1.0' standalone='no' ?>
<journal xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="JournalArticulus.xsd">
    <operCard>
        <operator>ИПМ им. М.В.Келдыша РАН|Publicator</operator>
        <date>2026-04-09 13:26:31</date>
        <cntArticle>1</cntArticle>
        <cs>0</cs>
    </operCard>
    <titleid>32018</titleid>
    <issn>2071-2901</issn>
    <codeNEB>20712901</codeNEB>
    <journalInfo lang="RUS">
        <title>Препринты ИПМ им. М.В.Келдыша</title>
    </journalInfo>
    <issue>
        <volume/>
        <number>12</number>
        <altNumber/>
        <part/>
        <dateUni>2026</dateUni>
        <issTitle/>
        <pages>1-20</pages>
        <articles>
            <article>
                <pages>1-20</pages>
                <artType>RAR</artType>
                <authors>
                    <author num="001">
                        <authorCodes>
                            <orcid>0009-0005-2449-4636</orcid>
                        </authorCodes>
                        <individInfo lang="RUS">
                            <surname>Балабанов</surname>
                            <initials>Дмитрий Сергеевич</initials>
                            <orgName>РТУ МИРЭА</orgName>
                            <email>dmittrj@icloud.com</email>
                        </individInfo>
                        <individInfo lang="ENG">
                            <surname>Balabanov</surname>
                            <initials>D.S.</initials>
                            <orgName>Russian Technological University MIREA</orgName>
                        </individInfo>
                    </author>
                    <author num="002">
                        <authorCodes>
                            <spin>1614-4760</spin>
                            <orcid>0000-0002-1658-1941</orcid>
                        </authorCodes>
                        <individInfo lang="RUS">
                            <surname>Судаков</surname>
                            <initials>Владимир Анатольевич</initials>
                            <orgName>Институт прикладной математики им. М.В.Келдыша РАН; РТУ МИРЭА</orgName>
                            <email>sudakov@ws-dss.com</email>
                            <otherInfo>Персональная веб-страница: http://keldysh.ru/persons/sudakov.html</otherInfo>
                        </individInfo>
                        <individInfo lang="ENG">
                            <surname>Sudakov</surname>
                            <initials>V.A.</initials>
                            <orgName>Keldysh Institute of Applied Mathematics RAS; Russian Technological University MIREA</orgName>
                        </individInfo>
                    </author>
                </authors>
                <artTitles>
                    <artTitle lang="RUS">Прогнозирование загруженности трамваев методами машинного обучения</artTitle>
                    <artTitle lang="ENG">Predicting tram load using machine learning methods</artTitle>
                </artTitles>
                <abstracts>
                    <abstract lang="RUS">В статье рассматривается задача прогнозирования пассажирской загруженности трамваев с применением методов машинного обучения. Актуальность исследования обусловлена необходимостью повышения качества информирования пассажиров и оптимизации использования общественного транспорта. В работе предложен комплексный подход к сбору и подготовке данных: использованы треки транспортных средств, метеорологические данные, расписания пригородных поездов, информация о местах притяжения и результаты полевого подсчёта пассажиров табличным методом. Проведена обработка признаков, включающая декомпозицию временных меток, геокодирование остановок и расчёт производных параметров. На этапе исследовательского анализа выявлены ключевые закономерности пассажиропотока: суточная и недельная динамика, влияние прибытия электропоездов, корреляция загруженности с типом дня и расположением остановок. Для решения задачи прогнозирования обучены и сравнены три модели: линейная регрессия, случайный лес и градиентный бустинг. Наилучшие результаты продемонстрировала модель случайного леса, которая была выбрана для промышленного внедрения. Разработана программная реализация на Python с развёртыванием на Apache-сервере и использованием MySQL для хранения данных. Модель интегрирована в пользовательский веб-сервис: прогноз загруженности визуализируется в виде интуитивно понятной шкалы, что обеспечивает удобство восприятия информации пассажирами.</abstract>
                    <abstract lang="ENG">This article examines the problem of predicting tram passenger load using machine learning methods. The relevance of the study stems from the need to improve passenger information and optimize public transport use. The paper proposes an integrated approach to data collection and preparation, using vehicle tracks, meteorological data, commuter train schedules, information on public transportation hotspots, and the results of field passenger counts using a tabular method. Feature processing included time stamp decomposition, stop geocoding, and the calculation of derived parameters. During the exploratory analysis stage, key passenger flow patterns were identified: daily and weekly dynamics, the influence of commuter train arrivals, and the correlation of load with day type and stop location. To solve the forecasting problem, three models were trained and compared: linear regression, random forest, and gradient boosting. The random forest model demonstrated the best results and was selected for industrial implementation. A software implementation was developed in Python and deployed on an Apache server using MySQL for data storage. The model is integrated into a user-friendly web service: the congestion forecast is visualized as an intuitive scale, making it easier for passengers to understand the information.</abstract>
                </abstracts>
                <text lang="RUS">
Введение
    Ежедневно общественный транспорт перевозит огромное количество людей. Было подсчитано, что трамваи в городе Коломне за 76 лет работы перевезли более 2,5 миллиардов пассажиров [1]. Высокая загруженность городского транспорта свидетельствует о его привлекательности, однако она же является и отталкивающим фактором для горожан, поскольку переполненные автобусы и трамваи некомфортны для пассажиров, в связи с чем они предпочитают использовать личный транспорт или такси.
    Прогнозирование загруженности общественного транспорта — одно из приоритетных направлений в информировании пассажиров. Для пассажира важно понимать, будет ли транспорт загружен сильнее обычного или, наоборот, будет свободен. Современное развитие технологий машинного обучения и доступность больших данных открывают новые возможности для решения этой задачи. В последние годы наблюдается активный рост исследований, посвящённых применению методов искусственного интеллекта для прогнозирования пассажиропотока: от классических статистических моделей до сложных архитектур глубокого обучения, учитывающих пространственно-временные зависимости, погодные условия и сетевые взаимодействия маршрутов. Особую актуальность приобретает учёт внешних факторов, таких как метеорологические условия и расписание смежных видов транспорта. 
    В работе [2] показано, что интеграция данных о погоде и временных атрибутов в модели на основе LSTM позволяет существенно повысить точность прогноза пассажиропотока на автобусных маршрутах. 
    Аналогичные выводы сделаны в исследовании [3], где проведено сравнительное тестирование алгоритмов машинного обучения (случайный лес, градиентный бустинг, нейронные сети) для прогнозирования загрузки трамваев: авторы подтверждают эффективность ансамблевых методов при работе с нелинейными зависимостями в транспортных данных.
    Важным направлением развития является переход от прогнозирования на уровне отдельного маршрута к сетевым моделям, учитывающим взаимодействие линий. В работе [4] предложен фреймворк для прогнозирования загруженности в масштабах всей транспортной сети. Он демонстрирует, что учёт пересечений маршрутов и их альтернатив позволяет снизить ошибку предсказания на 15–20% в коридорах с высокой конкуренцией линий.
    Кроме того, перспективным подходом является комбинирование долгосрочных прогнозов с данными реального времени: в работе [5] показано, что корректировка базового прогноза на основе отклонений, наблюдаемых в текущем режиме, повышает устойчивость модели к непредсказуемым событиям и аномалиям в пассажиропотоке.
    Основная цель данной работы — исследовать методы машинного обучения для прогнозирования загруженности трамваев по выбранным маршрутам на примере трамвайной сети города Коломны. В отличие от перечисленных исследований, акцент сделан на адаптации моделей к условиям малого города с ограниченным объёмом данных, а также на обеспечении интерпретируемости результатов для конечных пользователей.
Сбор данных
    Современные маршрутные транспортные средства оснащены GPS-трекерами, которые периодически отправляют данные о местоположении каждого транспортного средства в центр организации дорожного движения, где они сохраняются в базе данных. Формат отправляемых трамваем данных содержит:
 код маршрута (уникальный идентификатор трамвайного маршрута);
 координаты (широта и долгота);
 бортовой номер трамвая;
    Кортеж данных дополнен временной меткой, так как серверу известно время получения данных. Кроме того, массив дополнен данными о погоде, которые получены из сторонних погодных сервисов. Данные о погоде включают температуру воздуха, скорость ветра, данные об осадках и грозе.
    Также стоит учитывать, что в городе присутствует и другой вид транспорта, движение которого влияет на движение трамваев. В Коломне значительную роль играют пригородные поезда из Москвы — они единовременно привозят большое количество пассажиров, большинство из которых направляются к трамваям. Для получения информации о поездах можно воспользоваться сторонними сервисами расписаний общественного транспорта — как правило, они предоставляют API на бесплатной основе. Схематичное представление структуры процедур сбора данных приведено на рисунке 1.

Рис. 1. Схема сбора данных
      Сбор данных для прогнозирования загруженности включал информацию о количестве вошедших и вышедших пассажиров. Было принято решение для увеличения качества работы метода считать за двоих пассажиров людей с крупным багажом, колясками и тележками. Данные о числе занимаемых сидячих мест не собирались — это избыточная точность, и такие показатели сложно прогнозировать. Также не отслеживалось движение конкретных пассажиров по маршруту (иными словами, неизвестно, на какой остановке заходит и выходит каждый конкретный пассажир).
      Существуют несколько способов сбора данных о загруженности общественного транспорта [6]. В таблице 1 представлено сравнение наиболее часто используемых способов, проанализированы их преимущества и недостатки.
Таблица 1
Методы сбора данных о загруженности общественного транспорта
МетодОписаниеПреимуществаНедостаткиАнкетныйРазмещение на веб-сайте инструмента, где пользователи могут отмечать, сколько людей сейчас в транспорте, либо оценивать верность прогноза, а также интерактивная форма с открытыми вопросами: на каких участках большой пассажиропотокПростота реализации, вовлеченность пользователейНизкая точность, ограниченный охватОтчетно-статистическийПодсчет числа проданных билетов (регистраций проезда), прохождений через датчики около дверей, подсчет через камеры видеонаблюдение Высокая объективность, автоматизация процессаНеобходимость инфраструктурыТалонныйВыдача каждому пассажиру талона на входе и сдача его на выходеТочность учета количества пассажировТрудоемкость, необходимость контроля, невозможность проводить сбор на постоянной основеТабличныйИспользование команды исследователей, который вручную считают число пассажиров и записывают в таблицуВозможность детализации данныхСубъективность, низкая скорость, невозможность проводить сбор на постоянной основеВизуальныйТо же, что и табличный, но вместо подсчета людей в таблицу заносится примерная загруженность (в баллах)Быстрота сбора данных, отсутствие необходимости точного подсчетаСубъективность, невысокая точность, невозможность проводить сбор на постоянной основеОпросныйТо же, что и табличный, но помимо счета людей исследователи опрашивают пассажиров, где они выходят и куда едутДополнительные данные о маршруте движения пассажировУвеличение временных затрат, невозможность проводить сбор на постоянной основе      
    В этой работе был выбран табличный метод. Исследования проводились в разные месяцы, в разное время суток, при различных погодных условиях. Одним из важных условий исследований было собрать как можно более однородный датасет, в котором не было бы значительно больше данных одной категории, чем другой (к примеру, больше данных об утреннем пассажиропотоке, чем о вечернем).
    Для дообучения модели на новых данных был выбран анкетный метод, поскольку он прост в реализации и позволяет корректировать данные о загруженности в фоновом режиме.
Предварительная обработка данных
    Данный этап посвящен наполнению датасета новыми данными, полученными из собранных на первом этапе.
    Временная метка разбивается на несколько параметров. Параметр «время» представляет собой количество минут, прошедшее с начала суток. Отдельными параметрами записываются число, месяц, количество дней с начала года и дата без года. Кроме того, добавляются параметры дня недели и флаг выходного дня.
    Для координат определяются участок пути (улица) и ближайшая остановка. Для каждой остановки известно количество мест притяжения (points of interest) вблизи неё, например, торговые центры (ТЦ), школы, парки — эта информация хранится в базе данных. По бортовому номеру трамвая можно восстановить его модель, а она содержит в себе данные о количестве мест (сидячих и стоячих) и об его низкопольности (отсутствию ступенек на входе). Информация обо всех моделях содержится в базе данных.
    Наконец, номер маршрута содержит информацию о его длине.
    После обработки датасет содержит в себе столбцы с параметрами, которые описаны в таблице 2.




Таблица 2
Столбцы датасета
ПараметрНаименованиеОписаниеЕдиницы измеренияtram_noНомер маршрутаНомер трамвайного маршрута, напр., № 7—weekdayТип дняWDS — будние дни, OFF — выходные—day_of_weekДень неделиДень недели сокращенно: MON, TUE, …—precipitationОсадкиИнтенсивность осадков, от 0 до 3усл. ед.thunderГрозаИнтенсивность грозы, от 0 до 3усл. ед.windВетерСкорость ветрам/сtemperatureТемператураТемпература воздуха на улице°Croute_lengthДлина маршрутаДлина трамвайного маршрута (длина его траектории)метрыstopОстановкаОстановочный пункт, для которого были собраны данные—poisМеста притяженияКол-во мест притяжения (ТЦ, школ, парков) рядом с остановкойштtimeВремяКоличество минут, прошедшее с начала суток (0–1440)минутыtrainПоездВремя, прошедшее с прибытия последнего поезда (только для остановок рядом с ж/д платформой)минутыodometerПробегПуть, который прошел трамвай с начала маршрутаметрыstartНачалоФлаг начальной остановки (1 если остановка первая в маршруте)—endКонецФлаг конечной остановки (1 если остановка последняя в маршруте)—intervalИнтервалИнтервал движения трамваев по этой остановке (средний интервал в это время)минутыinterval_sameИнтервал маршрутаИнтервал движения трамваев того же маршрута (средний интервал в это время)минутыinboundВошлоКол-во вошедших пассажировшт.outboundВышлоКол-во вышедших пассажировшт.passengersПассажирыКол-во пассажиров в трамвае (после того, как все вошли и вышли)шт.wheelchairНизкопольностьНизкопольность трамвая (1 если трамвай низкопольный)—seatingСидячих местКоличество мест для сидения в трамваешт.standingСтоячих местКоличество стоячих мест (указано в документации производителя трамвая)шт.monthМесяцМесяц (1–12)—dayДеньДень месяца (1–31)—day_monДатаДень и месяц без года (напр., 25.03)—

     Для улучшения качества анализа и прогнозирования были добавлены новые параметры:
 route_percent: доля пути маршрута, которую проехал трамвай (0 — начало маршрута, 1 — конец), находится по формуле (1);

route_percent=odometer/(route_length)(1) passengers_before: количество пассажиров на предыдущей остановке, находится итеративно для каждой строки датасета (предыдущее значение параметра passengers);
 day_of_year: день с начала года.
    Журналы данных за период с сентября 2024 года по июнь 2025 года, информация о местоположении трамвайных остановок и количестве points of interest, расписание поездок, информация о вагонах трамваев и данные о погоде были собраны и обработаны для этого анализа в датасет. Его срез приведен на рисунке 2.



Рис. 2. Датасет обработанных данных (первые пять строк)

Исследовательский анализ данных
    На этом этапе будут рассмотрены различные зависимости и построены аналитические отчеты с использованием данных, собранных и обработанных на предыдущем шаге.
    Матрица корреляции признаков для датасета загруженности представлена на рисунке 3.
    

Рис. 3. Матрица корреляции параметров загруженности
    Выводы, которые можно сделать из матрицы корреляций:
 Параметр tram_no имеет сильную корреляцию с interval_same и route_length, то есть интервал движения и длина маршрута трамвая коррелируют с его номером. Это логично: у каждого маршрута свой интервал движения и своя длина. Возможно, параметр tram_no из датасета следует убрать, так как для прогностической модели маршрут определяется не номером, а математическими параметрами;
 Параметр train коррелирует с inbound и start, причем с inbound отрицательная корреляция. Это значит, что чем меньше минут назад уехал электропоезд, тем больше людей в среднем войдет в трамвай.
 Целевой параметр passengers слабо коррелирует с другими параметрами. Наиболее сильная корреляция заметна с параметрами end, route_percent, interval_same и passengers_before.
На рисунке 4 представлен график зависимости passengers и route_percent.


Рис. 4. График среднего количества пассажиров по участкам маршрута
    Из-за небольшого размера датасета чётко проследить зависимость сложно, однако в среднем тенденция показывает, что трамвай загружен по большей части в первой трети маршрута. В последней трети его загруженность снижается, а под самый конец близка к 0 (на конечной все выходят).
    На рисунке 5 показано, как связаны загруженность и время (отдельно для будних дней и выходных).


Рис. 5. Средняя загруженность трамваев по дням недели и времени суток
    По выходным людей больше днём (в 11–12 часов), а в будние дни — утром и вечером. Разумным видится следующее объяснение: в будние дни утром все едут на работу и учёбу, вечером — возвращаются с работы. В выходные дни все едут в какие-либо места развлечений, но возвращаются все в разное время, поэтому загруженность распределяется на оставшуюся часть суток равномерно.
    Для определения наличия остановочных пунктов с «эффектом Выхино» (эффект, при котором на одной из первых остановок маршрута трамвай наполняется настолько, что на последующих остановках войти невозможно) был построен график (рисунок 6).


Рис. 6. Первые семь остановок по средней разнице числа пассажиров
    График показывает, что такая остановка только одна (с кодом 0101aF), в среднем на ней заходит сразу 15 человек, а это примерно половина всех сидячих мест в трамвае. Кроме того, на второй по средней разнице числа пассажиров остановке (с кодом 0300aF) более значительное стандартное отклонение — при среднем значении разницы числа пассажиров 8 иногда это значение может достигать 27, что сравнимо с количеством сидячих мест в трамвае. Несмотря на это, высокой заполненности не наблюдается, что говорит о грамотной организации трамвайной сети.
    Для исследования зависимости загруженности от количества мест притяжения (points of interest, POI) были построены отдельные матрицы корреляции, представленные на рисунке 7. Были отдельно построены матрицы для утреннего разъезда (до 11 часов утра), вечернего разъезда (с 16 часов) и для промежуточного времени.

  
Рис. 7. Матрицы корреляции параметров загруженности и POI 
(слева — утренний разъезд, посередине — день, справа — вечерний разъезд)
    Интерес представляют первые три строки матрицы — корреляция пассажиропотока и количества объектов рядом с остановкой. Выводы, которые можно сделать из матрицы корреляций:
 Самое темное синее пятно расположено на пересечении passengers и pois_site (достопримечательности) — то есть возле достопримечательностей трамваи ходят пустые;
 Также мало пассажиров во время вечернего разъезда у ж/д станций;
 Светлые пятна можно наблюдать на пересечении следующих строк/столбцов:
 outbound/pois_buss в утренний разъезд: чем больше автобусных станций, тем больше люди выходят из трамваев. Возможно, утром люди используют трамвай для того, чтобы добраться до автобусной станции и дальше ехать на автобусе.
 inbound/pois_buss, outbound/pois_buss: чем больше автобусных станций, тем больше люди входят и выходят (то есть большой размен);
 inbound/pois_mall в утренний разъезд, outbound/pois_mall в утренний разъезд: чем больше ТЦ, тем больше люди входят и выходят (то есть большой размен);
 inbound/pois_rail: чем больше ж/д станций, тем больше люди входят;
 passengers/pois_domk, особенно днём: чем больше домов культуры, тем больше людей едет в трамвае (при этом показатели inbound и outbound низкие — можно предположить, что к домам культуры у людей низкий интерес).
 В утренний разъезд много людей выходят у торговых центров — видимо, пассажиры едут за покупками именно утром. В вечерний разъезд мало людей входят у торговых центров, что может означать, что люди завершают шопинг к вечеру.
Обучение моделей
    На этом этапе будет рассмотрен процесс обучения моделей для предсказания целевых параметров. В работе выполнялась тренировка трех моделей: линейная регрессия, градиентный бустинг и случайный лес.
    Результаты обучения представлены на рисунке 8.
     

Рис. 8. Метрики качества алгоритмов МО

    Для предсказания загруженности метрики у трех моделей довольно схожи: по RMSE лучше себя показывает линейная регрессия, по MAE — случайный лес. Рассмотрим эти метрики:

RMSE=?(1/n ?_(i=1)^n?(y_i-(y_i ) ? )^2 ).
(2)MAE=1/n ?_(i=1)^n??|y_i-(y_i ) ? |.?
(3)    RMSE сильнее наказывает за крупные ошибки, поскольку возведение в квадрат увеличивает вклад больших отклонений. Это делает её чувствительной к выбросам и экстремальным ошибкам.
    MAE представляет собой среднее абсолютное отклонение каждого отдельного предсказания от реального значения. Она даёт простую оценку средней величины ошибок независимо от направления отклонения (предсказание больше или меньше). Недостатком является то, что большие ошибки имеют тот же вес, что и маленькие.
    Если важно минимизировать влияние крупных выбросов и считать ошибку равномерно распределённой, лучше подходит MAE. Однако в данной работе необходимо учитывать именно серьёзные ошибки и снизить риск их появления, поэтому предпочтительнее использовать RMSE, так как она усиливает «штраф» за крупные отклонения.
    Для обеспечения независимости моделей от параметра номера маршрута были выполнены следующие изменения:
     
 В датасет добавлены столбцы на каждую остановку, а в качестве значения указано расстояние в метрах, которое должен проехать трамвай до этой остановки. Если маршрут трамвая этой остановки не содержит, значение принимается за бесконечность. Так алгоритм будет понимать, какие остановки есть на пути этого трамвая и как долго до них ехать;
 Параметр tram_no удален.

    Данное обновление позволяет алгоритму быть независимым от номеров существующих маршрутов. Метрики качества для такой модели представлены на рисунке 9.
     

Рис. 9. Метрики качества для модели, обученной без номера маршрута
     
     Здесь «умные» модели показывают однозначно лучшие результаты. Таким образом, модели стали независимыми от номера маршрута, и теперь они ориентируются только на то, какие остановки есть впереди.
     На рисунке 10 показано, какие характеристики модели считают наиболее значимыми.
     

Рис. 10. Гистограммы значимости характеристик
     У модели линейной регрессии для предсказания загруженности в первую пятерку значимых параметров входят параметры даты (day_mon_DD.MM), что является плохим признаком: модель не понимает, почему в одни дни людей много, а в другие мало. Другие важные параметры — тип дня (weekday), флаги первой и последней остановки маршрута (start, end), процент от маршрута (route_percent).
     Случайный лес самым значимым параметром считает число пассажиров на предыдущей остановке (passengers_before). Рассмотрим также другие значимые параметры:
 route_percent (доля от маршрута, которую проехал трамвай): загруженность связана с тем, какую часть пути проезжает трамвай;
 0101aF и 0101aB: коды одной из важных остановок города (в одну и в другую сторону), на первой из них много людей заходят, на второй — выходят;
 end: флаг конечной остановки. Редкий, но важный параметр, так как на конечной всегда выходят все;
 odometer и route_length также оказались сами по себе важными параметрами. Возможно, чем длиннее маршрут, тем больше людей он везет (так как больше остановок содержит, то есть больше людей привлекает).
     Так как линейная регрессия слишком большое внимание уделяет параметру даты, модель была переобучена без параметра даты. Метрики качества представлены на рисунке 11.

Рис. 11. Метрики качества для моделей, обученных без параметра day_mon
    Исследование показывает, что линейная регрессия показывает слегка лучший результат, в то время метрики других двух моделей стали слегка хуже. Для уточнения результатов была заново построена гистограмма значимости признаков (рисунок 12).

Рис. 12. Гистограмма значимости характеристик модели линейной регрессии, обученной без параметра day_mon
     В обновленной модели три самых важных параметра: флаги начальной и конечной остановки и процент пути, что является базовым набором параметров для предсказания. Следующие по важности параметры связаны с погодой, а уже затем – с днем недели.
     Рассмотрим качество моделей по параметрам MAPE и R2, так как они оценивают качество предсказания модели, а не просто ошибки.
     MAPE показывает среднюю относительную погрешность в процентах:
MAPE=1/n ?_(i=1)^n?|(y_i-(y_i ) ?)/y_i | *100%.
(4)     Эта метрика полезна, когда важна оценка ошибок относительно исходных величин, особенно если масштабы зависимой переменной сильно варьируются. Однако MAPE имеет недостаток: деление на ноль или близкое к нулю значение yi, что может привести к нестабильным результатам или даже бесконечным величинам.
     Значение R2 показывает, какую долю дисперсии может объяснить модель:
R^2=1-SSE/SST=1-(?_(i=1)^n?(y_i-(y_i ) ? )^2 )/(?_(i=1)^n?(y_i-(y_i ) ? )^2 ).(5)     R2, близкое к 1, означает, что модель объясняет большую долю вариации данных. R2, близкое к 0, свидетельствует о том, что модель никак не улучшает точность предсказания по сравнению с использованием среднего значения всех точек.
     Модель случайного леса объясняет 87% вариации данных, а средняя относительная погрешность предсказаний количества пассажиров — 31%.
     На рисунке 13 представлены облака точек для датасета предсказания загруженности.

Рис. 13. Облака точек для параметра количества пассажиров
    Из рисунка 13 видно, что экстремальные значения загруженности (40–60) достигаются на первых 40% маршрута. После 3 км пути пассажиров в трамвае не больше 40, после 12 км — не больше 20-25. Наиболее загруженные маршруты длиной 2 км, 12 км и 15 км. Загруженность снижается с уменьшением параметра train (время, прошедшее с прибытия последнего поезда). По итогам исследования была выбрана модель случайного леса. 
Программная реализация
    Выбранная лучшая модель машинного обучения была загружена на сервер приложения, работающий под управлением Apache. Для прогнозирования загруженности создан отдельный скрипт, который загружает готовую модель из файла и использует её для предсказания. Хотя на вход модели требуется множество параметров (таблица 2), на вход скрипта подаются три аргумента: дата и время, номер рейса и остановка. Все остальные параметры скрипт определит сам, используя сторонние API и базу данных с расписанием. Программа на сервере написана на Python, так как этот язык имеет большое количество библиотек для машинного обучения. В этой работе использовались pandas и scikit-learn.
    Подключение к API осуществляется через HTTP GET-запросы — именно такой формат предоставляют большинство сервисов открытых API. Для уменьшения количество обращений к ним (а оно, как правило, ограничено на бесплатных тарифах) результаты кэшируются в локальную базу данных. Например, данные о погоде обновляются по API только раз в час, остальное время они подгружаются из БД. Данные о расписании поездов обновляются раз в сутки.
    Для хранения данных используются СУБД MySQL. В базу данных вносится информация о движении трамваев на текущий день, в том числе и о загруженности, а в хранилище данных они перемещаются в полночь — для сохранения данных.
    Клиентская сторона получает от сервера JSON-структуру с данными, необходимыми для формирования интерфейса пользователя программы с расписанием, в том числе и прогнозируемой загруженностью, рассчитанной обученной моделью. На рисунке 14 представлен пример такой JSON-структуры — массив из словарей, каждый из которых содержит информацию об отправлении трамвая. Целочисленное поле crowded означает загруженность по шкале от 0 до 4.
    

Рис. 14. Пример JSON-структуры с предсказанной загруженностью
    
    Модель машинного обучения была внедрена в пользовательский веб-сервис. Результаты ее работы показаны на рисунке 15. Пользователям в данный момент доступны два варианта её работы: обозначения загруженности в расписании (слева) и в режиме обзора маршрута (справа). Загруженность показывается в формате значков с человечками.

    
     Рис. 15. Результат работы прогностической модели
    Такая визуализация выбрана не случайно. Хотя алгоритм предсказывает загруженность с точностью до конкретного пассажира, такая точность для пользователей избыточна и неинформативна. Людям легче считывать вербальные показатели загруженности, чем точное количество людей, поэтому перед демонстрацией в приложении загруженность пересчитывается по следующей таблице.
Таблица 3
Соответствие показателей загруженности вербальным показателям
Число пассажировЗначение crowdedВербальный показательОписаниеЗначокменее 33% сидячих мест0Мало пассажировМного свободных мест.
Можно сесть почти на любое место, с любой стороны.менее 66% сидячих мест1Не очень много пассажировЕсть ещё свободные места.
Можно сесть, но выбор ограничен.менее 90% сидячих + 10% стоячих мест2Много пассажировМало сидячих и стоячих мест.
Остаются единичные сидячие места, выбирать не приходится, либо нужно просить уступить место.менее 60% стоячих мест 3Очень много пассажировМало стоячих мест.
Сесть негде, придётся стоять.более 60% стоячих мест4Салон заполненМеста закончились.    
    Это позволит ввести единую меру загруженности трамвая вне зависимости от его размеров, поскольку загруженность зависит от процента занятых мест, а не от их точного количества.
Заключение
    В данной работе был проведён анализ данных о загруженности трамваев и построены прогностические модели для предсказания загруженности. Случайный лес продемонстрировал лучшие результаты с учётом специфики предметной области, метрика R? = 0.87, MAPE = 31%.
    Таким образом, учитывая специфику данной предметной области — предсказание пассажирского потока в трамвае, — случайный лес представляется лучшей моделью, поскольку он стабильно хорошо работает при разных уровнях пассажирской нагрузки, меньше подвержен влиянию редких событий и значительно снижает риск значительных относительных ошибок в условиях малого числа наблюдений.
</text>
                <codes>
                    <udk>004.855</udk>
                    <edn>ZVYVCQ</edn>
                </codes>
                <keywords>
                    <kwdGroup lang="RUS">
                        <keyword>машинное обучение</keyword>
                        <keyword>прогнозирование пассажиропотока</keyword>
                        <keyword>общественный транспорт</keyword>
                        <keyword>трамвай</keyword>
                        <keyword>случайный лес</keyword>
                        <keyword>анализ данных</keyword>
                        <keyword>умный город</keyword>
                    </kwdGroup>
                    <kwdGroup lang="ENG">
                        <keyword>machine learning</keyword>
                        <keyword>passenger flow forecasting</keyword>
                        <keyword>public transport</keyword>
                        <keyword>tram</keyword>
                        <keyword>random forest</keyword>
                        <keyword>data analysis</keyword>
                        <keyword>smart city</keyword>
                    </kwdGroup>
                </keywords>
                <references>
                    <reference>МУП «Коломенский трамвай». Официальный сайт. — URL: http://moet-k.ru/ (дата обращения: 21.02.2026).</reference>
                    <reference>Shanthappa N. K., Mulangi R. H., Manjunath H. M. Deep learning-based public transit passenger flow prediction model: integration of weather and temporal attributes // Public Transport. - 2025. - Vol. 17. - P. 367-390. - DOI: 10.1007/s12469-024-00365-8.</reference>
                    <reference>Dedeturk B. K., Adanur Dedeturk B., Akbaş A. A Comparative Analysis of Passenger Flow Forecasting in Trams Using Machine Learning Algorithms // Bitlis Eren Üniversitesi Fen Bilimleri Dergisi. — 2024. — Vol. 13, № 1. — P. 1–14. — DOI: 10.17798/bitlisfen.1292003.</reference>
                    <reference>Gallo F., Sacco N., Corman F. Network-Wide Public Transport Occupancy Prediction Framework with Multiple Line Interactions // IEEE Open Journal of Intelligent Transportation Systems. — 2023. — Vol. 4. — P. 815-832. — DOI: 10.1109/OJITS.2023.3331447.</reference>
                    <reference>Hoppe J., Schwinger F., Haeger H., Wernz J., Jarke M. Improving the Prediction of Passenger Numbers in Public Transit Networks by Combining Short-Term Forecasts with Real-Time Occupancy Data // IEEE Open Journal of Intelligent Transportation Systems. — 2023. — Vol. 4. — P. 153-174. — DOI: 10.1109/OJITS.2023.3251564.</reference>
                    <reference>Польгун М.Б., Остроух А.В., Николаев А.Б., Ефименко Д.Б. Автоматизация процессов диспетчерского управления городским пассажирским транспортом // Промышленные АСУ и контроллеры. - 2013. - №5. - С. 10–16.</reference>
                </references>
                <files>
                    <furl>https://keldysh.ru/papers/2026/prep2026_12.pdf</furl>
                </files>
            </article>
        </articles>
    </issue>
</journal>
