Поделиться через


Примеры запросов модели кластеризации последовательностей

При создании запроса к модели интеллектуального анализа данных можно создать запрос содержимого, который содержит сведения о данных, хранящихся в модели, или создать прогнозирующий запрос, который использует шаблоны в модели для прогнозирования на основе новых данных, предоставляемых вами. Для модели кластеризации последовательностей запросы содержимого обычно предоставляют дополнительные сведения о найденных кластерах или переходы в этих кластерах. Вы также можете получить метаданные о модели с помощью запроса.

Прогнозирующие запросы к модели кластеризации последовательностей обычно делают рекомендации на основе последовательностей и переходов, атрибутов, не относящихся к последовательности, которые были включены в модель, или сочетания атрибутов последовательности и не последовательности.

В этом разделе объясняется, как создавать запросы для моделей, основанных на алгоритме кластеризации последовательностей Майкрософт. Общие сведения о создании запросов см. в разделе "Запросы интеллектуального анализа данных".

Запросы содержимого

Использование набора строк схемы интеллектуального анализа данных для возврата параметров модели

Получение списка последовательностей для состояния

Использование системных хранимых процедур

Прогнозирующие запросы

Прогнозирование следующего состояния или состояний

Поиск сведений о модели кластеризации последовательностей

Чтобы создать значимые запросы на содержимое модели интеллектуального анализа данных, необходимо понять структуру содержимого модели и типы узлов, которые хранят информацию. Дополнительные сведения см. в разделе "Содержимое модели интеллектуального анализа данных" для моделей кластеризации последовательностей (службы Analysis Services — интеллектуальный анализ данных).

Пример запроса 1. Использование набора строк схемы интеллектуального анализа данных для возврата параметров модели

Запросив набор строк схемы интеллектуального анализа данных, можно найти различные типы сведений о модели, включая основные метаданные, дату и время создания и последней обработки модели, имя структуры интеллектуального анализа данных, на основе которой создана модель, и столбец, используемый в качестве прогнозируемого атрибута.

Следующий запрос возвращает параметры, которые использовались для сборки и обучения модели [Sequence Clustering]. Эту модель можно создать на занятии 5 учебника по интеллектуальному анализу данных.

SELECT MINING_PARAMETERS   
from $system.DMSCHEMA_MINING_MODELS  
WHERE MODEL_NAME = 'Sequence Clustering'  

Пример результатов:

ПАРАМЕТРЫ_ДОБЫЧИ
CLUSTER_COUNT=15,MINIMUM_SUPPORT=10,MAXIMUM_STATES=100,MAXIMUM_SEQUENCE_STATES=64

Обратите внимание, что эта модель была создана с помощью значения по умолчанию 10 для CLUSTER_COUNT. При указании ненулевого числа кластеров для CLUSTER_COUNT алгоритм обрабатывает это число как указание на приблизительное количество кластеров для поиска. Однако в процессе анализа алгоритм может найти больше или меньше кластеров. В этом случае алгоритм обнаружил, что 15 кластеров лучше всего соответствуют данным обучения. Таким образом, список значений параметров для завершенной модели сообщает количество кластеров, определенных алгоритмом, а не значение, переданное при создании модели.

Чем это поведение отличается от предоставления алгоритму возможности определить оптимальное количество кластеров? В качестве эксперимента можно создать другую модель кластеризации, которая использует эти же данные, но присвойте CLUSTER_COUNT значение 0. При этом алгоритм обнаруживает 32 кластера. Таким образом, используя значение по умолчанию 10 для CLUSTER_COUNT, вы ограничиваете количество результатов.

Значение 10 используется по умолчанию, так как уменьшение количества кластеров упрощает для большинства пользователей просмотр и понимание групп в данных. Однако каждая модель и набор данных отличаются. Вы можете поэкспериментировать с разными числами кластеров, чтобы увидеть, какое значение параметра дает наиболее точную модель.

Пример запроса 2. Получение списка последовательностей для состояния

Содержимое модели интеллектуального анализа данных хранит последовательности, найденные в обучающих данных как первое состояние, связанное со списком всех соответствующих вторых состояний. Первое состояние используется в качестве метки для последовательности, а связанные с ними состояния называются переходами.

