ПОРІВНЯННЯ ЛІНІЙНОЇ РЕГРЕСІЇ ТА XGBOOST МОДЕЛЕЙ ПРИ ДОСЛІДЖЕННІ ЧАСОВИХ РЯДІВ
23.09.2022 12:32
[1. Информационные системы и технологии]
Автор: Кормиш Елеонора Едуардівна, бакалавр, кафедра комп'ютерних наук, Чернівецький національний університет, Інститут фізико-технічних і комп'ютерних наук
Часовий ряд - це впорядкована в часі сукупність вимірів однієї з характеристик об'єкта, що досліджується. Часові ряди широко використовуються в статистиці, обробці сигналів, розпізнаванні образів, економетриці, фінансовій математиці, прогнозуванні погоди, а також значною мірою в будь-якій області прикладної науки та інженерії, яка включає часові вимірювання [1]. Існує безліч методів прогнозування часових рядів, наприклад, такі як: регресійні, авторегресійні (ARIMAX, GARCH, ARDLM), моделі експоненційного згладжування (ES) та ін. Але для побудови більшості з них необхідні значні ресурси, яких досить часто бракує на практиці. У цьому дослідженні ми поставили перед собою мету мінімізувати всі обрахунки, використовуючи одні з найшвидних методів прогнозування часових рядів (лінійна регресія й XGBoost), перевірити та порівняти їхню ефективність.
Для дослідження ми використали базу даних під назвою hour_online.csv[2]. Вона описує кількість гравців у мережі у певну годину доби та містить всього 2 стовпці відповідно. У цій таблиці, крім стандартних ознак, на кшталт лагів цільової змінної, багато інформації містять у собі дата і час. Подібна ситуація нерідко трапляється під час розв’язування реальних задач, саме тому перед побудовою моделей варто було б вилучити цільові ознаки (feature extraction).
Вилучення ознак включає скорочення кількості ресурсів, необхідних для опису великого набору даних. Аналіз надмірного об’єму даних зазвичай вимагає великої кількості пам'яті та обчислювальної потужності, а також може призвести до того, що алгоритм класифікації буде перевантажений для навчальних вибірок і буде погано узагальнюватися на нові вибірки. Вилучення ознак - це загальний термін для методів побудови комбінацій змінних, що дозволяють обійти ці проблеми, але при цьому описувати дані з необхідною точністю [3].
Для вилучення ознак ми в першу чергу закодували середнім значенням цільову змінну. У нашому випадку кожен день тижня або годину можна закодувати середньою кількістю гравців, що знаходилися в цей момент онлайн. При цьому важливо стежити за тим, щоб розрахунок середнього значення проводився тільки в рамках тестового набору даних (або в рамках поточного фолду, що спостерігається при крос-валідації), інакше можна випадково врахувати в модель інформацію про майбутні виміри.
Далі ми створили новий набір даних і додали до нього годину, день тижня та вихідний як категоріальні змінні. Після усіх змін таблиця має наступний вигляд:
Таблиця 1. Частина бази даних hour_online.csv після вилучення ознак
Тепер ми можемо побудувати просту лінійну регресію. Лінійна регресія (Linear regression) — один із найбільш фундаментальних алгоритмів, що використовуються для моделювання відносин між залежною змінною та кількома незалежними змінними. Метою навчання є пошук лінії найкращої відповідності.
У процесі навчання лінійної регресії знаходиться мінімізація квадратів відстаней між точками та лінією найкращої відповідності. Цей процес відомий як мінімізація суми квадратів залишків. Залишок дорівнює різниці між передбаченим значенням та реальним [4].
Для її побудови ми брали лаги починаючи з дванадцятого, таким чином модель буде здатна будувати передбачення на 12 годин уперед, маючи фактичні спостереження за попередні півдня.
Рис.1. Прогнозування часового ряду з використанням лінійної регресії
На рис.1 ми бачимо, що модель помиляється, в середньому, на 3K користувачів за годину, і це враховуючи величезний викид у середині тестового ряду.
Для порівняння ми побудували прогноз з використанням XGBoost. В основі XGBoost лежить алгоритм градієнтного бустингу дерев рішень. Градієнтний бустинг - це техніка машинного навчання для завдань класифікації та регресії, яка будує модель передбачення у формі ансамблю слабких моделей, зазвичай дерев рішень. Навчання ансамблю проводиться послідовно [5].
На кожній ітерації ми обчислювали відхилення передбачень вже навченого ансамблю на навчальній вибірці. Кожна наступна модель, яка додавалась в ансамбль, передбачає ці відхилення. Таким чином, додавши передбачення нового дерева до передбачень навченого ансамблю, ми зменшили середнє відхилення моделі до значення 3K користувачів, як зображено на рис.2.
Рис.2. Прогнозування часового ряду з використанням XGBoost
Підсумовуючи, варто зазначити, що похибка на обох моделях була в середньому в 3К користувачів, що ≈4,6% по відношенню до усієї вибірки. До переваг лінійної регресії можна віднести швидкість та простоту отримання моделі, широку застосовність, вивченість цього підходу. Головний недолік лінійної регресії у тому, що з її допомогою можна моделювати лише прямі лінійні залежності, тоді як часто виникає необхідність створення моделей інших типів відношень між даними. Серед сильних сторін XGBoost методу є такі, як: паралельна обробка, висока гнучкість, вбудована перехресна перевірка. Проте у XGBoost, як і у інших методів на основі дерев, є вагомий мінус: схильність до перенавчання. У даному дослідженні для побудови лінійної регресії ми зробили значно менше обрахунків, оскільки для правдоподібної моделі лінійної регресії достатньо від 10 вимірів, у той час як для XGBoost потрібно не менше 40. Проте XGBoost працює швидше за конкуретну модель та при необхідній кількості даних здатний показати надвисоку точність. Отже, на невеликих базах даних (до 1000 вимірів) немає змісту застосовувати XGBoost, оскільки великої різниці в точності прогнозу ми не помітимо.
Література
1. Часовий ряд: веб-сайт. URL: https://uk.wikipedia.org/wiki/%D0%A7%D0%B0%D1%81%D0%BE% D0%B2%D0%B8%D0%B9_%D1%80%D1%8F%D0%B4 (дата звернення: 11.09.2022).
2. TimeSeriesBase: веб-сайт. URL: https://www.kaggle.com/code/lkatran/timeseriesbase (дата звернення: 09.09.2022).
3. Вилучення ознак: веб-сайт. URL: https://uk.wikipedia.org/wiki/%D0%92%D0%B8%D0%B4%D1%96% D0%BB%D1%8F%D0%BD%D0%BD%D1%8F_%D0%BE%D0%B7%D0%BD%D0%B0%D0%BA (дата звернення: 19.09.2022).
4. About linear regression: веб-сайт. URL: https://www.ibm.com/topics/linear-regression#:~:text=Resources-,What%20is%20linear%20regression%3F,is%20called %20the%20independent%20variable (дата звернення: 09.09.2022).
5. A Gentle Introduction to the Gradient Boosting: веб-сайт. URL: https://machinelearningmastery.com/gentle-introduction-gradient-boosting-algorithm-machine-learning/ (дата звернення: 05.09.2022).
6. Time Series Analysis (TSA) in Python - Linear Models to GARCH: веб-сайт. URL:http://www.blackarbs.com/blog/time-series-analysis-in-python-linear-models-to-garch/11/1/2016 (дата звернення: 09.09.2022).
______________________
Науковий керівник: Кириченко Оксана Леонідівна, Чернівецький національний університет, Інститут фізико-технічних і комп'ютерних наук