Сценарии поиска решений в данных
Сценарий поиска решения в данных представляет собой процедуру нахождения таких значений входных параметров, которые приводят к желаемому изменению значения выходного параметра. При этом одна часть входных параметров фиксируется (факторы, на которые мы не можем повлиять), а поиск решения осуществляется изменением значений в другой части входных параметров (факторы, на которые мы можем повлиять). Этот сценарий используется, например, для планирования действий с целью достижения определенного значения некоего показателя при заданных ограничениях или для выявления наиболее значимых факторов, оказывающих влияние на целевую характеристику. В качестве примеров выполнения таких сценария в бизнес-приложениях могут служить попытки ответить на следующие вопросы:
Если связь между значениями изменяемых входных параметров и целевой характеристики известна, т.е. эта связь описывается некой математической функцией, то описанная задача сводится к нахождению локальной обратной функции. Эта задача решается, обычно, численными методами и интегрирована во многие программные пакеты, как например, надстройка Solver в Microsoft Excel. Если же зависимость априорно неизвестна или же носит стохастический характер, то для ее выявления и инвертирования применяются различные подходы из области так называемого интеллектуального анализа данных - Data Mining. Диапазон таких подходов включает как хорошо изученные статистические методы, так и довольно экзотические пока для большинства аналитиков методы эволюционного программирования. В этой статье мы опишем выполнение сценария поиска решений при помощи Байесовских сетей, а также рассмотрим небольшой пример практического использования этого подхода с использованием платформы Microsoft Analysis Services 2008. Байесовская сеть - это направленный ациклический граф, узлами в котором служат атрибуты. Наличие дуги между атрибутами указывает на наличие между ними непосредственной (безусловной от других атрибутов) стохастической зависимости. Таким образом, Байесовская сеть представляет собой модель стохастической зависимости (или, наоборот, условной стохастической независимости) между атрибутами. Эта модель служит для оценки совместного распределения данных. Допущения о частичной условной независимости атрибутов упрощает оценку их совместного распределения и делает эту оценку более состоятельной при меньшем количестве данных.
Крайне простой формой обладает так называемая "наивная" Байесовская сеть, для которой все входные атрибуты условно независимы при условии фиксированного целевого атрибута. Эта сеть очень легко рассчитывается, но не всегда адекватно описывает совместное распределение. Существуют также другие специальные формы Байесовских сетей, например, древовидная сеть. В этом случае, у каждого входного атрибута не могут быть больше одного родителя из числа других входных атрибутов, при этом зависимость от выходной характеристики может быть. Структура такой сети определяется максимизацией правдоподобия данных на ее структуре. В общем случае структуру Байесовской сети можно получить посредством последовательно выполняемых статистических тестов на условную независимость между тройками всех атрибутов. Такие тесты позволяют получить так называемое "Марковское одеяло" (Markov blanket) для каждого узла, т.е. его родителей, детей и других родителей его детей. Этого достаточно, чтобы реконструировать структуру такой сети. После того, как структура байесовской сети определена, мы можем получить оценки совместного распределения вероятностей всех наборов атрибутов. Зная эти оценки, следующим шагом для выполнения сценария поиска решения мы должны определить такие значения входного изменяемого набора атрибутов, которые бы максимизировали условную вероятность того, что целевой атрибут примет выгодное для нас значение. Т.е., если X - входной набор изменяемых атрибутов, Z = z - входной набор фиксированных атрибутов со значением z, а Y - целевой атрибут с желательным для нас значением Y = a, то наша задача заключается в нахождении такого x, при котором условная вероятность была бы максимальной. Другими словами, мы должны найти максимум функции на всей области значений атрибута X. Если это множество значений дискретно и невелико, то максимум можно найти перебором. В противном случае, следует воспользоваться одним из итеративных численных алгоритмов нелинейной оптимизации. Проиллюстрируем решение этой задаче на демонстрационной базе данных Adventure Works на платформе Microsoft Analysis Services 2008. У нас есть таблица со следующей информацией о клиентах:
1. Создадим структуру данных модели клиентов.
2. Создадим модель. К сожалению, из всех байесовских сетей платформой пока поддерживается только "наивный" Байес.
3. Обучим модель на имеющихся данных из SQL сервера
4. Для выполнения сценария поиска решений среди клиентов, не купивших велосипед, наугад был выбран один.
5. Выполним сценарий поиска решения: определить какое расстояние до работы приведет с наибольшей уверенностью к покупке велосипеда при прочих равных характеристиках клиента. Для этого составим запрос, который возвращает условные вероятности покупки велосипеда клиентом с теми же характеристиками, но с различными значениями расстояния до работы и отсортируем результаты по вероятности покупки.
Результат выполнения этого запроса приведен ниже:
Автор: Максим Гончаров Источник: http://www.businessdataanalytics.ru/ |