Запросы к модели кластеризации последовательностей (службы Analysis Services — интеллектуальный анализ данных)
К модели интеллектуального анализа данных можно создать два вида запросов: запросы содержимого, возвращающие подробные сведения об информации, содержащейся в модели, и прогнозирующие запросы, использующие закономерности, содержащиеся в модели, для прогнозирования на основе новых данных. Что касается модели кластеризации последовательностей, то запросы содержимого обычно возвращают дополнительную информацию об обнаруженных кластерах или о переходах в этих кластерах. Запрос также позволяет получить метаданные, описывающие модель.
Прогнозирующие запросы на модели кластеризации последовательностей обычно позволяют делать рекомендации, основанные либо на последовательностях и переходах, либо на не связанных с последовательностью атрибутах, включенных в модель, либо на сочетании связанных и не связанных с последовательностью атрибутов.
Этот раздел посвящен созданию запросов для моделей, основанных на алгоритме кластеризации последовательностей Майкрософт. Общие сведения о создании запросов см. в разделе Запрос моделей интеллектуального анализа данных (службы Analysis Services — интеллектуальный анализ данных).
Запросы содержимого
Использование набора строк схемы интеллектуального анализа данных для определения параметров модели
Получение списка последовательностей для состояния
Запрос к модели с помощью системных хранимых процедур
Профили кластеров и образцы вариантов
Характеристики кластера и сравнение кластеров
Прогнозирующие запросы
Прогноз следующего состояния или состояний4
Поиск сведений о модели кластеризации последовательностей
Для создания осмысленных запросов к содержимому модели интеллектуального анализа данных необходимо понимать структуру содержимого модели и знать, какие сведения содержатся в узле каждого типа. Дополнительные сведения см. в разделе Содержимое моделей интеллектуального анализа данных для моделей кластеризации последовательностей (службы Analysis Services — интеллектуальный анализ данных).
В начало
Образец запроса 1. Использование набора строк схемы интеллектуального анализа данных для определения параметров модели
Используя запросы к набору строк схемы интеллектуального анализа данных, можно получать различную информацию о модели — в частности, метаданные модели, дату и время ее создания и последней обработки, имя структуры интеллектуального анализа данных, на которой основана данная модель, и имя столбца, использованного в качестве прогнозируемого атрибута.
Следующий запрос возвращает параметры, которые использовались для построения и обучения модели, [Sequence Clustering]. Эта модель создается в ходе занятия 5 учебника Учебник по основам интеллектуального анализа данных.
SELECT MINING_PARAMETERS
from $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = 'Sequence Clustering'
Образец результатов:
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) необходимо заключать в скобки, чтобы они отличались от одноименных зарезервированных ключевых слов. |
SELECT FLATTENED NODE_UNIQUE_NAME,
(SELECT ATTRIBUTE_VALUE AS [Product 1],
[Support] AS [Sequence Support],
[Probability] AS [Sequence Probability]
FROM NODE_DISTRIBUTION) AS t
FROM [Sequence Clustering].CONTENT
WHERE NODE_TYPE = 13
AND [PARENT_UNIQUE_NAME] = 0
Частичные результаты:
NODE_UNIQUE_NAME |
Product 1 |
Мощность несущего множества последовательности |
Вероятность последовательности |
---|---|---|---|
1081327 |
Отсутствует |
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, возвращенное в предыдущем запросе, для получения идентификатора узла, содержащего все последовательности для модели. Это значение передается запросу как идентификатор родительского узла, чтобы получить только переходы, включенные в этот узел, который содержит список всех последовательностей модели. Однако, если нужно увидеть список всех переходов для конкретного кластера, можно передать в него идентификатор узла кластера, чтобы увидеть только последовательности, связанные с данным кластером.
SELECT NODE_UNIQUE_NAME
FROM [Sequence Clustering].CONTENT
WHERE NODE_DESCRIPTION = 'Transition row for sequence state 37'
AND [PARENT_UNIQUE_NAME] = '1081327'
Образец результатов:
NODE_UNIQUE_NAME |
---|
1081365 |
Узел, представленный этим идентификатором, содержит список всех последовательностей, следующих за продуктом «Женские шорты Mountain», а также мощности их несущих множеств и вероятности.
SELECT FLATTENED
(SELECT ATTRIBUTE_VALUE AS Product2,
[Support] AS [P2 Support],
[Probability] AS [P2 Probability]
FROM NODE_DISTRIBUTION) AS t
FROM [Sequence Clustering].CONTENT
WHERE NODE_UNIQUE_NAME = '1081365'
Образец результатов:
t.Product2 |
t.P2 Support |
t.P2 Probability |
---|---|---|
Missing |
230.7419 |
0.456012 |
Classic Vest |
8.16129 |
0.016129 |
Cycling Cap |
60.83871 |
0.120235 |
Half-Finger Gloves |
30.41935 |
0.060117 |
Long-Sleeve Logo Jersey |
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, с передачей ей идентификатора кластера, который обычно совпадает с номером, содержащимся в имени кластера.
CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetNodeGraph('Sequence Clustering','12',0)
Если опустить идентификатор кластера, как показано в следующем запросе, процедура GetNodeGraph вернет упорядоченный, преобразованный в плоский формат список всех профилей кластеров:
CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetNodeGraph('Sequence Clustering','',0)
Вкладка Профили кластеров также отображает гистограммы образцов вариантов модели. Эти образцы вариантов представляют собой идеализированные варианты для модели. Эти варианты не хранятся в модели в том же смысле, как хранятся в ней обучающие данные; для получения этих образцов вариантов нужно использовать специальные конструкции.
SELECT * FROM [Sequence Clustering].SAMPLE_CASES WHERE IsInNode('12')
Дополнительные сведения см. в разделе SELECT FROM <модель>.SAMPLE_CASES (расширения интеллектуального анализа данных).
В начало
Характеристики кластера и сравнение кластеров
Вкладка Характеристики кластера содержит сводную информацию об основных атрибутах каждого кластера, ранжированную по вероятностям. Можно узнать, сколько вариантов принадлежит к этому кластеру и как выглядит распределение вариантов в этом кластере: У каждой характеристики есть несущее множество определенной мощности. Чтобы увидеть характеристики конкретного кластера, нужно знать его идентификатор.
В следующих примерах используется системная хранимая процедура, GetClusterCharacteristics, для возвращения всех характеристик кластера Cluster 12, оценка вероятности которых превышает заданное пороговое значение 0,0005.
CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterCharacteristics('Sequence Clustering','12',0.0005)
Чтобы вернуть характеристики всех кластеров, нужно оставить значение идентификатора кластера пустым.
CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterCharacteristics('Sequence Clustering','',0.0005)
В следующем примере системная хранимая процедура GetClusterDiscrimination вызывается для сравнения характеристик кластеров Cluster 1 и Cluster 12.
CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterDiscrimination('Sequence Clustering','1','12',0.0005,true)
Если нужно создать собственный DMX-запрос для сравнения двух кластеров или сравнения кластера с его дополнением, нужно сначала получить один набор характеристик, затем получить набор характеристик конкретного кластера, а затем сравнить два набора. Этот сценарий более сложен и обычно требует некоторой обработки на клиенте.
Переходы и состояния
Вкладка Переходы состояния окна «Алгоритм кластеризации последовательностей (Майкрософт)» выполняет сложные запросы на серверной стороне для получения и сравнения статистических характеристик различных кластеров. Для воспроизведения этих результатов нужен более сложный запрос и некоторая обработка на клиенте.
Однако для получения вероятностей и состояний для последовательностей или индивидуальных переходов можно воспользоваться DMX-запросами, описанными в примере 2.
В начало
Прогнозирующие запросы к модели кластеризации последовательностей
Прогнозирующие запросы к модели кластеризации последовательностей используют многие прогнозирующие функции, используемые и с другими моделями кластеризации. Кроме того, для выработки рекомендаций или предположений о следующих состояниях можно использовать специальную прогнозирующую функцию, PredictSequence.
В начало
Образец запроса 4. Прогноз следующего состояния или состояний
Функцию PredictSequence можно использовать для прогнозирования следующего наиболее вероятного состояния для данного значения. Можно также прогнозировать несколько следующих состояний: например в качестве списка рекомендаций можно вернуть список из трех товаров, которые данный покупатель приобретет с наибольшей вероятностью.
Следующий образец запроса представляет собой одноэлементный прогнозирующий запрос, возвращающий пять наиболее вероятных прогнозов вместе с их вероятностями. Поскольку модель включает в себя вложенную таблицу, при прогнозах нужно использовать вложенную таблицу [v Assoc Seq Line Items] как ссылку на столбец. Кроме того, при передаче входных значений нужно сформировать соединение таблицы вариантов и столбцов вложенной таблицы, как показано во вложенной инструкции SELECT.
SELECT FLATTENED PredictSequence([v Assoc Seq Line Items], 7)
FROM [Sequence Clustering]
NATURAL PREDICTION JOIN
(SELECT (SELECT 1 as [Line Number],
'All-Purpose Bike Stand' as [Model]) AS [v Assoc Seq Line Items])
AS t
Образец результатов:
Expression.$Sequence |
Expression.Line Number |
Expression.Model |
---|---|---|
1 |
|
Cycling Cap |
2 |
|
Cycling Cap |
3 |
|
Sport-100 |
4 |
|
Long-Sleeve logo Jersey |
5 |
|
Half-Finger Gloves |
6 |
|
All-Purpose Bike Stand |
7 |
|
All-Purpose Bike Stand |
В результатах три столбца, хотя интуитивно ожидается один, поскольку запрос всегда возвращает столбец для таблицы вариантов. В данном случае результаты преобразованы в плоский формат; в противном случае запрос вернул бы один столбец, содержащий два столбца из вложенной таблицы.
Столбец $sequence — это столбец, возвращаемый по умолчанию функцией PredictSequence для упорядочивания результатов прогноза. Столбец [Line Number] нужен для сопоставления ключей последовательностей в модели, но ключи не выводятся.
Интересно заметить, что после последовательности «Универсальная подставка для велосипеда» двумя наиболее вероятными спрогнозированными последовательностями являются «Велосипедная шапочка» и «Велосипедная шапочка». Это не ошибка. В зависимости от представления данных покупателю и их группирования при обучении модели появление таких последовательностей вполне вероятно. Например, покупатель мог приобрести одну велосипедную шапочку (красную), а затем другую (синюю), или приобрести две шапочки одну за другой, если система продаж не позволяет задавать количество.
Значения в строках 6 и 7 представляют собой местозаполнители. При достижении конца цепочки возможных переходов результаты прогнозирования не прекращаются, но значение, переданное в качестве входного, прибавляется к результатам. Например, если увеличить число прогнозов до 20, в строках с 6 по 20 будет содержаться одно и то же значение, «Универсальная подставка для велосипеда».
В начало
Список функций
Все алгоритмы Майкрософт поддерживают общий набор функций. Однако алгоритм кластеризации последовательностей (Майкрософт) поддерживает дополнительные функции, список которых приведен в следующей таблице.
Список функций, общих для всех алгоритмов Майкрософт, см. в разделе Сопоставление функций с типами запросов (расширения интеллектуального анализа данных). Синтаксис специальных функций см. в разделе Справочник по функциям расширений интеллектуального анализа данных.
Журнал изменений
Обновленное содержимое |
---|
Добавлены ссылки, упрощающие просмотр образцов запросов. |
Исправлена ошибка в возвращаемых данных для примера 2. |
См. также