Примеры запросов к модели упрощенного алгоритма Байеса

Применимо к: SQL Server 2019 и более ранних версий Analysis Services Azure Analysis Services Fabric/Power BI Premium

Важно!

Интеллектуальный анализ данных не рекомендуется использовать в службах SQL Server 2017 Analysis Services, а в SQL Server 2022 Analysis Services его поддержка прекращена. Документация не обновляется для устаревших и неподдерживаемых функций. Дополнительные сведения см. в статье об обратной совместимости служб Analysis Services.

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

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

Получение метаданных модели с помощью расширений интеллектуального анализа данных

Получение сводки обучающих данных

Получение дополнительных сведений об атрибутах

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

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

Прогноз результатов с помощью одноэлементного запроса

Получение прогнозов со значениями вероятности и несущего множества

Прогнозирование связей

Поиск сведений о модели упрощенного алгоритма Байеса

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

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

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

SELECT MODEL_CATALOG, MODEL_NAME, DATE_CREATED, LAST_PROCESSED,  
SERVICE_NAME, PREDICTION_ENTITY, FILTER  
FROM $system.DMSCHEMA_MINING_MODELS  
WHERE MODEL_NAME = 'TM_NaiveBayes_Filtered'  

Образец результатов.

Строка Метаданные
MODEL_CATALOG AdventureWorks
MODEL_NAME TM_NaiveBayes_Filtered
DATE_CREATED 3/1/2008 19:15
LAST_PROCESSED 3/2/2008 20:00
SERVICE_NAME Microsoft_Naive_Bayes
PREDICTION_ENTITY Покупатель велосипеда, годовой доход
FILTER [Region] = 'Europe' OR [Region] = 'North America'

Модель, использованная в этом примере, основана на модели упрощенного алгоритма Байеса, созданной в занятии Basic Data Mining Tutorial, с некоторыми изменениями: в нее был добавлен второй прогнозируемый атрибут, и к обучающим данным применяется фильтр.

Образец запроса 2. Получение сводки данных для обучения

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

В этом запросе используется DMX-запрос содержимого для получения данных из узла (NODE_TYPE = 24). Поскольку статистические данные хранятся во вложенной таблице, используется ключевое слово FLATTENED, чтобы сделать результаты удобнее для чтения.

SELECT FLATTENED MODEL_NAME,  
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE, [SUPPORT], [PROBABILITY], VALUETYPE FROM NODE_DISTRIBUTION) AS t  
FROM TM_NaiveBayes.CONTENT  
WHERE NODE_TYPE = 26  

Примечание

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

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

MODEL_NAME T.ATTRIBUTE_NAME t.ATTRIBUTE_VALUE t.SUPPORT t.PROBABILITY t.VALUETYPE
TM_NaiveBayes Покупатель велосипеда Missing 0 0 1
TM_NaiveBayes Покупатель велосипеда 0 8869 0.507263784 4
TM_NaiveBayes Покупатель велосипеда 1 8615 0.492736216 4
TM_NaiveBayes пол; Missing 0 0 1
TM_NaiveBayes пол; F 8656 0.495081217 4
TM_NaiveBayes пол; M 8828 0.504918783 4

Эти результаты, в частности, содержат число обучающих вариантов для каждой дискретной величины (VALUETYPE = 4), а также вычисленную вероятность, скорректированную с поправкой на отсутствующие величины (VALUETYPE = 1).

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

Образец запроса 3. Получение дополнительных сведений об атрибутах

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

Следующий пример показывает, как получить из модели информацию о конкретном атрибуте, Region.

SELECT NODE_TYPE, NODE_CAPTION,   
NODE_PROBABILITY, NODE_SUPPORT, MSOLAP_NODE_SCORE  
FROM TM_NaiveBayes.CONTENT  
WHERE ATTRIBUTE_NAME = 'Region'  

Этот запрос возвращает два типа узлов: узел, представляющий входной атрибут (NODE_TYPE = 10), и узлы для каждого значения атрибута (NODE_TYPE = 11). Для идентификации узла используется его заголовок, а не имя, поскольку заголовок узла содержит как имя атрибута, так и значение атрибута.

NODE_TYPE NODE_CAPTION NODE_PROBABILITY NODE_SUPPORT MSOLAP_NODE_SCORE NODE_TYPE
10 Покупатель велосипедов —> регион 1 17484 84.51555875 10
11 Покупатель велосипедов -> Регион = Отсутствует 0 0 0 11
11 Покупатель велосипедов —> регион = Северная Америка 0.508236102 8886 0 11
11 Покупатель велосипедов -> Регион = Тихоокеанский регион 0.193891558 3390 0 11
11 Покупатель велосипедов -> Регион = Европа 0.29787234 5208 0 11

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

Следующий запрос возвращает оценки важности всех атрибутов модели:

SELECT NODE_CAPTION, MSOLAP_NODE_SCORE  
FROM TM_NaiveBayes.CONTENT  
WHERE NODE_TYPE = 10  
ORDER BY MSOLAP_NODE_SCORE DESC  

Образец результатов.