Например, следующий запрос возвращает полный список первых состояний в модели, прежде чем последовательности группируются в кластеры. Этот список можно получить, возвращая список последовательностей (NODE_TYPE = 13), имеющих корневой узел модели как родительский (PARENT_UNIQUE_NAME = 0). Ключевое слово FLATTENED упрощает чтение результатов.

Замечание

Имя столбцов, [PARENT_UNIQUE_NAME], [поддержка] и [вероятность], должны быть заключены в квадратные скобки, чтобы отличить их от зарезервированных ключевых слов того же имени.

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  

Частичные результаты:

УЗЕЛ_УНИКАЛЬНОЕ_ИМЯ Продукт 1 Поддержка последовательности Вероятность последовательности
1081327 Отсутствует 0 #######
1081327 All-Purpose стойка для велосипеда 17 0.00111
1081327 Мойка велосипедов 64 0.00418
1081327 (строки 4-36 опущены)
1081327 Женские горные шорты 506 0.03307

Список последовательностей в модели всегда отсортирован в алфавитном порядке по возрастанию. Порядок последовательностей важен, так как можно найти связанные переходы, просмотрев порядковый номер последовательности. Значение Missing всегда равно переходу 0.

Например, в предыдущих результатах продукт "Женские горные шорты" является порядковым номером 37 в модели. Эту информацию можно использовать для просмотра всех продуктов, которые когда-либо были приобретены после "Женских горных шорт".

Для этого сначала вы ссылаетесь на значение, возвращаемое для NODE_UNIQUE_NAME в предыдущем запросе, чтобы получить идентификатор узла, содержащего все последовательности для модели. Это значение передается запросу в качестве идентификатора родительского узла, чтобы получить только переходы, включенные в этот узел, который может содержать список последовательностей al для модели. Однако если вы хотите просмотреть список переходов для определенного кластера, можно передать идентификатор узла кластера и просмотреть только последовательности, связанные с этим кластером.

SELECT NODE_UNIQUE_NAME  
FROM [Sequence Clustering].CONTENT  
WHERE NODE_DESCRIPTION = 'Transition row for sequence state 37'  
AND [PARENT_UNIQUE_NAME] = '1081327'  

Пример результатов:

УЗЕЛ_УНИКАЛЬНОЕ_ИМЯ
1081365

Узел, представленный этим идентификатором, содержит список последовательностей, которые следуют за продуктом "Женские горные шорты" вместе со значениями поддержки и вероятности.

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.Продукт2 Поддержка t.P2 Вероятность t.P2
Отсутствует 230.7419 0.456012
Классический жилет 8.16129 0.016129
Велосипедная крышка 60.83871 0.120235
перчатки Half-Finger 30.41935 0.060117
Long-Sleeve Логотип Джерси 86.80645 0.171554
Носки для гонок 28.93548 0.057185
Short-Sleeve Классический Джерси 60.09677 0.118768

Обратите внимание, что поддержка различных последовательностей, связанных с женскими горными шортами, составляет 506 в рамках модели. Значения поддержки для переходов в сумме составляют 506. Однако числа не являются целыми, что кажется чуть странно, если вы ожидаете, что суппорт будет просто представлять количество случаев, содержащих каждый переход. Однако, поскольку метод создания кластеров вычисляет частичное членство, вероятность любого перехода в кластере должна быть взвешна его вероятностью принадлежности к конкретному кластеру.

Например, если существует четыре кластера, определенная последовательность может иметь 40% вероятность принадлежности к кластеру 1, 30% вероятность принадлежности к кластеру 2, 20% вероятность принадлежности к кластеру 3 и 10% вероятность принадлежности к кластеру 4. После того как алгоритм определяет кластер, к которому, скорее всего, принадлежит переход, он взвешивает вероятности в кластере по предыдущей вероятности.

Пример запроса 3. Использование системных хранимых процедур

В этих примерах запросов можно увидеть, что сведения, хранящиеся в модели, являются сложными, и вам может потребоваться создать несколько запросов, чтобы получить необходимые сведения. Однако средство просмотра кластеризации последовательностей Майкрософт предоставляет мощный набор средств для графического просмотра сведений, содержащихся в модели кластеризации последовательностей, и вы также можете использовать средство просмотра для запроса и детализации модели.

