Методика анализа с использованием механизмов Data Mining [1] базируется на различных алгоритмах извлечения закономерностей из исходных данных, результатом работы которых являются модели. Таких алгоритмов довольно много, но несмотря на их обилие они не способны гарантировать качественное решение. Никакой самый изощренный метод сам по себе не даст хороший результат, т.к. критически важным становится вопрос качества исходных данных. Чаще всего именно качество данных является причиной неудачи.
Ниже описана методика, следуя которой, можно подготовить качественные данные в нужном объеме для анализа. В этой последовательности действий все достаточно просто и логично, но, несмотря на это, пользователи почти всегда допускают одни и те же тривиальные ошибки. Надеюсь, что статья позволит допускать меньше ошибок такого рода. Здесь перечислен не жесткий набор правил, а, скорее, список рекомендаций, которых желательно придерживаться.
Общая схема использования методов Data Mining состоит из следующих шагов (подробнее см. Методика анализа данных [2]).
Эта последовательность действий не зависит от предметной области, поэтому ее можно использовать для любой сферы деятельности.
Выдвижение гипотез
Гипотезой в данном случае будем считать предположение о влиянии определенных факторов на исследуемую нами задачу. Форма этой зависимости в данном случае значения не имеет, т.е. мы может сказать, что на продажи влияет отклонение нашей цены на товар от среднерыночной, но при этом не указывать, как, собственно, этот фактор влияет на продажи. Для решения этой задачи и используется Data Mining. Автоматизировать процесс выдвижения гипотез не представляется возможным, по крайней мере, на сегодняшнем уровне развития технологий. Эту задачу должны решать эксперты – специалисты в предметной области. Полагаться можно и нужно на их опыт и здравый смысл, постараться максимально использовать их знание о предмете и собрать как можно больше гипотез/предположений. Обычно для этих целей хорошо работает тактика мозгового штурма. На первом шаге нужно собрать и систематизировать все идеи, их оценку будем производить позже. Результатом данного шага должен быть список с описанием всех факторов.
Например, для задачи прогнозирования спроса это может быть список следующего вида: сезон, день недели, объемы продаж за предыдущие недели, объем продаж за аналогичный период прошлого года, рекламная компания, маркетинговые мероприятия, качество продукции, бренд, отклонение цены от среднерыночной, наличие данного товара у конкурентов…
В процессе подбора влияющих факторов необходимо максимально абстрагироваться от информационных систем и имеющихся в наличии данных. Очень часто встречается ситуация, когда пользователи говорят : "Вот есть такие данные. Что можно на них получить?". Это порочная практика, т. к. мы должны решать задачу и подбирать данные для ее решения, а не брать имеющуюся информацию и придумывать, что из них можно "выжать". Целью является решение актуальной задачи, а не оправдание затрат на сбор большого объема данных.
После подготовки таблицы с описанием факторов нужно экспертно оценить значимость каждого из факторов. Эта оценка не является окончательной, она будет отправной точкой. В процессе анализа вполне может оказаться, что фактор, который эксперты посчитали очень важным, таковым по сути не является и, наоборот, незначимый с их точки зрения фактор может оказывать значительное влияние. Но в любом случае, все варианты проанализировать сразу невозможно, нужно от чего-то отталкиваться, этой точкой и является оценка экспертов. К тому же, довольно часто реальные данные подтверждают их оценку.
Результатом этого шага может быть таблица следующего вида:
Показатель | Экспертная оценка значимости (1-100) |
---|---|
Сезон | 100 |
День недели | 80 |
Объем продаж за предыдущие недели | 100 |
Объем продаж за аналогичный период прошлого года | 95 |
Рекламная компания | 60 |
Маркетинговые мероприятия | 40 |
Качество продукции | 50 |
Бренд | 25 |
Отклонение цены от среднерыночной | 60 |
Наличие данного товара у конкурентов | 15 |
Формализация и сбор данных
Далее необходимо опередить способ представления данных, выбрав один из 4-х видов – число, строка, дата, логическая переменная (да/нет). Достаточно просто определить способ представления, т.е. формализовать некоторые данные, например, объем продаж в рублях – это определенное число. Но довольно часто возникают ситуации, когда непонятно, как представить фактор. Чаще всего такие проблемы возникают с качественными характеристиками. Например, на объемы продаж влияет качество товара. Качество – это довольно сложное понятие, но если этот показатель действительно важен, то нужно придумать способ его формализации. Например, определять качество по количеству брака на тысячу единиц продукции, либо экспертно оценивать, разбив на несколько категорий – отлично/хорошо/удовлетворительно/плохо.
Необходимо оценить стоимость сбора нужных для анализа данных. Дело в том, что некоторые данные легко доступны, например, их можно извлечь из существующих информационных систем. Но есть информация, которую не просто собрать, например, сведения о конкурентах. Поэтому необходимо оценить, во что обойдется сбор данных.
Чем больше будет данных для анализа, тем лучше; их проще отбросить на следующих этапах, чем собрать новые сведения. К тому же необходимо учитывать, что не всегда экспертная оценка значимости факторов будет совпадать с реальной, т. е. в начале не известно, что на самом деле является значимым, а что нет. Мы отталкиваемся от мнения экспертов относительно значимости факторов, но в действительности все может быть иначе. Поэтому желательно иметь побольше данных, чтобы иметь возможность оценить влияние максимального количества показателей.
Но сбор данных не является самоцелью. Если информацию получить легко, то, естественно, нужно ее собрать. Если данные получить сложно, то необходимо соизмерить затраты на ее сбор и систематизацию с ожидаемыми результатами.
Есть несколько методов сбора, необходимых для анализа данных:
- Получение из учетных систем. Обычно в учетных системах есть различные механизмы построения отчетов и экспорта данных, поэтому извлечение нужной информации из них чаще всего относительно несложная операция.
- Получение сведений из косвенных данных. О многих показателях можно судить по косвенным признакам, и этим нужно воспользоваться. Например, можно оценить реальное финансовое положение жителей определенного региона следующим образом. В большинстве случаев имеется несколько товаров, предназначенных для выполнения одной и той же функции, но отличающихся по цене: товары для бедных, среднеобеспеченных и богатых. Если получить отчет о продажах товара в интересующий регион и проанализировать пропорции, в которых продаются товары для бедных, среднеобеспеченных и богатых, то можно предположить, что чем больше доля дорогих изделий из одной товарной группы, тем более состоятельны в среднем жители данного региона.
- Использование открытых источников. Большое количество данных присутствует в открытых источниках, таких как статистические сборники, отчеты корпораций, опубликованные результаты маркетинговых исследований и прочее.
- Проведение собственных маркетинговых исследований и аналогичных мероприятий по сбору данных. Это может быть достаточно дорогостоящим мероприятием, но, в любом случае, такой вариант сбора данных возможен.
- Ввод данных "вручную", когда данные вводится по различного рода экспертным оценкам сотрудниками организации. Этот метод наиболее трудоемкий.
Стоимость сбора информации различными методами существенно отличается по цене и времени, которое необходимо для этого, поэтому нужно соизмерять затраты с результатами. Возможно, от сбора некоторых данных придется отказаться, но факторы, которые эксперты оценили как наиболее значимые, нужно собрать обязательно не смотря на стоимость этих работ, либо вообще отказаться от анализа. Очевидно, что если эксперт указал некоторый фактор как важный, то не учитывать его просто нельзя, т.к. мы рискуем провести анализ, ориентируясь на второстепенные малозначащие факторы, и, следовательно, получить модель, которая будет давать плохие и нестабильные результаты. А такая модель не представляет практической ценности.
Собранные данные нужно преобразовать к единому формату, например, Excel, текстовой файл с разделителями либо любая СУБД. Данные обязательно должны быть унифицированы, т.е. одна и та же информация везде должна описываться одинаково. Обычно проблемы с унификацией возникают при сборе информации из разнородных источников. В этом случае унификация является серьезной задачей, но ее обсуждение выходит за рамки данной статьи.
Представление и минимальные объемы необходимых данных
Для анализируемых процессов различной природы данные должны быть подготовлены специальным образом.
Упорядоченные данные
Такие данные нужны для решения задач прогнозирования, когда следует определить, каким образом поведет себя тот или иной процесс в будущем на основе имеющихся исторических данных. Чаще всего в качестве одного из фактов выступает дата или время, хотя это и не обязательно, речь может идти и о неких отсчетах, например, данные, с определенной периодичностью собираемые с датчиков.
Для упорядоченных данных (обычно это временные ряды) каждому столбцу соответствует один фактор, а в каждую строку заносятся упорядоченные по времени события с единым интервалом между строками. Не допускается наличие группировок, итогов и прочее, т. е. нужна обычная таблица.
NN | Дата | Частота закупок | Объем продаж(руб.) |
---|---|---|---|
1 | 01.05.2004 | 256 |
459874.00 |
2 | 02.05.2004 | 278 |
515687.00 |
Если для процесса характерна сезонность/цикличность, необходимо иметь данные хотя бы за один полный сезон/цикл с возможность варьирования интервалов (понедельное, помесячное…), т.к. цикличность может быть сложной, например, внутри годового цикла квартальные, а внутри кварталов недельные, то необходимо иметь полные данные как минимум за один самый длительный цикл.
Максимальный горизонт прогнозирования зависит от объема данных:
- Данные на 1,5 года – прогноз максимум на 1 месяц;
- Данные за 2-3 года – прогноз максимум на 2 месяца;
В общем случае максимальный горизонт прогнозирования (время, за которое можно строить достаточно достоверные прогнозы) ограничивается не только объемом данных. Мы исходим из предположения, что факторы, определяющие развитие процесса, будут оказывать влияние и в будущем примерно такое же, что и на текущий момент. Данное предположение справедливо не всегда. Например, в случае слишком быстрого изменения ситуации, появления новых значимых факторов и т.п. это правило не работает. Поэтому в зависимости от задачи требования к объему могут сильно изменяться. Использование слишком большого объема данных для анализа так же нецелесообразно, т.к. в этом случае мы будем строить модель по старой истории, и, следовательно, могут учитываться факторы, возможно уже утратившие свою значимость.
Неупорядоченные данные
Такого рода данные нужны для задач, где временной фактор не имеет значения, например, оценка кредитоспособности, диагностика, сегментация потребителей. В таких случаях мы считаем ситуацию статичной и поэтому информация о том, что одно событие произошло раньше другого, значения не имеет.
Для неупорядоченных данных каждому столбцу соответствует фактор, а в каждую строку заносится пример (ситуация, прецедент). Упорядоченность строк не требуется. Не допускается наличие группировок, итогов и прочее, т. к. нужна обычная таблица.
Номер прецедента | Стаж работы | Наличие автомобиля | Объем кредита(руб.) |
---|---|---|---|
1 | больше 5 лет | Да |
150000.00 |
2 | меньше 5 лет | Нет |
125000.00 |
Количество примеров (прецедентов) должно быть значительно больше количества факторов. В противном случае высока вероятность, что случайный фактор окажет серьезное влияние на результат. Если нет возможности увеличить количество данных, то придется уменьшить количество анализируемых факторов, оставив наиболее значимые.
Желательно, чтобы данные покрывали как можно больше ситуаций реального процесса, а пропорции различных примеров (прецедентов) должны примерно соответствовать реальному процессу. Мы пытаемся построить модели на основе предложенных данных, поэтому, чем ближе данные к действительности, тем лучше. Необходимо понимать, что система не может знать о чем-либо, что находится за пределами собранных для анализа данных. Например, если при создании системы диагностики больных подавать только сведения о больных, то система не будет знать о существовании в природе здоровых людей. И соответственно, любой человек с ее точки зрения будет обязательно чем-то болен.
Транзакционные данные
Транзакционные данные используются в алгоритмах поиска ассоциативных правил, этот метод часто называют "анализом потребительской корзины". Под транзакцией подразумевается несколько объектов или действий, сгруппированных в логически связанную единицу. Очень часто данный механизм используется для анализа покупок (чеков) в супермаркетах. Но вообще речь может идти о любых связанных объектах или действиях, например, продажа туристических туров с набором сопутствующих услуг (оформление виз, доставка в аэропорт, услуги гида и прочее). Используя данный метод анализа, находятся зависимости вида, "если произошло событие А, то с определенной вероятностью произойдет событие Б".
Транзакционные данные для анализа необходимо подготовить в следующем виде:
Код транзакции | Товар |
---|---|
10200 | Йогурт "Чудо" 0.4 |
10200 | Батон "Рязанский" |
10201 | Вода "Боржоми" 0,5 |
10201 | Сахарный песок, пачка 1 кг. |
10201 | Хлеб "Бородинский" |
Код транзакции сооветствует коду чека, счета, накладной. Товары с одинаковым кодом входят в разовую покупку.
Описанного представления данных достаточно для работы обычных ассоциативных правил, где находятся связи между каждым объектом в отдельности. Пример, "Если купили "Йогурт Чудо 0,4", то приобретут и "Батон Рязанский"".
Существует еще алгоритм поиска обобщенных ассоциативных правил, когда имеется возможность найти связи не только между объектами, но и группами объектов. Например, при наличии информации о товарных группах, к которым относятся объекты, можно находить зависимости типа "Если купили Батон Рязанский, то купят и что-нибудь из йогуртов". Для поиска обобщенных ассоциативных правил необходимо подготовить дополнительную информацию с деревом отношений между объектами – иерархией групп в следующем виде:
ID | ID предка | Объект |
---|---|---|
1 | Хлебобулочные изделия | |
2 | 1 | Хлеб |
3 | 1 | Булки |
4 | 2 | Батон "Рязанский" |
5 | 2 | Хлеб "Бородинский" |
6 | Молочные продукты | |
7 | 6 | Молоко |
8 | 6 | Йогурты |
9 | 8 | Йогурт Чудо 0,4 |
10 | 8 | "Растишка персиковый 0,25" |
ID – уникальный номер объекта. ID предка – номер родительского объекта. Если объект корневой, то это поле должно быть пустым. В поле "Объекты" находятся как группы, так и товар.
Таблица с иерархией объектов соответствует следующей диаграмме.
Анализ транзакций целесообразно производить на большом объеме данных, иначе могут быть выявлены статистически необоснованные правила. Алгоритмы поиска ассоциативных связей способны быстро перерабатывать огромные массивы информации, т.к. основное достоинство алгоритмов поиска ассоциативных правил заключается именно в масштабируемости, т.е. способности обрабатывать большие объемы данных.
Примерное соотношение между количеством объектов и объемом данных:
- 300-500 объектов – более 10 тыс. транзакций;
- 500-1000 объектов – более 300 тысяч транзакций;
При недостаточном количестве транзакций целесообразно уменьшить количество анализируемых объектов, например, сгруппировать их.
Построение моделей – анализ
существует большое количество механизмов построения моделей, и их описание выходит за рамки данной статьи. Но каждый из них имеет свои ограничения и решает определенный класс задач, поэтому на практике, чаще всего добиться успеха можно, комбинируя методы анализа. При этом, чем раньше будет предпринята попытка испытать полученную модель на практике, тем лучше, т.к. других способов реально оценить ее качество не существует.
В целом, можно дать следующие рекомендации, не зависящие от конкретного алгоритма обработки:
- Уделить большое внимание очистке данных. Собрав данные в нужном объеме, нельзя быть уверенным, что они будут хорошего качества. Чаще всего, качество данных оставляет желать лучшего, поэтому необходимо их предобработать. Для этого есть множество методов: удаление шумов, сглаживание, редактирование аномалий и прочее. Дополнительно см. Предобработка и очистка данных [3];
- Комбинировать методики анализа. Это позволяет шире смотреть на проблему. Более того, использование различных методов для решения одной и той же задачи может навести на ценные идеи;
- Не гнаться за абсолютной точностью и начать использование при получении первых приемлемых результатов. Все равно идеальный результат получить невозможно. Если мы получили результат, пусть не идеальный, но лучше, чем был ранее, то есть резон начать его использование. Во-первых, это позволяет быстрее получить практическую отдачу. Во-вторых, только на практике можно действительно оценить полученный результат. В-третьих, можно и нужно параллельно работать над совершенствованием модели с учетом полученных на практике результатов;
- При невозможности получения приемлемых результатов следует вернуться на предыдущие шаги схемы. К сожалению, ошибки могут быть допущены на любом шаге: может быть некорректно сформулирована первоначальная гипотеза, могут возникнуть проблемы со сбором необходимых данных и прочее. К этому нужно быть готовым. При возникновении такого рода проблем возвращатйтесь на предыдущие пункты и рассматривайте альтернативные варианты решения;
Для оценки адекватности полученных результатов необходимо привлекать экспертов в предметной области. Интерпретация модели, так же как и выдвижение гипотез, может и должно делаться экспертом, т.к. для этого нужно более глубокое понимание процесса, выходящее за пределы анализируемых данных. Кроме того, нужно воспользоваться и формальными способами оценки качества модели: тестировать построенные модели на различных выборках для оценки их обобщающих способностей, т.е. способности давать приемлемые результаты на данных, которые не предоставлялись системе при построении модели. Некоторые механизмы анализа могут "запоминать" предъявленные ей данные и на них демонстрировать прекрасные результаты, но при этом полностью терять способность к обобщению и на тестовых (из неизвестных системе ранее) данных выдавать очень плохие результаты. При формальной оценке можно отталкиваться от идеи, что если на тестовых данных модель дает приемлемые результаты значит она имеет право на жизнь.
Заключение
При получении приемлемых результатов нужно начать использование полученных моделей. Начало применения не является завершением Data Mining проекта. Работать над совершенствованием моделей нужно всегда, т.к. по прошествии времени обязательно наступит момент, когда опять придется проходить описанный цикл. К тому же, после получения первых удовлетворительных результатов, обычно встает вопрос о повышении точности.
Почивать на лаврах нельзя, необходимо периодически оценивать адекватность модели текущей ситуации, потому что даже самая удачная модель со временем перестает соответствовать действительности.