Чи можна використовувати сплайни для прогнозування?


20

Я не можу бути конкретним щодо характеру даних, оскільки вони є власними, але припустимо, у нас є такі дані: Щомісяця деякі люди підписуються на послугу. Тоді, у кожному наступному місяці, ці люди можуть оновити послугу, припинити послугу або відмовити у послузі (наприклад, за несплату). Для найбільш ранньої когорти в наших даних ми маємо приблизно 2 роки даних (24 місяці).

Кількість людей, які приєднуються щомісяця, велика (в діапазоні 100 000), а кількість людей, які виконують будь-яку з трьох речей, - тисячі. Однак ми використовуємо не дані індивідуального рівня (які становлять мільйони рядків), а дані, зведені по місяцях та когортах (яка частка кожної когорти робить кожну річ щомісяця).

Ми моделювали наявні дані, використовуючи багатоваріантні адаптаційні регресійні сплайси (MARS) і знаходили цікаві результати. Однак я переживаю, щоб використовувати їх для екстраполяції чи прогнозування в майбутньому. Моє занепокоєння викликає те, що прогнози на майбутнє обов'язково знаходяться за межами вибіркового простору (за часом) і сплайни можуть стати нестабільними для екстраполяції.

Це законний метод? Які проблеми є і чи можна їх вирішити?


2
Звичайно, їх можна використовувати для прогнозування, але вам потрібно звернути увагу на те, як правильно настроїти гіперпараметри моделі. Вибір функції сплайну (постійної, лінійної, кубічної) також є важливими проблемами. IIRC, лінійні сплайн-функції в MARS, як правило, використовуються, а сплайни вищого порядку уникнути, якщо не виникає занепокоєння щодо екстраполяції / перевитрати.
Sycorax каже, що повернеться до Моніки

1
Чи є щось, про що ви особливо хвилюєтесь, що призведе до сумнівів у використанні методу? Ваша точність здалася несподівано низькою, чи щось подібне? Ви пробували інші методи? Як вони порівнюються?
one_observation

1
@ Софолог Головним чином, що вони виявляться дуже готовими до нових значень, оскільки вузли та лінії базуються на значеннях, які були в минулому. Так, скажімо, лінійний сплайн, який говорить про "збільшення на XXX за кожен рік після 2014 року", базуватиметься лише на даних 2015 року, але, якщо застосувати його до 2016 року, продовжуватиметься в тому ж напрямку.
Пітер Флом - Відновіть Моніку

3
@PeterFlom: Я насправді сильно розгубився у вашому запитанні (сплайни дуже поширені для передбачення), поки я не прочитав вашу відповідь Софологу. Я відредагував ваше запитання, щоб допомогти підкреслити саме те, що, на мою думку, викликає ваше занепокоєння. Будь ласка перегляньте.
Кліф АВ

2
@PeterFlom: якщо припустити, що моя редакція правильна, ви моделюєте ефект часу за допомогою сплайну? Якщо так, я б дуже стурбований. Однак, якщо ви моделюєте ефект часу з ефектом відставання та інших коваріатів зі сплайнами, я б не бачив жодної проблеми?
Кліф АВ

Відповіді:


15

З моєї інтерпретації питання, основним питанням, яке ви задаєте, є чи ви можете моделювати час як сплайн.

Перше запитання, на яке я спробую відповісти, - це ви можете використовувати сплайни для екстраполяції даних. Коротка відповідь - це залежить, але більшу частину часу сплайни не такі великі для екстраполяції. Шпонки, по суті, є методом інтерполяції, вони ділять простір, на якому лежать ваші дані, і на кожному розділі вони підходять простому регресору. Отже, давайте розглянемо метод MARS. Метод MARS визначається як де - константа на i-му члені в моделі MARS , - функція бази на i-му члені, а