В большинстве случаев сведения, представленные в средстве просмотра кластеризации последовательностей Майкрософт, создаются с помощью системных хранимых процедур служб Analysis Services для запроса модели. Вы можете создавать запросы расширений для интеллектуального анализа данных (DMX) к содержимому модели, чтобы получить те же самые сведения, но системные хранимые процедуры Analysis Services предоставляют удобный способ при изучении или тестировании моделей.

Замечание

Системные хранимые процедуры используются для внутренней обработки сервером и клиентами, которые корпорация Майкрософт предоставляет для взаимодействия с сервером Служб Analysis Services. Поэтому корпорация Майкрософт в любое время оставляет за собой право изменять их. Хотя они описаны здесь для удобства, мы не поддерживаем их использование в рабочей среде. Чтобы обеспечить стабильность и совместимость в рабочей среде, всегда следует создавать собственные запросы с помощью dmX.

В этом разделе приведены некоторые примеры использования системных хранимых процедур для создания запросов к модели кластеризации последовательностей:

Профили кластера и примеры вариантов

На вкладке "Профили кластера" отображается список кластеров в модели, размер каждого кластера и гистограмма, указывающая состояния, включенные в кластер. Существует две системные хранимые процедуры, которые можно использовать в запросах для получения аналогичных сведений:

  • GetClusterProfile возвращает характеристики кластера со всеми сведениями, найденными в таблице NODE_DISTRIBUTION для кластера.

  • GetNodeGraph возвращает узлы и края, которые можно использовать для создания математического графа представления кластеров, соответствующего тому, что вы видите на первой вкладке представления кластеризации последовательностей. Узлы являются кластерами, а края представляют вес или силу.

В следующем примере показано, как использовать системную хранимую процедуру, GetClusterProfilesчтобы вернуть все кластеры в модели с соответствующими профилями. Эта хранимая процедура выполняет ряд инструкций DMX, возвращающих полный набор профилей в модели. Однако для использования этой хранимой процедуры необходимо знать адрес модели.

CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterProfiles('Sequence Clustering', 2147483647, 0)

В следующем примере показано, как получить профиль для определенного кластера, кластера 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 <model>. SAMPLE_CASES (DMX).

Характеристики кластера и дискриминация кластеров

На вкладке "Характеристики кластера " перечислены основные атрибуты каждого кластера, ранжированные по вероятности. Вы можете узнать, сколько случаев принадлежит кластеру и каково распределение вариантов в кластере: каждая характеристика имеет определенную поддержку. Чтобы просмотреть характеристики конкретного кластера, необходимо знать идентификатор кластера.

В следующих примерах используется системная хранимая процедура GetClusterCharacteristics, чтобы вернуть все характеристики кластера 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 для сравнения характеристик кластера 1 и кластера 12.

CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterDiscrimination('Sequence Clustering','1','12',0.0005,true)  

Если вы хотите написать собственный запрос в dmX для сравнения двух кластеров или сравнить кластер с его дополнением, сначала необходимо получить один набор характеристик, а затем получить характеристики для конкретного кластера, который вы хотите, и сравнить два набора. Этот сценарий является более сложным и обычно требует некоторых клиентских обработки.

Состояния и переходы

Вкладка "Переходы состояния " кластера последовательности Майкрософт выполняет сложные запросы на серверной части для получения и сравнения статистики для разных кластеров. Для воспроизведения этих результатов требуется более сложный запрос и некоторая обработка клиента.

Однако можно использовать DMX запросы, описанные в Примере 2 раздела Запросы содержимого, для получения вероятностей и состояний для последовательностей или индивидуальных переходов.

Использование модели для прогнозирования

Запросы прогнозирования для модели кластеризации последовательностей могут использовать многие функции прогнозирования, используемые с другими моделями кластеризации. Кроме того, можно использовать специальную функцию прогнозирования , PredictSequence (DMX) для создания рекомендаций или прогнозирования следующих состояний.

Пример запроса 4. Прогнозирование следующего состояния или состояний

Вы можете использовать функцию PredictSequence (DMX) для прогнозирования следующего наиболее вероятного состояния на основе значений. Можно также предсказать несколько следующих состояний: например, можно вернуть список из трех лучших продуктов, которые клиент, скорее всего, приобрести, чтобы представить список рекомендаций.

