Примеры запросов к модели кластеризации последовательностей
К модели интеллектуального анализа данных можно создать два вида запросов: запросы содержимого, возвращающие подробные сведения об информации, содержащейся в модели, и прогнозирующие запросы, использующие закономерности, содержащиеся в модели, для прогнозирования на основе новых данных. Что касается модели кластеризации последовательностей, то запросы содержимого обычно возвращают дополнительную информацию об обнаруженных кластерах или о переходах в этих кластерах. Запрос также позволяет получить метаданные, описывающие модель.
Прогнозирующие запросы на модели кластеризации последовательностей обычно позволяют делать рекомендации, основанные либо на последовательностях и переходах, либо на не связанных с последовательностью атрибутах, включенных в модель, либо на сочетании связанных и не связанных с последовательностью атрибутов.
Этот раздел посвящен созданию запросов для моделей, основанных на алгоритме кластеризации последовательностей Майкрософт. Общие сведения о создании запросов см. в разделе Запросы интеллектуального анализа данных.
Запросы содержимого
Прогнозирующие запросы
Поиск сведений о модели кластеризации последовательностей
Для создания осмысленных запросов к содержимому модели интеллектуального анализа данных необходимо понимать структуру содержимого модели и знать, какие сведения содержатся в узле каждого типа. Дополнительные сведения см. в разделе Содержимое моделей интеллектуального анализа данных для моделей кластеризации последовательностей (службы Analysis Services — интеллектуальный анализ данных).
Образец запроса 1. Использование набора строк схемы интеллектуального анализа данных для возврата параметров моделиИспользуя запросы к набору строк схемы интеллектуального анализа данных, можно получать различную информацию о модели — в частности, метаданные модели, дату и время ее создания и последней обработки, имя структуры интеллектуального анализа данных, на которой основана данная модель, и имя столбца, использованного в качестве прогнозируемого атрибута.
Следующий запрос возвращает параметры, которые использовались для построения и обучения модели, [Sequence Clustering] . Эта модель создается в ходе занятия 5 учебника Basic Data Mining Tutorial.
MINING_PARAMETERS CLUSTER_COUNT=15,MINIMUM_SUPPORT=10,MAXIMUM_STATES=100,MAXIMUM_SEQUENCE_STATES=64
Следует заметить, что эта модель создавалась с использованием для параметра CLUSTER_COUNT значения по умолчанию, 10. При задании ненулевого числа кластеров для параметра CLUSTER_COUNT алгоритм рассматривает это число как указание приблизительного числа кластеров, которое нужно найти. Однако в процессе анализа алгоритм может обнаружить меньшее или большее количество кластеров. В данном случае алгоритм обнаружил, что обучающие данные лучше всего разделить на 15 кластеров. Таким образом, список значений параметров завершенной модели содержит число кластеров, найденное алгоритмом, а не значение, которое было передано при создании модели.
Как это отличается от случая, когда алгоритму позволяют определить наилучшее количество кластеров? В качестве эксперимента можно создать другую модель кластеризации на основе тех же данных, но задать для параметра CLUSTER_COUNT значение 0. Если это сделать, алгоритм обнаружит 32 кластера. Значит, используя для параметра CLUSTER_COUNT значение по умолчанию, 10, можно ограничить количество результатов.
Значение 10 используется по умолчанию, потому что снижение количества кластеров упрощает просмотр и понимание группирований данных для большинства пользователей. Однако все модели и все наборы данных разные. Можно поэкспериментировать с различным количеством кластеров, чтобы увидеть, какое значение параметра дает наиболее точную модель.
Образец запроса 2. Получение списка последовательностей для состоянияСодержимое модели интеллектуального анализа данных хранит последовательности, обнаруженные в обучающих данных, как первое состояние, сопряженное со списком всех связанных вторых состояний. Первое состояние используется как метка для последовательности, а связанные с ним вторые состояния называются переходами.
Например, следующий запрос возвращает полный список первых состояний модели до группирования последовательностей в кластеры. Этот список можно получить, вернув список последовательностей (NODE_TYPE = 13), родителем которых является корневой узел модели (PARENT_UNIQUE_NAME = 0). Применение ключевого слова FLATTENED позволяет облегчить чтение результатов.
Имена столбцов (PARENT_UNIQUE_NAME, Support и Probability) необходимо заключать в скобки, чтобы они отличались от одноименных зарезервированных ключевых слов.
NODE_UNIQUE_NAME Product 1 Мощность несущего множества последовательности Вероятность последовательности 1081327 Missing 0 ####### 1081327 Универсальная подставка для велосипеда 17 0,00111 1081327 Мойка велосипедная 64 0,00418 1081327 (строки с 4 по 36 пропущены) 1081327 Женские шорты Mountain 506 0,03307
Список последовательностей в модели всегда сортируется в алфавитном порядке по возрастанию. Порядок последовательностей важен, потому что по порядковому номеру последовательности можно найти связанные с ней переходы. Значение Missing всегда соответствует переходу 0.
Например, в результатах предыдущего запроса продукт «Женские шорты Mountain» имеет в модели номер последовательности 37. Эту информацию можно использовать для просмотра всех продуктов, которые когда-либо были куплены после продукта «Женские шорты Mountain».
Для этого сначала применяется ссылка на значение параметра NODE_UNIQUE_NAME, возвращенное в предыдущем запросе, для получения идентификатора узла, содержащего все последовательности для модели. Это значение передается запросу как идентификатор родительского узла, чтобы получить только переходы, включенные в этот узел, который содержит список всех последовательностей модели. Однако, если нужно увидеть список всех переходов для конкретного кластера, можно передать в него идентификатор узла кластера, чтобы увидеть только последовательности, связанные с данным кластером.
NODE_UNIQUE_NAME 1081365
Узел, представленный этим идентификатором, содержит список всех последовательностей, следующих за продуктом «Женские шорты Mountain», а также мощности их несущих множеств и вероятности.
t.Product2 t.P2 Support t.P2 Probability Missing 230,7419 0,456012 Classic Vest 8,16129 0,016129 Велосипедная шапочка 60,83871 0,120235 Half-Finger Gloves 30,41935 0,060117 Кофта с длинными рукавами и эмблемой 86,80645 0,171554 Racing Socks 28,93548 0,057185 Short-Sleeve Classic Jersey 60,09677 0,118768
Следует заметить, что мощность несущего множества для различных последовательностей, связанных с продуктом «Women's Mountain Shorts», в данной модели равна 506. Сумма мощностей множества значений для перехода также равна 506. Однако эти числа не целые, что кажется довольно странным, поскольку мощность множества интуитивно представляется просто как количество вариантов, содержащих каждый переход. Однако метод создания кластеров учитывает частичное членство. Поэтому вероятность каждого перехода в кластере должна взвешиваться с помощью вероятности принадлежности к данному конкретному кластеру.
Допустим, кластеров четыре. Конкретная последовательность с вероятностью 40 % принадлежит к кластеру 1, с вероятностью 30 % — к кластеру 2, с вероятностью 20 % — к кластеру 3 и с вероятностью 10 % — к кластеру 4. После того как алгоритм определил кластер, которому, скорее всего, принадлежит данный переход, он взвешивает вероятности внутри кластера по априорной вероятности кластера.
Образец запроса 3. Использование системных хранимых процедурПо образцам запросов видно, что информация, хранимая в модели, сложна, и иногда для получения нужной информации приходится строить несколько запросов. Однако средство просмотра кластеризации последовательностей (Майкрософт) предоставляет мощный набор средств, позволяющий просматривать информацию, содержащуюся в модели кластеризации последовательностей, в графическом представлении. Это средство просмотра можно также использовать для запросов и детализации модели.
В большинстве случаев информация, которая содержится в средстве просмотра кластеризации последовательностей (Майкрософт), создается посредством запросов к модели с помощью системных хранимых процедур служб Analysis Services. Эту информацию можно получить, создавая запросы расширений интеллектуального анализа данных к содержимому модели. Однако системные хранимые процедуры служб Analysis Services предоставляют более короткий и удобный путь для исследования и тестирования моделей.
Системные хранимые процедуры служат для внутренней обработки на сервере и на клиентах, предоставляемых компанией Майкрософт для взаимодействия с сервером служб Analysis Services. Поэтому компания Майкрософт оставляет за собой право в любое время изменить эти службы. Хотя их описание приводится в данном документе с информационными целями, их использование в рабочей среде не поддерживается. Для обеспечения стабильности и совместимости рабочей среды нужно всегда создавать собственные запросы с помощью расширений интеллектуального анализа данных.
В данном разделе приводятся некоторые образцы использования системных хранимых процедур для создания запросов к модели кластеризации последовательностей.
Профили кластеров и образцы вариантовВкладка «Профили кластеров» содержит список кластеров модели, размер каждого кластера и гистограмму, указывающую состояния, включенные в этот кластер. Для получения той же информации можно использовать в запросах две системные хранимые процедуры:
GetClusterProfile возвращает характеристики кластера и всю информацию, которую можно найти в таблице NODE_DISTRIBUTION для данного кластера.
GetNodeGraph возвращает узлы и ребра, которые можно использовать для создания математического представления кластеров в качестве диаграммы, подобной той, которая представлена на первой вкладке представления «Кластеризация последовательностей». Узлы представляют собой кластеры, а ребра — веса или интенсивность.
Далее приводится пример использования системной хранимой процедуры, GetClusterProfiles , для возврата всех кластеров модели с их профилями. Хранимая процедура исполняет ряд инструкций DMX, возвращающих полный набор профилей из модели. Однако для использования этой хранимой процедуры нужно знать адрес модели.
CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterProfiles('Sequence Clustering', 2147483647, 0)
Следующий пример демонстрирует получение профиля конкретного кластера, Cluster 12, с помощью системной хранимой процедуры GetNodeGraph , с передачей ей идентификатора кластера, который обычно совпадает с номером, содержащимся в имени кластера.
Если опустить идентификатор кластера, как показано в следующем запросе, процедура GetNodeGraph вернет упорядоченный, преобразованный в плоский формат список всех профилей кластеров:
Вкладка Профили кластеров также отображает гистограммы образцов вариантов модели. Эти образцы вариантов представляют собой идеализированные варианты для модели. Эти варианты не хранятся в модели в том же смысле, как хранятся в ней обучающие данные; для получения этих образцов вариантов нужно использовать специальные конструкции.
Характеристики кластера и сравнение кластеровВкладка Характеристики кластера содержит сводную информацию об основных атрибутах каждого кластера, ранжированную по вероятностям. Можно узнать, сколько вариантов принадлежит к этому кластеру и как выглядит распределение вариантов в этом кластере: у каждой характеристики есть несущее множество определенной мощности. Чтобы увидеть характеристики конкретного кластера, нужно знать его идентификатор.
В следующих примерах используется системная хранимая процедура, GetClusterCharacteristics , для возвращения всех характеристик кластера Cluster 12, оценка вероятности которых превышает заданное пороговое значение 0,0005.
Чтобы вернуть характеристики всех кластеров, нужно оставить значение идентификатора кластера пустым.
В следующем примере системная хранимая процедура GetClusterDiscrimination вызывается для сравнения характеристик кластеров Cluster 1 и Cluster 12.
Если нужно создать собственный DMX-запрос для сравнения двух кластеров или сравнения кластера с его дополнением, нужно сначала получить один набор характеристик, затем получить набор характеристик конкретного кластера, а затем сравнить два набора. Этот сценарий более сложен и обычно требует некоторой обработки на клиенте.
Переходы и состоянияВкладка Переходы состояния окна «Алгоритм кластеризации последовательностей (Майкрософт)» выполняет сложные запросы на серверной стороне для получения и сравнения статистических характеристик различных кластеров. Для воспроизведения этих результатов нужен более сложный запрос и некоторая обработка на клиенте.
Однако для получения вероятностей и состояний для последовательностей или индивидуальных переходов можно воспользоваться DMX-запросами, описанными в примере 2 данного раздела, Запросы содержимого.
Создание прогнозов с помощью модели
Прогнозирующие запросы к модели кластеризации последовательностей используют многие прогнозирующие функции, используемые и с другими моделями кластеризации. Кроме того, для выработки рекомендаций или предположений о следующих состояниях можно использовать специальную прогнозирующую функцию PredictSequence (расширения интеллектуального анализа данных).
Пример запроса 4. Прогнозирование следующего состояния или состоянийФункцию PredictSequence (расширения интеллектуального анализа данных) можно использовать для прогнозирования следующего наиболее вероятного состояния для данного значения. Можно также прогнозировать несколько следующих состояний. Например, в качестве списка рекомендаций можно вернуть список из трех товаров, которые данный клиент приобретет с наибольшей вероятностью.
Следующий образец запроса представляет собой одноэлементный прогнозирующий запрос, возвращающий пять наиболее вероятных прогнозов вместе с их вероятностями. Поскольку модель включает в себя вложенную таблицу, при прогнозах нужно использовать вложенную таблицу [v Assoc Seq Line Items] как ссылку на столбец. Кроме того, при передаче входных значений нужно сформировать соединение таблицы вариантов и столбцов вложенной таблицы, как показано во вложенной инструкции SELECT.
Expression.$Sequence Expression.Line Number Expression.Model 1 Велосипедная шапочка 2 Велосипедная шапочка 3 Sport-100 4 Кофта с длинными рукавами и эмблемой 5 Half-Finger Gloves 6 Универсальная подставка для велосипеда 7 Универсальная подставка для велосипеда
В результатах три столбца, хотя интуитивно ожидается один, поскольку запрос всегда возвращает столбец для таблицы вариантов. В данном случае результаты преобразованы в плоский формат; в противном случае запрос вернул бы один столбец, содержащий два столбца из вложенной таблицы.
Столбец $sequence — это столбец, возвращаемый по умолчанию функцией PredictSequence для упорядочивания результатов прогноза. Столбец [Line Number] нужен для сопоставления ключей последовательностей в модели, но ключи не выводятся.
Интересно заметить, что после последовательности «Универсальная подставка для велосипеда» двумя наиболее вероятными спрогнозированными последовательностями являются «Велосипедная шапочка» и «Велосипедная шапочка». Это не ошибка. В зависимости от представления данных покупателю и их группирования при обучении модели появление таких последовательностей вполне вероятно. Например, покупатель мог приобрести одну велосипедную шапочку (красную), а затем другую (синюю), или приобрести две шапочки одну за другой, если система продаж не позволяет задавать количество.
Значения в строках 6 и 7 представляют собой заполнители. При достижении конца цепочки возможных переходов результаты прогнозирования не прекращаются, но значение, переданное в качестве входного, прибавляется к результатам. Например, если увеличить число прогнозов до 20, в строках с 6 по 20 будет содержаться одно и то же значение, «Универсальная подставка для велосипеда».
Список функций
Все алгоритмы Microsoft поддерживают общий набор функций. Однако алгоритм кластеризации последовательностей Microsoft поддерживает дополнительные функции, список которых приведен в следующей таблице.