predictive analytics что это
Все о Process Mining от ProcessMi
Все о технологии Process Mining — кейсы, термины, решения и аналитика. Российский и зарубежный опыт от группы экспертов ProcessMi
Предиктивная аналитика
Предиктивная аналитика – это множество методов анализа текущих и/или прошедших данных или событий для прогнозирования. Основывается на применении статистики, анализа и теории игр.
Наиболее близким к предикативной аналитике (ее еще называют прогнозной, предикативной или предсказательной) является Data Mining, где частично используются похожие приёмы. Ядро всех используемых методов – задача определения параметров, которые влияют на прогнозируемые события. Такие задачи называют предикторами, а их совокупность составляет модель прогнозной аналитики. Подобная модель способна с определенной степенью вероятности предсказать некое будущее событие/явление.
Содержание
История
Считается, что нынешняя предиктивная аналитика берет свое начало из сороковых, когда начали использоваться метод Монте-Карло, линейное программирование и азы нейронных сетей. Во время войны подобные модели помогали расшифровывать немецкие сообщения и прогнозировать ядерные цепные реакции проекта “Манхэттен”.
Спустя двадцать лет крупные компании и исследовательские центры начали монетизацию предиктивной аналитики при помощи нелинейного программирования, что стало основой предсказания погоды и решения логистических задач на определение кратчайшего пути. С семидесятых начинается основной виток популярности методов. На сегодняшний момент прогнозная аналитика – одно из наиболее важных направлений корпоративной бизнес-аналитики, которая решает широкий спектр самых разных задач.
Виды предиктивной аналитики
Из-за акцента на определении связей между историческими данными и прогнозом будущего на их основе используется один или несколько предикторов. Если заданные требования более высокие, то применяться могут расширенные методы. Основные среди них – с контролируемым и неконтролируемым обучением.
Предполагается, что модель будет строиться по уже имеющимся данным и выходящим результатам, т.е. известны предикторы и итоги, на которые они влияют. Контролируемое обучение состоит из:
Регрессия. Самый популярный вид предиктивной аналитики. Во время регрессии применяется количественная переменная, т.е. цена продажи автомобиля будет зависеть от ряда предикторных переменных: марки, трансмиссии, привода, цвета, внешнего вида, состояния салона и т.д. Взаимосвязь между ценой и всеми предикторами будет лежать в основе модели. Есть несколько видов регрессии, среди них – многомерная линейная, полиномиальная, регрессионные деревья.
Классификация. Здесь нашла применение так называемая категориальная вариация ответа. Например, уровень дохода. Его можно условно разделить на три группы: низкий, средний и высокий. Классификатор изучит полученный набор данных, где в каждом наблюдении будет присутствовать информация о переменной и предикторах.
Например, исследуется уровень доходов лиц, которые отсутствуют в исходном наборе данных, по характеристикам возраста, пола и профессии. Аналитик сначала изучает весь набор данных, заданный алгоритм вычисляет комбинации, связанные с уровнем дохода, создавая так называемый обучающий набор. Затем алгоритм рассматривает другие наблюдения, где нет информации о доходе. В итоге, основываясь на классификации учебного набора данных, новым наблюдениям задается классификация: 64-летний мужчина, руководитель департамента информационной безопасности, будет отнесен к группе с высоким уровнем дохода.
Классификация делится на несколько видов: логистическая регрессия, случайные леса и др.
Моделирование идет по входящим данным. Вывод подбирается уже в процессе.
Кластеризация основной вид неконтролируемого обучения, который помогает понять связи между переменными или наблюдениями, определяя их попадание в разные группы. Например, если анализировать клиентов, то в расчет принимаем несколько переменных: пол, возраст, доход и т.д. Если бы была доступна история покупок, можно было воспользоваться методом классификации, но этих ответов нет. Поэтому придется группировать клиентов на основе переменных, чтобы идентифицировать отдельные группы.
Программные инструменты
Рынок предлагает большой выбор инструментов предиктивной аналитики. Основное отличие в функционале: одни предназначены для процесса моделирования, другие – для интерпретации моделей.
Из наиболее известных решений:
Простым языком о предсказательной аналитике
Предиктивный анализ – эта технология позволяет провести достаточно точное медиапланирование на основе накопленных данных.
Федор Иванов, старший продакт-менеджер Calltouch, рассказал Adindex, что это такое и чем вам поможет предсказание вашего маркетингового будущего.
Что такое предиктивный анализ
Дословно предиктивный анализ — это предсказательная аналитика, которая использует исторические данные, накопленные по некоторой величине, для прогнозирования поведения этой величины в будущем.
По сути, прогноз строится на основе алгоритмов анализа временных рядов. Возьмем любой показатель, который как-то меняется со временем. Предиктивный анализ анализирует известный отрезок времени, по которому уже накоплены данные, выявляет закономерности и на их основе строит прогноз на будущий период.
Насколько точен прогноз
Эффективность расчета зависит от типа данных для анализа. Если прослеживается явная периодичность изменений, точность прогноза достигает 85%.
Зачем предиктивный анализ маркетологам, агентствам и клиентам
Можно ли использовать прогнозную аналитику для карьерного роста?
Смоделируем такую ситуацию: маркетолог, увидев, что прогноз обещает «не лучшие» времена для компании на ближайшее полугодие, решает уйти в другую фирму. Может он руководствоваться прогнозом?
Предсказательная аналитика показывает возможное будущее с точностью 80–85% при условии, что все останется без изменений (не изменяются субъективные факторы). «Не лучшие» времена наступили не в один момент. Скорей всего, ухудшения нарастали постепенно, и негативная тенденция отразилась в прогнозе. В нашем примере это «звоночек» — пора что-то менять.
Предиктивный анализ в маркетинге и вообще в бизнес-сфере лучше использовать как инструмент медиапланирования. Предположим, клиент хочет знать количество лидов в следующем месяце. С помощью алгоритма легко спрогнозировать это значение.
Можно ли по результатам предиктивного анализа ставить KPI?
Все зависит от типа данных на входе. Когда периодичность изменений четко прослеживается, как в нишах B2B, то — да. Мы видим, что и как было в прошлых периодах. Будущее более-менее известно. В этом случае можно встроить прогноз в KPI, но с запасом на погрешность метода.
Другой пример — когда для анализа берутся редкие данные. Скажем, у клиента было в прошлом месяце 3 лида. Прогноз выдает прибавку в 2 лида. Однако любое случайное изменение может легко исказить предсказание. В таких случаях прогнозные данные нельзя применять для построения KPI.
В целом предсказательную аналитику рекомендуется использовать как инструмент медиапланирования. Например, спрогнозировали 1500 лидов в месяц. Маркетологи ударно поработали и получили результат в 2 раза лучше. Соответственно, значение 1500 лидов можно взять как нижнюю планку для KPI.
Зачем прогнозирование агентствам и клиентам?
Агентствам, как инструмент медиапланирования. Клиентам, скорей всего тоже для этих целей. Скажем, понять, какая на данный момент тенденция в бизнесе — негативная или позитивная, чего ждать в будущем. Если видится спад, то, возможно, имеет смысл перераспределить бюджеты на другие рекламные каналы или сделать что-то еще. Всегда лучше понимать, что творится с твоим бизнесом, и строить планы на будущее на основе объективных данных. Например, речевая аналитика позволяет узнать, как сотрудники обрабатывают звонки клиентов из разных источников трафика, следуют ли скриптам продаж и так далее. Это помогает грамотнее управлять фирмой и узнать, какие инструменты и площадки на самом деле приносят результат. О том, как это возможно и вообще устроено, подробнее рассказали в этом видео.
Могут ли клиенты использовать данные прогноза, чтобы проверить работу агентства?
Смоделируем такую ситуацию: клиенту обещают 50 лидов в месяц. Агентство уверяет, что это самый потолок их KPI и вообще в нише клиента никто больше 50 лидов не приводит. Клиент заходит в личный кабинет, и предиктивный прогноз выдает ему результат: 150 лидов на ближайший месяц. Может клиент «вскрыть» обман агентства?
Клиент, помимо предиктивного прогноза, получает ежемесячные отчеты агентства по ключевым метрикам. Если он видит, что лидов в прошлом месяце и ранее было в среднем 150, то планируемый показатель в 50 лидов как минимум некорректен. Предиктивный анализ не используют для выявления «плохишей» в агентстве. Это — инструмент медиапланирования.
Ключевой момент, чтобы понимать суть алгоритма.
Предсказательная аналитика строит прогноз на будущее при условии, что никакие «внешние» данные не будут меняться.
Все, что использует алгоритм для расчета, — это значение конкретной метрики на определенный период времени. Больше ничего не известно. Как получили это значение: переработали рекламную кампанию, влили бюджеты, подключили акции и прочее — этого алгоритм не может знать.
Соответственно, точность прогноза будет снижаться, если что-то менять. Подключили новые каналы рекламы, исправили объявления, сделали еще что-то для улучшения ситуации. В итоге добились не прогнозного спада, а реального подъема продаж.
На чем основаны данные о 85% точности прогнозов
Методика расчета заключается в следующем. Для анализа берутся данные за определенный временной период — это должна быть известная статистика. Из этого опорного периода искусственно выбирается та часть временного периода, за которую мы располагаем данными. Другую часть, неизвестную машине, но известную людям, используют для теста. Соответственно, на выходе мы можем оценить точность машинного прогноза, так как нам уже известны результаты второй части данных.
Прогнозирование временных рядов строится на двух алгоритмах, которые переключаются динамически в зависимости от типа данных:
В работе этих алгоритмов есть нюанс. Прежде чем строить прогноз, машина изучает входные данные. Обычно берется краткосрочный диапазон дат — неделя, а весь исследуемый временной отрезок дробится на 7-дневные циклы. Полученные сегменты сравниваются между собой. Неделя к неделе. Вычисляется коэффициент корреляции (взаимная связь). Если он высокий и прослеживается явная периодичность, то применяется метод Хольта-Винтерса. Когда данные не схожи между собой, подключается алгоритм ARMA.
Какое развитие получит предиктивный анализ в будущем
Можно ли в скором будущем добиться 100% точности прогноза?
100% точности предсказания в принципе невозможно достичь, потому что всегда будут мешать внешние факторы. Может быть, в каких-то идеальных условиях или применяя сверхмощный искусственный интеллект, — это возможно. Правда, ни того, ни другого пока не видно на горизонте.
Представьте: мы хотим со 100% точностью узнать, сколько времени нам понадобится на то, чтобы покрасить стены дома. У нас есть четыре месяца данных по среднему времени окрашивания аналогичного по параметрам дома для анализа: май, июнь, июль, август, причем данные месяцы были солнечными. Требуется спрогнозировать длительность работы в сентябре. Машина выдала некоторый результат, но сентябрь выдался дождливым. Понятно, что полученный прогноз не будет отражать объективную реальность.
Поэтому 100% точность — это фантастика. Можно добиться увеличения точности на 5–7 процентных пунктов. Сложно, долго и дорого. Сейчас, при 85%, мы имеем недостаточно быстрый расчет. А при повышении точности и глубины анализа есть опасения не увидеть прогноз никогда.
Новый мир, где все предсказуемо, пока откладывается?
Видимо, да. Это и хорошо. С непредсказуемостью в анализе можно ужиться, если понимать последствия ошибок.
Простой пример. Для бизнеса прогноз выдал 100 лидов на будущий месяц, а по факту вышло 110 или 95. Ничего страшного с компанией не произойдет. А вот что будет, если предсказали падение доллара на 20 копеек, а по факту случился подъем на 50 копеек? Для финансовых организаций и биржевых спекулянтов — это катастрофическая ошибка.
Предиктивный анализ — это не волшебный инструмент для предсказаний всего и везде. Но если прогнозную аналитику использовать для медиапланирования в маркетинге, можно добиться 85% точности прогноза. А это уже серьезно повышает управляемость бизнеса.
Предиктивная аналитика данных — моделирование и валидация
Представляю вашему вниманию перевод главы из книги Hands-On Data Science with Anaconda
«Предиктивная аналитика данных — моделирование и валидация»
Наша основная цель в проведении различных анализов данных — это поиск шаблонов, чтобы предсказать, что может произойти в будущем. Для фондового рынка исследователи и специалисты проводят различные тесты, чтобы понять рыночные механизмы. В этом случае можно задать много вопросов. Каким будет уровень рыночного индекса в ближайшие пять лет? Каков будет следующий ценовой диапазон IBM? Будет ли волатильность рынка увеличиваться или уменьшаться в будущем? Каким может быть влияние, если правительства изменят свою налоговую политику? Какова потенциальная прибыль и убытки, если одна страна начнет торговую войну с другой? Как мы прогнозируем поведение потребителя, анализируя некоторые связанные переменные? Можем ли мы предсказать вероятность того, что студент-выпускник успешно закончит учебу? Можем ли мы найти связь между определенным поведением одного конкретного заболевания?
Поэтому мы рассмотрим следующие темы:
Понимание предиктивного анализа данных
У людей может быть много вопросов касательно будущих событий.
Полезные наборы данных
Одним из лучших источников данных является UCI Machine Learning Repository. Зайдя на сайт мы увидим следующий список:
Например, если выбрать первый набор данных (Abalone), мы увидим следующее. Для экономии места отображается только верхняя часть:
Отсюда пользователи могут загрузить набор данных и найти определения переменных. Следующий код может быть использован для загрузки набора данных:
Соответствующий вывод показан здесь:
Из предыдущего вывода мы знаем, что в наборе данных имеется 427 наблюдения (набора данных). Для каждого из них у нас есть 7 связанных функций, таких как Name, Data_Types, Default_Task, Attribute_Types, N_Instances (количество экземпляров), N_Attributes (количество атрибутов) и Year. Переменная, называемая Default_Task, может быть интерпретирована как основное использование каждого набора данных. Например, первый набор данных, называемый Abalone, может быть использован для Classification. Функция unique() может быть использована для поиска всех возможных Default_Task, показанных здесь:
R пакет AppliedPredictiveModeling
Этот пакет включает в себя множество полезных наборов данных, которые могут использоваться для этой главы и других. Самый простой способ найти эти наборы данных — с помощью функции help(), показанной здесь:
Здесь мы покажем несколько примеров загрузки этих наборов данных. Чтобы загрузить один набор данных, мы используем функцию data(). Для первого набора данных, называемого abalone, у нас есть следующий код:
Вывод выглядит следующим образом:
Иногда, большой набор данных включает в себя несколько суб-наборов данных:
Для загрузки каждого набора данных, мы могли бы использовать функции dim(), head(), tail() и summary().
Аналитика временных рядов
Временные ряды можно определить как набор значений, полученных в последовательные моменты времени, часто с равными интервалами между ними. Существуют разные периоды, такие как годовой, ежеквартальный, ежемесячный, еженедельный и ежедневный. Для временных рядов ВВП (валовой внутренний продукт) мы обычно используем квартальные или годовые. Для котировок — годовые, ежемесячные и суточные частоты. Используя следующий код, мы можем получить данные ВВП США как ежеквартально, так и за годовой период:
Однако у нас есть много вопросов для анализа временных рядов. Например, с точки зрения макроэкономики мы имеем деловые или экономические циклы. Отрасли или компании могут иметь сезонность. Например, используя сельскохозяйственную промышленность, фермеры будут тратить больше в весенние и осенние сезоны и меньше на зиму. Для розничной торговли у них был бы огромный приток денег в конце года.
Чтобы манипулировать временными рядами, мы могли бы использовать множество полезных функций, включенных в пакет R, называемый timeSeries. В примере мы возьмем среднесуточные данные с еженедельной частотой:
Мы могли бы также использовать функцию head(), чтобы увидеть несколько наблюдений:
Прогнозирование будущих событий
Есть много методов, которые мы могли бы использовать при попытке предсказать будущее, таких как скользящее среднее, регрессия, авторегрессия и т. п. Во-первых, давайте начнем с простейшего для скользящего среднего:
В предыдущем коде значение по умолчанию для количества периодов равно 10. Мы могли бы использовать набор данных, называемый MSFT, включенный в пакет R, называемый timeSeries (см. Следующий код):
В ручном режиме мы находим, что среднее из первых трех значений x совпадает с третьим значением y. В каком-то смысле мы могли бы использовать скользящее среднее для прогнозирования будущего.
В следующем примере мы покажем, как оценить ожидаемую доходность рынка в следующем году. Здесь мы используем индекс S&P500 и историческое среднегодовое значение в качестве наших ожидаемых значений. Первые несколько команд используются для загрузки связанного набора данных под названием .sp500monthly. Целью программы является оценка среднегодового среднего и 90-процентного доверительного интервала:
Как видно из результатов, историческая среднегодовая доходность для S&P500 составляет 9%. Но мы не можем заявить, что доходность индекса в следующем году будет равна 9%, т.к. она может быть от 5% до 13%, а это огромные колебания.
Сезонность
В следующем примере мы покажем использование автокорреляции. Во-первых, мы загружаем R пакет под названием astsa, который выступает для прикладного статистического анализа временных рядов. Затем мы загружаем ВВП США с ежеквартальной частотой:
В вышеуказанном коде — функция diff() принимает разницу, например текущее значение минус предыдущее значение. Второе значение ввода указывает на задержку. Функция, называемая acf2(), используется для построения и печати ACF и PACF временного ряда. ACF обозначает функцию автоковариации, а PACF обозначает функцию частичной автокорреляции. Соответствующие графики показаны здесь:
Визуализация компонентов
Понятно, что концепции и наборы данных были бы намного более понятными, если бы мы могли использовать графики. Первый пример показывает колебания ВВП США за последние пять десятилетий:
Соответствующий график показан здесь:
Если бы мы использовали логарифмическую шкалу для ВВП, у нас был бы следующий код и график:
Следующий график близок к прямой линии:
R пакет – LiblineaR
Этот пакет представляет собой линейные прогностические модели, основанные на LIBLINEAR C/C++ Library. Вот один из примеров использования набора данных iris. Программа пытается предсказать, к какой категории относится растение, используя данные обучения:
Вывод следующий. BCR — это сбалансированная классификационная ставка. Для этой ставки, чем выше, тем лучше:
R пакет – eclust
Этот пакет представляет собой средо-ориентированную кластеризацию для интерпретируемых прогнозных моделей в высокоразмерных данных. Сначала давайте рассмотрим набор данных с именем simdata, который содержит смоделированные данные для пакета:
Предыдущий вывод показывает, что размерность данных равна 100 на 502. Y — это вектор непрерывного отклика, а E — двоичная переменная среды для метода ECLUST. E = 0 для неэкспонированных (n = 50) и E = 1 для экспонированных (n = 50).
Следующая программа R оценивает z-преобразование Фишера:
Определим z-преобразование Фишера. Предполагая, что у нас есть набор из n пар xi и yi, мы могли бы оценить их корреляцию, применяя следующую формулу:
Здесь p — корреляция между двумя переменными, а и
являются выборочные средние для случайных величин х и у. Значение z определяется как:
ln — функция натурального логарифма, а arctanh() — обратная гиперболическая касательная функция.
Выбор модели
В следующей программе мы пытаемся использовать линейные и полиномиальные модели для аппроксимации уравнения. Слегка измененный код показан здесь. Программа иллюстрирует влияние нехватки/переизбытка данных на модель:
Полученные графики показаны здесь:
Python пакет – model-catwalk
Пример можно найти здесь.
Первые несколько строк кода показаны здесь:
Соответствующий вывод показан здесь. Для экономии места представлена только верхняя часть:
Python пакет – sklearn
Поскольку sklearn — очень полезный пакет, стоит показать больше примеров использования этого пакета. Приведенный здесь пример показывает, как использовать пакет для классификации документов по темам с использованием подхода «bag-of-words».
В этом примере используется матрица scipy.sparse для хранения объектов и демонстрируются различные классификаторы, которые могут эффективно обрабатывать разреженные матрицы. В этом примере используется набор данных из 20 групп новостей. Он будет автоматически загружен, а затем кэширован. ZIP-файл содержит входные файлы и может быть загружен здесь. Код доступен здесь. Для экономии места показаны только первые несколько строк:
Соответствующий вывод показан здесь:
Для каждого метода есть три показателя: оценка, время обучения и время тестирования.
Julia пакет – QuantEcon
Возьмем для примера использование Марковских цепей:
Цель примера состоит в том, чтобы увидеть, как человек из одного экономического статуса в будущем трансформируется в другого. Во-первых, давайте посмотрим на следующий график:
Давайте посмотрим на крайний левый овал со статусом «poor». 0.9 означает, что человек с таким статусом имеет 90% шансов остаться бедным, а 10% переходит в средний класс. Он может быть представлен следующей матрицей, нули находятся там, где нет ребра между узлами:
Говорят, что два состояния, x и y, связаны друг с другом, если существуют положительные целые числа j и k, такие как:
Цепь Маркова P называется неприводимой, если все состояния связываются; то есть, если x и y сообщаются для каждого (x, y). Следующий код подтвердит это:
Следующий график представляет экстремальный случай, так как будущий статус для бедного человека будет на 100% бедным:
Следующий код также подтвердит это, так как результат будет false:
Тест Грэнджера на причинность
Тест Грэнджера на причинность используется для определения того, является ли один временной ряд фактором, и предоставляет полезную информацию для прогнозирования второго. В следующем коде набор данных с именем ChickEgg используется в качестве иллюстрации. Набор данных имеет две колонки, число цыплят и количество яиц, с отметкой времени:
Вопрос в том, можем ли мы использовать число яиц в этом году, чтобы предсказать число цыплят в следующем году?
Если это так, то количество цыплят будет причиной по Грэнджеру для количества яиц. Если это не так, мы говорим, что количество цыплят не является причиной по Грэнджеру для количества яиц. Вот соответствующий код:
В модели 1 мы пытаемся использовать лаги цыплят плюс лаги яиц, чтобы объяснить количество цыплят.
Т.к. значение P довольно мало (оно значимо при 0,01) мы говорим, что количество яиц является причиной по Грэнджеру для количества цыплят.
Следующий тест показывает, что данные о цыплятах не могут быть использованы для прогнозирования следующего периода:
В следующем примере мы проверяем доходность IBM и S&P500 с целью выяснить, что их них является причиной по Грэнджеру для другого.
Сначала мы определим функцию доходности:
Теперь функция может быть вызвана с входными значениями. Цель программы — проверить, можем ли мы использовать отставания на рынке для объяснения доходности IBM. Точно так же мы проверяем, объяснить отставания IBM доходами рынка:
Результаты показывают, что индекс S&P500 можно использовать для объяснения доходности IBM за следующий период, поскольку он статистически значим на уровне 0,1%. Следующий код будет проверять, объясняет ли отставание IBM изменение S&P500:
Результат предполагает, что в течение этого периода доходность IBM может быть использованы для объяснения индекса S&P500 следующего периода.