Следующий пример запроса — это однотонный прогнозирующий запрос, который возвращает первые пять прогнозов вместе с их вероятностью. Так как модель включает вложенную таблицу, необходимо использовать вложенную таблицу в [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.Model
1 Велосипедная крышка
2 Велосипедная крышка
3 Спорт-100
4 логотип Long-Sleeve Джерси
5 перчатки Half-Finger
6 All-Purpose стойка для велосипеда
7 All-Purpose стойка для велосипеда

В результатах есть три столбца, даже если вы можете ожидать только один столбец, так как запрос всегда возвращает столбец для таблицы вариантов. Здесь результаты уплощены; в противном случае запрос вернет один столбец, содержащий два вложенных столбца таблицы.

Столбец $sequence — это столбец, возвращаемый по умолчанию функцией PredictSequence для упорядочивания результатов прогнозирования. Столбец [Line Number] необходим для сопоставления ключей последовательности в модели, но ключи не отображаются.

Интересно, что верхние прогнозируемые последовательности после All-Purpose велосипедной стойки - это велосипедная кепка и велосипедная кепка. Это не ошибка. В зависимости от того, как данные представлены клиенту и как они группируются при обучении модели, очень возможно иметь последовательности такого рода. Например, клиент может приобрести велосипедную крышку (красный), а затем еще одну велоспортную крышку (синий) или приобрести два подряд, если не было способа указать количество.

Значения в строках 6 и 7 являются заполнителями. Когда вы достигнете конца цепочки возможных переходов, а не завершая результаты прогнозирования, значение, переданное в качестве входных данных, добавляется в результаты. Например, если вы увеличили число прогнозов до 20, значения строк 6–20 будут одинаковыми, All-Purpose велосипедная стойка.

Список функций

Все алгоритмы Майкрософт поддерживают общий набор функций. Однако алгоритм кластеризации последовательностей Майкрософт поддерживает дополнительные функции, перечисленные в следующей таблице.

Функция прогнозирования Использование
Кластер (DMX) Возвращает кластер, который с наибольшей вероятностью будет содержать входной случай.
ClusterDistance (DMX) Возвращает расстояние входного регистра от указанного кластера или, если кластер не указан, расстояние входного регистра от наиболее вероятного кластера.

Эту функцию можно использовать с любой моделью кластеризации (EM, K-Средний и т. д.), но результаты отличаются в зависимости от алгоритма.
ClusterProbability (DMX) Возвращает вероятность того, что входной случай принадлежит указанному кластеру.
IsInNode (DMX) Указывает, содержит ли указанный узел текущий случай.
PredictAdjustedProbability (DMX) Возвращает скорректированную вероятность указанного состояния.
PredictAssociation (DMX) Предсказывает ассоциативное участие.
PredictCaseLikelihood (DMX) Возвращает вероятность того, что входной случай будет соответствовать существующей модели.
PredictHistogram (DMX) Возвращает таблицу, представляющую гистограмму для прогнозирования заданного столбца.
PredictNodeId (DMX) Возвращает Node_ID узла, к которому классифицируется случай.
PredictProbability (DMX) Возвращает вероятность для указанного состояния.
PredictSequence (DMX) Прогнозирует будущие значения последовательности для указанного набора данных последовательности.
PredictStdev (DMX) Возвращает прогнозируемое стандартное отклонение для указанного столбца.
PredictSupport (DMX) Возвращает значение поддержки для указанного состояния.
PredictVariance (DMX) Возвращает дисперсию указанного столбца.

Список функций, которые являются общими для всех алгоритмов Майкрософт, см. в разделе "Общие функции прогнозирования" (DMX). Сведения о синтаксисе конкретных функций см. в справочнике по расширению интеллектуального анализа данных (DMX).

См. также

Запросы интеллектуального анализа данных
Технический справочник по алгоритму кластеризации последовательностей Майкрософт
Алгоритм кластеризации последовательностей Майкрософт
Содержимое модели интеллектуального анализа данных для моделей кластеризации последовательностей (службы Analysis Services — интеллектуальный анализ данных)