f^(x)=i=1nαiBi(x[i])
αiBix[i]представляє функцію, вибрану з вашого векторного ознаки на i-му терміні. Базова функція може бути постійною або може бути функцією шарніра (випрямляч). Функція шарніра просто Те, що функція шарніра змушує модель створювати кусочно- лінійну функцію (цікаво зазначити, що нейронна мережа з випрямленою лінійною функцією активації може бути розглядається як суперсети моделі MARS).
max(0,x[i]+ci)

Отже, щоб повернутися до питання, чому сплайни зазвичай не такі великі для екстраполяції, це зрозуміти, що як тільки точка, яка вам потрібна, екстраполяція починає лежати, проходить межі інтерполяції, лише "дуже мала частина вашої моделі" буде "активована" або дуже велика його частина буде "активована", і тому потужність моделі зникає (через відсутність варіації). Щоб отримати трохи більше інтуїції з цього приводу, зробимо вигляд, що ми намагаємось пристосувати модель MARS до простору функцій, що лежать у . Отже, враховуючи одне число, ми намагаємось передбачити інше. У моделі MARS з'являється функція, яка виглядає приблизно так: Якщо екстраполяція проходить через числое ( х ) = 5 + м х ( 0 , х - 5 ) + 2 м х ( 0 , х - 10 ) 10 F ( х ) = 10 + 2 ( х - 10 ) = 2 х - 10 5R

f^(x)=5+max(0,x5)+2max(0,x10)

10тепер функція стає Модель MARS, яку ми мали раніше, зводиться до єдиної лінійної функції, і тому потужність моделі MARS зникає (це випадку більшості термінів "активація"). Те ж саме станеться з екстраполяцією перед числом . Вихід моделі MARS тоді буде просто постійним. Ось чому більшу частину часу сплайни не підходять для екстраполяції. Це також пояснює проблему, про яку ви згадували в коментарях до своїх публікацій, що екстраполіровані прогнози є "дуже вигідними для нових цінностей" і що вони, як правило, "продовжуються в тому ж напрямку" для різних часових рядів.
f^(x)=10+2(x10)=2x10
5

Тепер повернемося до часових рядів. Часові ряди є досить особливим випадком в машинному навчанні. Вони, як правило, мають трохи структури, будь то часткова зміна або одна з безлічі різних типів підструктур, і цю структуру можна використовувати. Але потрібні спеціальні алгоритми, які здатні експлуатувати цю структуру, на жаль, сплайни цього не роблять.

Є кілька речей, які я рекомендую вам спробувати. Перший - це рекурентні мережі. Якщо ваш часовий ряд не такий довгий (і не має довгострокових залежностей), ви повинні мати можливість піти з використання простої мережі, що повторює ваніль. Якщо ви хотіли б зрозуміти, що відбувається, ви можете використовувати випрямлений лінійний блок з ухилом як функцію активації, і це буде рівнозначно моделюванню MARS на підмножині тимчасових серій та "пам'яті", що повторюється нейронна мережа тримає. Було б важко інтерпретувати спосіб управління пам’яттю мережею, але ви маєте отримати уявлення про те, як обробляється підпростір відносно породженої кусочно-лінійної функції. Крім того, якщо у вас є статичні функції, які не належать до часових рядів, відносно легко їх використовувати в мережі.

Якщо часовий ряд у вас дуже довгий і може мати довгострокову залежність, я рекомендую використовувати одну з рецидивованих мереж із закритим типом, наприклад GRU або LSTM.

На більш класичній стороні класифікації часових рядів можна використовувати моделі прихованих марків. Я більше не буду заглиблюватися в ці питання, бо я не так знайомий з ними.

На закінчення я б не рекомендував використовувати шпонки з двох причин. По-перше, він не в змозі впоратися зі складними проблемами екстраполяції, що, здається, є проблемою, яку ви описуєте. По-друге, сплайни не використовують підструктури часових рядів, які можуть бути дуже потужними в класифікації часових рядів.

Сподіваюся, це допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.