TL;DR
The Forecast Critic — техника оценки прогнозов временных рядов, где LLM смотрит на график (историю + прогноз) и определяет, выглядит ли прогноз разумным. Загружаешь изображение графика в ChatGPT/Claude, даёшь промпт — модель анализирует тренды, периодичность, всплески и говорит "разумно" или "подозрительно".
LLM хорошо ловят очевидные косяки: прогноз идёт вниз, когда история растёт; внезапный скачок без причины; прогноз слишком ровный для волатильных данных. Но плохо видят сжатую/растянутую периодичность — когда прогноз сохраняет паттерн, но меняет частоту (например, недельные циклы стали 5-дневными). Лучшая модель (Claude 3.7 Sonnet) даёт F1 = 0.88, человек — 0.97. Прогнозы, помеченные как "нереалистичные", действительно ошибаются на 10-30% сильнее по метрикам точности.
Метод работает в одном запросе: загружаешь картинку, добавляешь контекст (например, "15 марта была распродажа, 22 марта будет ещё одна"), модель учитывает это при оценке. Может детектить пропущенные промо-всплески (когда должен быть скачок, но его нет) и ложные (скачок есть, но причины нет).
Схема метода
ВХОД: Изображение графика (история + прогноз) + текстовый контекст
↓
LLM анализирует:
- Тренд: прогноз продолжает или ломает направление истории?
- Волатильность: прогноз сохраняет амплитуду колебаний?
- Периодичность: паттерны повторяются с той же частотой?
- Всплески: есть ли необъяснимые скачки или пропущенные события?
↓
ВЫХОД: "Reasonable" или "Unreasonable" + объяснение
Всё происходит в одном промпте. Не нужно несколько запросов или программирование.
Пример применения
Задача: Ты запустил таргет на новую коллекцию в интернет-магазине одежды. Аналитик дал прогноз продаж на следующие 30 дней — обещает рост, но график выглядит странно: в истории были скачки на Чёрную пятницу и 8 марта, а в прогнозе их нет, хотя впереди майские. Хочешь проверить, не накосячил ли аналитик с моделью.
Промпт:
Оцени, выглядит ли этот прогноз продаж разумным.
На графике:
- Синяя линия — история продаж за последние 90 дней (штуки в день)
- Красная линия — прогноз на следующие 30 дней
Контекст:
- 24 ноября была Чёрная пятница (скачок в истории)
- 8 марта была акция "Женский день" (скачок в истории)
- 1-3 и 9-11 мая будут майские праздники (в период прогноза)
Ответь:
1. Reasonable или Unreasonable?
2. Что настораживает или, наоборот, выглядит логично?
3. Если unreasonable — какую ошибку допустила модель?
[прикрепи изображение графика]
Результат:
Модель проанализирует график и скажет примерно следующее: "Unreasonable. Прогноз не учитывает майские праздники — в истории чётко видны всплески продаж во время акций (Чёрная пятница, 8 марта), но в прогнозе на 1-3 и 9-11 мая линия остаётся ровной. Это нереалистично: праздничные дни должны давать рост продаж, как было раньше." Или наоборот, если прогноз корректен: "Reasonable. Прогноз продолжает восходящий тренд истории, сохраняет недельную периодичность (падения в выходные), и показывает всплески 1-3 и 9-11 мая, что логично с учётом праздников."
Почему это работает
Слабость LLM: Модели плохо работают с чистыми числами временных рядов — они не "чувствуют" абстрактные последовательности цифр. Попроси LLM оценить ряд [120, 125, 130, 128, 133, 40, 145] — она может пропустить аномалию (40), потому что нет визуального контекста.
Сильная сторона LLM: Модели отлично работают с визуальными паттернами и пространственными отношениями. Мультимодальные LLM (GPT-4V, Claude) обучены на миллионах графиков, диаграмм, схем — они "видят" тренды, наклоны, всплески как визуальные объекты, а не как абстрактные числа. График для LLM — это как фотография кота: она распознаёт паттерны формы, не вычисляет пиксели.
Как метод использует это: The Forecast Critic переводит анализ временных рядов в задачу компьютерного зрения. Вместо "оцени последовательность [1, 2, 3, 10, 4, 5]" → "посмотри на график и скажи, выглядит ли красная линия логичным продолжением синей". LLM видит: синяя линия идёт вверх под углом 30° → красная внезапно падает → визуально нелогично → unreasonable. Это тот же механизм, что работает при анализе "посмотри на эту инфографику и объясни что не так" — только применён к прогнозам.
Дополнительная сила: Текстовый контекст (промо-акции, праздники) накладывается на визуальный паттерн. LLM связывает "в тексте сказано '15 марта распродажа'" + "на графике 15 марта есть пик" → логично. Или "в тексте сказано '15 марта распродажа'" + "на графике 15 марта прогноз ровный" → нелогично, должен быть всплеск. Это работает, потому что мультимодальные LLM обучены связывать визуальные и текстовые сигналы — тот же принцип, что позволяет им отвечать "что на этой фотографии?" или "найди на схеме элемент X".
Рычаги управления:
Уровень строгости: Добавь "помечай только ОЧЕВИДНЫЕ ошибки" → модель будет более консервативной, меньше ложных тревог. Убери эту фразу → модель будет придирчивее, заметит больше нюансов.
Контекст: Чем больше событий перечислишь (праздники, акции, сезонность) → тем точнее оценка. Но если контекст неправильный → модель ошибётся (скажет "должен быть всплеск", когда его не должно быть).
Формат объяснения: Попроси "объясни как для неспециалиста" → получишь простой язык. Попроси "объясни технически" → получишь термины типа "периодичность нарушена".
Шаблон промпта
Оцени, выглядит ли этот прогноз разумным.
На графике:
- {цвет_1} линия — {описание_истории} (например: история продаж за последние 90 дней)
- {цвет_2} линия — {описание_прогноза} (например: прогноз на следующие 30 дней)
Контекст (при наличии):
{Опиши важные события, сезонность, промо-акции — что влияет на данные}
Ответь:
1. Reasonable (разумный) или Unreasonable (нереалистичный)?
2. Что в прогнозе выглядит логично или, наоборот, настораживает?
3. Если unreasonable — какую ошибку допустила модель?
[прикрепи изображение графика]
Что подставлять:
{цвет_1},{цвет_2}— цвета линий на графике (синяя, красная, зелёная){описание_истории}— что показывает историческая часть (продажи, трафик, метрика){описание_прогноза}— что показывает прогноз (на сколько дней вперёд){контекст}— внешние факторы: праздники, промо-акции, запуски продуктов, сезонность (лето/зима), известные события (например, "в марте запустили рекламу в Яндекс.Директ")
Если контекста нет — убери секцию "Контекст", модель оценит только по визуальному паттерну.
Ограничения
⚠️ Периодичность: LLM плохо видят сжатие/растяжение циклов. Если прогноз сохраняет недельный паттерн, но сдвигает его на 5 дней вместо 7 — модель может пропустить. Визуально "похоже на волны" → кажется ОК, хотя частота неправильная.
⚠️ Пропущенные всплески: Самая сложная задача для LLM — заметить отсутствие события. Если в истории каждый месяц был пик, а в прогнозе его нет — модель ловит это хуже (F1 ≈ 0.75), чем ложные всплески (F1 ≈ 0.85). Человеческий глаз лучше видит "здесь чего-то не хватает".
⚠️ Новые модели ≠ лучше: Claude 3.7 Sonnet обошёл Claude 4.0 Sonnet и Opus на этой задаче. Более новая/большая модель не гарантирует точность в визуальной оценке прогнозов.
⚠️ Субъективность "разумности": Модель опирается на визуальную логику, но не знает бизнес-контекста. Прогноз может выглядеть "странно", но быть правильным из-за скрытых факторов (например, модель учла смену поставщика, а LLM этого не видит).
Ресурсы
The Forecast Critic: Leveraging Large Language Models for Poor Forecast Identification Исследование использует датасеты: синтетические временные ряды (14 базисных функций), M5 Forecasting Competition (продажи в ритейле), модель Chronos для генерации прогнозов.
Luke Bhan (UC San Diego), Hanyu Zhang, Andrew Gordon Wilson, Michael W. Mahoney, Chuck Arvin — Amazon.