NODE_CAPTION MSOLAP_NODE_SCORE
Покупатель велосипеда -> Всего детей 181.3654836
Покупатель велосипедов -> Поездки расстояние 179.8419482
Покупатель велосипедов -> Английский образование 156.9841928
Покупатель велосипеда -> количество детей дома 111.8122599
Покупатель велосипедов —> регион 84.51555875
Покупатель велосипеда -> семейное положение 23.13297354
Покупатель велосипедов -> английский оккупации 2.832069191

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

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

Кроме написания собственных запросов к содержимому, можно использовать системные хранимые процедуры служб Analysis Services для исследования результатов. Для использования системной хранимой процедуры перед ее именем нужно поставить ключевое слово CALL:

CALL GetPredictableAttributes ('TM_NaiveBayes')  

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

ATTRIBUTE_NAME NODE_UNIQUE_NAME
Покупатель велосипеда 100000001

Примечание

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

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

Использование модели упрощенного алгоритма Байеса для создания прогнозов

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

Образец запроса 5. Прогноз результатов с помощью одноэлементного запроса

Следующий запрос использует одноэлементный запрос для получения новой величины и прогнозирования на основании данной модели вероятности приобретения велосипеда клиентом с этими характеристиками. Проще всего создавать одноэлементные запросы на модели регрессии с помощью диалогового окна Ввод одноэлементного запроса . Например, можно построить следующий DMX-запрос, выбрав модель TM_NaiveBayes , затем Одноэлементный запрос, а затем величины из раскрывающихся списков значений [Commute Distance] и Gender.

SELECT  
  Predict([TM_NaiveBayes].[Bike Buyer])  
FROM  
  [TM_NaiveBayes]  
NATURAL PREDICTION JOIN  
(SELECT '5-10 Miles' AS [Commute Distance],  
  'F' AS [Gender]) AS t  

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

Expression
0

Прогнозирующая функция вернет наиболее вероятное значение (в данном случае 0; это означает, что клиент такого типа вряд ли приобретет велосипед).

Образец запроса 6. Получение прогнозов со значениями вероятности и несущего множества

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

SELECT  
  Predict([TM_NaiveBayes].[Bike Buyer]),  
  PredictHistogram([TM_NaiveBayes].[Bike Buyer])  
FROM  
  [TM_NaiveBayes]  
NATURAL PREDICTION JOIN  
(SELECT '5-10 Miles' AS [Commute Distance],  
  'F' AS [Gender]) AS t  

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

Покупатель велосипеда $SUPPORT $PROBABILITY $ADJUSTEDPROBABILITY $VARIANCE $STDEV
0 10161.5714 0.581192599 0.010530981 0 0
1 7321.428768 0.418750215 0.008945684 0 0
0.999828444 5.72E-05 5.72E-05 0 0

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

Образец запроса 7. Прогноз взаимосвязей

Упрощенный алгоритм Байеса (Майкрософт) можно использовать для анализа взаимосвязей, если структура интеллектуального анализа данных содержит вложенную таблицу с прогнозируемым атрибутом в качестве ключа. Например, можно создать упрощенную модель Байеса с помощью структуры интеллектуального анализа данных, созданной на занятии 3. Создание сценария рыночной корзины (учебник по промежуточному интеллектуальному анализу данных) учебника по интеллектуальному анализу данных. Модель, использованная в этом примере, была изменена: в ее таблицу вариантов добавлена информация о доходе и географическом положении клиента.

Следующий пример запроса показывает одноэлементный запрос, предсказывающий продукты, связанные с покупкой данного продукта, 'Road Tire Tube'. Эту информацию можно использовать, чтобы рекомендовать продукты определенным типам покупателей.

SELECT   PredictAssociation([Association].[v Assoc Seq Line Items])  
FROM [Association_NB]  
NATURAL PREDICTION JOIN  
(SELECT 'High' AS [Income Group],  
  'Europe' AS [Region],  
  (SELECT 'Road Tire Tube' AS [Model])   
AS [v Assoc Seq Line Items])   
AS t  

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

Моделирование
Женские шорты Mountain
Фляга для воды
Touring-3000
Touring-2000
Touring-1000

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

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

прогнозирующую функцию Использование
IsDescendant (расширения интеллектуального анализа данных) Определяет, является ли узел дочерним для другого узла модели.
Predict (расширения интеллектуального анализа данных) Возвращает прогнозируемое значение или набор значений для указанного столбца.
PredictAdjustedProbability (расширения интеллектуального анализа данных) Возвращает взвешенную вероятность.
PredictAssociation (расширения интеллектуального анализа данных) Прогнозирует вхождение в ассоциативном наборе данных.
PredictNodeId (расширения интеллектуального анализа данных) Возвращает параметр Node_ID для каждого случая.
PredictProbability (расширения интеллектуального анализа данных) Возвращает вероятность для прогнозируемого значения.
PredictSupport (расширения интеллектуального анализа данных) Возвращает опорное значение для указанного состояния.

Сведения о синтаксисе конкретных функций см. в справочнике по функциям расширений интеллектуального анализа данных.

См. также:

Технический справочник по упрощенному алгоритму Байеса (Майкрософт)
Microsoft Naive Bayes Algorithm
Содержимое моделей интеллектуального анализа данных для моделей упрощенного алгоритма Байеса (службы Analysis Services — интеллектуальный анализ данных)