---
Данные для практики: FactInternetSales
Встроенное прогнозирование в Power BI
Продолжаем изучение аналитики в Microsoft Power BI. Сегодня разберём
встроенные возможности прогнозирования (forecasting).
Прогнозирование — это попытка предсказать значения финансовых
показателей на будущие периоды на основе ретроспективных данных.
В курсах по Python и R мы будем отдельно изучать алгоритмы анализа
временных рядов, которые позволяют строить более точный и научно
обоснованный прогноз. Но в Power BI уже встроен алгоритм, который строит
прогноз без программирования. Power BI также можно использовать для
визуализации результатов алгоритмов, написанных на Python или R.
Подключение данных
Для работы нужен набор данных (dataset). Подключаемся к SQL
Server, база — AdventureWorks. Выбираем таблицу Fact Internet
Sales, в которой отражены продажи через интернет-канал.
Проверяем поля SalesAmount и StandardCost. При подключении к
базе данных форматы преобразуются автоматически. Числовые поля
отображаются курсивом, текстовые — прямым шрифтом. Загружаем набор
данных: в нём около 60 000 строк.
Нас интересует поле OrderDate. Оно уже отмечено значком календаря,
то есть распознано корректно. Если поле является календарным, Power BI
автоматически создаёт иерархию дат: год, квартал, месяц, день. Это
удобно: можно переходить от общего периода к детальному. Такие же
автоматические иерархии существуют для геоданных.
Визуализация продаж
Строим визуализацию: SalesAmount по OrderDate. Сначала видим
агрегацию продаж по годам. В данных есть 2010–2014 годы, но за 2014 год
данных мало. Вероятно, база перестала актуализироваться после 2013 года.
Переключаемся на линейный график, чтобы детальнее увидеть продажи по
годам. Отключаем суммирование, если нужно посмотреть значения подробнее.
Запуск Forecast
Во вкладке Аналитика выбираем Forecast и добавляем прогноз.
Появляется небольшой прогноз. Для наглядности фильтруем 2014 год. Длину
прогноза задаём количеством точек: сначала 10, затем 50. Период прогноза
расширяется.
Проверка точности прогноза
Чтобы проверить качество, строим прогноз на один год, игнорируя
последний год. Тогда последний год сам становится прогнозным. Вокруг
линии прогноза отображается серый конус — доверительный интервал
(confidence interval) с вероятностью 95%.
Если фактические данные не попадают в этот конус, прогноз неточен. В
примере 2013 год сначала укладывался в прогноз, а затем резко вырос. Это
трендовая компонента, которую алгоритм не знает. Возможные причины:
конкуренты ушли с рынка, изменилась мода, возник бум спортивных
велосипедов.
Если игнорировать последние два года, прогноз на год оказался точнее:
фактический год уложился в 95% доверительный интервал. При полном
прогнозе на один год с игнорированием ноль видна только будущая воронка.
Смещение вниз может быть следствием аномального падения продаж в конце
2013 года.
Фильтрация аномалий
Для чистоты прогноза аномальные данные убирают. В иерархии месяцы
сортируются естественно: январь, февраль, март, а не по алфавиту.
Аномалия начинается примерно с 23.12.2013.
На дата-сете удобнее фильтровать поле OrderDate. Если фильтр
добавлен по компонентам иерархии, нужно перенести OrderDate в
фильтры как единое поле. Тогда можно задать точную дату или границу
периода. После фильтрации снова строим Forecast на один год,
игнорируя ничего, и получаем воронку, в которой с вероятностью 95% будут
находиться продажи.
Ограничения встроенного прогноза
Forecast — сильный встроенный инструмент для быстрого прогноза
финансовых показателей и объёмов продаж. Но алгоритм не знает внешних
факторов и сложных изменений рынка. Для более точных моделей временных
рядов используют Python и R, а Power BI применяют для визуализации
результатов.
Краткие итоги
Встроенный прогноз в Power BI стоит воспринимать как инструмент быстрой
аналитической разведки, а не как замену полноценному статистическому
моделированию. Его сильная сторона — минимальный порог входа: аналитик
подключает источник, выбирает временное поле и показатель, после чего
получает визуальную оценку будущего поведения ряда. Однако качество
такого прогноза напрямую зависит от подготовки данных. Календарное поле
должно распознаваться как дата, числовые показатели — как числа,
а иерархия периодов — позволять переходить от года к кварталу, месяцу и
дню. Без этого прогноз либо не построится, либо будет вводить в
заблуждение.
Ключевой практический приём — проверка модели на исторических данных.
Игнорирование последнего периода превращает известный факт в проверочный
полигон: система строит прогноз так, будто будущее неизвестно, а
аналитик сравнивает полученную воронку с фактической линией. Если факт
выходит за доверительный интервал, это сигнал о структурном сдвиге,
аномалии или сильном тренде, который встроенный алгоритм не мог учесть.
Такой подход позволяет не доверять прогнозу слепо, а понимать его
устойчивость.
Доверительный интервал задаёт диапазон неопределённости. Его ширина и
попадание фактических точек показывают, насколько модель соответствует
данным. При этом даже хорошее попадание не гарантирует будущую точность:
рынок может измениться под влиянием внешних факторов, моды, действий
конкурентов, изменений спроса. Поэтому визуальный прогноз полезен для
быстрых решений, но для стратегических выводов требуется содержательная
интерпретация.
Отдельный практический урок — работа с выбросами и фильтрами.
Аномальные участки могут смещать прогноз, поэтому их выявление и
обоснованное исключение повышают качество модели. В Power BI важно
различать фильтрацию по иерархии дат и по единому полю даты: только
второй вариант позволяет задать точную границу периода. Это влияет на
воспроизводимость анализа.
Наконец, встроенный Forecast удобно сочетать с Python и R: Power BI
может визуализировать результаты более сложных моделей временных рядов.
Практическая логика такова: сначала быстрый встроенный прогноз для
ориентира, затем проверка на истории, очистка аномалий, а при высокой
цене ошибки — переход к программируемым алгоритмам.
Назначение встроенного прогноза
Прогнозирование (forecasting) — предсказание будущих значений
финансовых показателей по прошлым данным. В Power BI есть встроенный
алгоритм, не требующий программирования. Python и R позже дают более
точные методы анализа временных рядов, а Power BI может визуализировать
их результаты.
Подготовка данных
Нужен набор данных (dataset). Подключаемся к SQL Server, база
AdventureWorks, таблица Fact Internet Sales — продажи через
интернет. Проверяем SalesAmount и StandardCost. При подключении
к базе форматы преобразуются автоматически: числовые поля отображаются
курсивом, текстовые — прямым шрифтом. Загружаем данные, около 60 000
строк. Ключевое поле — OrderDate. Оно распознано как дата, поэтому
Power BI автоматически строит иерархию дат: год, квартал, месяц,
день. Аналогично автоматическим иерархиям для геоданных.
Визуализация и запуск прогноза
Строим график: SalesAmount по OrderDate. Видим продажи по годам.
Данные есть за 2010–2014, но за 2014 мало: вероятно, база перестала
актуализироваться. Переключаемся на линейный график для детализации. Во
вкладке Аналитика выбираем Forecast и добавляем прогноз. Для
наглядности фильтруем 2014 год. Длину прогноза задаём количеством точек:
сначала 10, затем 50.
Проверка точности
Чтобы проверить качество, строим прогноз на один год, игнорируя
последний год. Тогда последний год становится прогнозным, а вокруг
линии появляется серый конус — доверительный интервал (confidence
interval) с вероятностью 95%. Если фактические данные не попадают в
конус, прогноз неточен. В примере 2013 год сначала укладывался в
интервал, затем резко вырос. Это трендовая компонента, которую
алгоритм не знает: возможны внешние причины — конкуренты, мода, бум
спортивных велосипедов.
Если игнорировать последние два года, прогноз на год оказался точнее:
фактический год уложился в 95% интервал. При полном прогнозе на один год
с игнорированием ноль видна только будущая воронка. Смещение вниз может
быть из-за аномального падения продаж в конце 2013 года.
Фильтрация и ограничения
Для чистоты прогноза аномалию убирают. В иерархии месяцы сортируются
естественно: январь, февраль, март, а не по алфавиту. Аномалия — с
23.12.2013. На дата-сете фильтруют OrderDate. Если фильтр добавлен
по компонентам иерархии, нужно перенести OrderDate в фильтры как
единое поле. Тогда можно задать точную дату или границу. После
фильтрации снова строят Forecast на один год, игнорируя ничего, и
получают воронку, в которой с вероятностью 95% будут продажи.
Forecast — сильный встроенный инструмент для быстрого прогноза
финансовых показателей и объёмов продаж. Его ограничение: алгоритм не
знает внешних факторов и сложных изменений рынка. Для более точных
моделей временных рядов используют Python и R, а Power BI применяют для
визуализации.
1. Встроенный Forecast в Power BI позволяет строить прогноз без программирования.
2. Качество прогноза зависит от корректности дат, чисел и иерархии.
3. Автоматическая иерархия дат упрощает анализ по годам, кварталам, месяцам и дням.
4. Для прогноза достаточно временного поля и числового показателя.
5. Длину прогноза задают количеством точек.
6. Игнорирование последних периодов позволяет проверить точность на факте.
7. Доверительный интервал показывает диапазон неопределённости прогноза.
8. Выход факта за доверительный интервал указывает на неточность или структурный сдвиг.
9. Встроенный алгоритм не знает внешних причин тренда.
10. Аномальные периоды стоит выявлять и при необходимости исключать.
11. Фильтр по дате лучше добавлять как единое поле, а не по иерархии.
12. Для сложных прогнозов Power BI сочетают с Python и R.
1. Что такое прогнозирование и какую задачу оно решает?
2. Какие данные нужны Power BI для построения прогноза?
3. Почему важно, чтобы OrderDate был распознан как дата?
4. Как Power BI строит иерархию дат и зачем она нужна?
5. Как построить график продаж по годам?
6. Где находится инструмент Forecast и как его добавить?
7. Как настроить длину прогноза?
8. Зачем при проверке прогноза игнорировать последние периоды?
9. Что означает серый конус вокруг линии прогноза?
10. Как интерпретировать выход фактических данных за доверительный интервал?
11. Как правильно отфильтровать данные по конкретной дате и почему это важно?
12. В чём ограничение встроенного Forecast и когда нужны Python/R?