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

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

Важно!

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

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

В этом разделе объясняется, как создавать запросы для моделей, основанных на алгоритме деревьев принятия решений (Майкрософт).

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

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

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

Получение поддеревьев из модели

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

Возврат прогнозов и вероятностей

Прогноз взаимосвязей на основе модели дерева принятия решений

Получение формулы регрессии из модели дерева принятия решений

Поиск сведений о модели дерева принятия решений

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

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

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

select MINING_PARAMETERS   
from $system.DMSCHEMA_MINING_MODELS  
WHERE MODEL_NAME = 'TM_Decision Tree'  

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

MINING_PARAMETERS

COMPLEXITY_PENALTY=0.5, MAXIMUM_INPUT_ATTRIBUTES=255,MAXIMUM_OUTPUT_ATTRIBUTES=255,MINIMUM_SUPPORT=10,SCORE_METHOD=4,SPLIT_METHOD=3,FORCE_REGRESSOR=

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

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

Этот запрос возвращает все узлы, имеющие тип 2; то есть узлы верхнего уровня деревьев, представляющих определенные прогнозируемые атрибуты.

Примечание

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

SELECT MODEL_NAME, NODE_NAME, NODE_CAPTION,   
NODE_SUPPORT, [CHILDREN_CARDINALITY]  
FROM TM_DecisionTrees.CONTENT  
WHERE NODE_TYPE = 2  

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

MODEL_NAME NODE_NAME NODE_CAPTION NODE_SUPPORT CHILDREN_CARDINALITY
TM_DecisionTree 000000001 Все 12939 5

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

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

Примечание

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

SELECT FLATTENED NODE_NAME, NODE_CAPTION,  
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE, [SUPPORT]  
FROM NODE_DISTRIBUTION) AS t  
FROM TM_DecisionTree.CONTENT  
WHERE [PARENT_UNIQUE_NAME] = '000000001'  

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

NODE_NAME NODE_CAPTION T.ATTRIBUTE_NAME T.ATTRIBUTE_VALUE Псевдоним
00000000100 Number Cars Owned = 0 Покупатель велосипеда Missing 0
00000000100 Number Cars Owned = 0 Покупатель велосипеда 0 1067.
00000000100 Number Cars Owned = 0 Покупатель велосипеда 1 1875
00000000101 Число автомобилей во владении = 3 Покупатель велосипеда Missing 0
00000000101 Число автомобилей во владении = 3 Покупатель велосипеда 0 678
00000000101 Число автомобилей во владении = 3 Покупатель велосипеда 1 473

Исходя из этих результатов можно определить, что среди клиентов, купивших велосипед ([Bike Buyer] = 1), 1067 клиентов не имели автомобиля, а 473 клиента имели по 3 автомобиля.

Пример запроса 3. Получение поддеревьев из модели

Допустим, что необходимо узнать больше о клиентах, купивших велосипед. Дополнительные сведения о любом из вложенных деревьев можно просмотреть с помощью функции IsDescendant (DMX) в запросе, как показано в следующем примере. Запрос возвращает число клиентов, купивших велосипед, возвращая конечные узлы (NODE_TYPE = 4) из дерева, в котором содержатся клиенты, возраст которых превышает 42 года. Запрос ограничивает строки вложенной таблицы теми, в которых Bike Buyer = 1.

SELECT FLATTENED NODE_NAME, NODE_CAPTION,NODE_TYPE,  
(  
SELECT [SUPPORT] FROM NODE_DISTRIBUTION WHERE ATTRIBUTE_NAME = 'Bike Buyer' AND ATTRIBUTE_VALUE = '1'  
) AS t  
FROM TM_DecisionTree.CONTENT  
WHERE ISDESCENDANT('0000000010001')  
AND NODE_TYPE = 4  

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

NODE_NAME NODE_CAPTION t.SUPPORT
000000001000100 Годовой доход >= 26000 и < 42000 266
00000000100010100 Всего детей = 3 75
0000000010001010100 Количество детей в доме = 1 75

Создание прогнозов с помощью модели дерева принятия решений

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

  • возврат прогноза для модели классификации совместно с вероятностью правильности данного прогноза, а затем фильтрация результатов в зависимости от их вероятности;

  • создание одноэлементного запроса для прогнозирования взаимосвязей;

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

Пример запроса 4. Получение прогнозов с оценкой вероятности

В следующем образце запроса используется модель дерева принятия решений, созданная в разделе Учебник по основам интеллектуального анализа данных. Запрос передает новый набор примеров данных из таблицы dbo. ProspectiveBuyers в AdventureWorks2012 DW, чтобы предсказать, какие из клиентов в новом наборе данных приобретет велосипед.

Запрос использует функцию прогнозирования PredictHistogram (DMX), которая возвращает вложенную таблицу, содержащую полезные сведения о вероятностях, обнаруженных моделью. Последнее предложение WHERE в запросе фильтрует результаты, чтобы вернуть только тех клиентов, которые согласно прогнозу купят велосипед с вероятностью больше 0%.

SELECT  
  [TM_DecisionTree].[Bike Buyer],  
  PredictHistogram([Bike Buyer]) as Results  
From  
  [TM_DecisionTree]  
PREDICTION JOIN  
  OPENQUERY([Adventure Works DW Multidimensional 2012],  
    'SELECT  
      [FirstName],  
      [LastName],  
      [MaritalStatus],  
      [Gender],  
      [YearlyIncome],  
      [TotalChildren],  
      [NumberChildrenAtHome],  
      [HouseOwnerFlag],  
      [NumberCarsOwned]  
    FROM  
      [dbo].[ProspectiveBuyer]  
    ') AS t  
ON  
  [TM_DecisionTree].[First Name] = t.[FirstName] AND  
  [TM_DecisionTree].[Last Name] = t.[LastName] AND  
  [TM_DecisionTree].[Marital Status] = t.[MaritalStatus] AND  
  [TM_DecisionTree].[Gender] = t.[Gender] AND  
  [TM_DecisionTree].[Yearly Income] = t.[YearlyIncome] AND  
  [TM_DecisionTree].[Total Children] = t.[TotalChildren] AND  
  [TM_DecisionTree].[Number Children At Home] = t.[NumberChildrenAtHome] AND  
  [TM_DecisionTree].[House Owner Flag] = t.[HouseOwnerFlag] AND  
  [TM_DecisionTree].[Number Cars Owned] = t.[NumberCarsOwned]  
WHERE [Bike Buyer] = 1  
AND PredictProbability([Bike Buyer]) >'.05'  

По умолчанию SQL Server Analysis Services возвращает вложенные таблицы с меткой столбца Expression. Изменить эту метку можно, присвоив псевдоним возвращаемому столбцу. В таком случае псевдоним (здесь — Results) будет использован и как заголовок столбца, и как значение во вложенной таблице. Для просмотра результатов необходимо раскрыть вложенную таблицу.

Пример результатов для Bike Buyer = 1:

Покупатель велосипеда $SUPPORT $PROBABILITY $ADJUSTEDPROBABILITY $VARIANCE $STDEV
1 2540 0.634849242045644 0.013562168281562 0 0
0 1460 0.364984174579377 0.00661336932550915 0 0
0 0.000166583374979177 0.000166583374979177 0 0

Если поставщик не поддерживает иерархические наборы строк, такие как представленные здесь, то можно использовать в запросе ключевое слово FLATTENED для возврата результатов в виде таблицы, содержащей значения NULL вместо повторяющихся значений столбцов. Дополнительные сведения см. в разделах Вложенные таблицы (службы Analysis Services — интеллектуальный анализ данных) или Общие сведения об инструкции DMX Select.

Пример запроса 5. Прогноз сопоставлений на основе модели дерева принятия решений

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

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

SELECT PredictAssociation([DT_Association].[v Assoc Seq Line Items],3)  
FROM  
  [DT_Association]  
NATURAL PREDICTION JOIN  
(SELECT (SELECT 'Patch kit' AS [Model]) AS [v Assoc Seq Line Items]) AS t  

Ожидаемый результат:

Моделирование
Велосипед Mountain-200
Камера шины для велосипеда Mountain
Камера для покрышки туристического велосипеда

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

SELECT PredictAssociation([DT_Association].[v Assoc Seq Line Items],3)  
From  
  [DT_Association]  
NATURAL PREDICTION JOIN  
(SELECT (SELECT 'Racing Socks' AS [Model]  
  UNION SELECT 'Women''s Mountain Shorts' AS [Model]) AS [v Assoc Seq Line Items]) AS t  

Ожидаемый результат:

Моделирование
Кофта с длинными рукавами и эмблемой
Mountain-400-W
Classic Vest

Пример запроса 6. Получение формулы регрессии из модели дерева принятия решений

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

Если в модели дерева принятия решений содержится смесь узлов регрессии и узлов, разбивающихся на дискретные атрибуты или диапазоны, то можно создать запрос, возвращающий только узел регрессии. В таблице NODE_DISTRIBUTION содержатся подробные сведения о формуле регрессии. В этом примере столбцы имеют плоский формат, а таблице NODE_DISTRIBUTION присваивается псевдоним для более легкого просмотра. Однако в этой модели не были найдены регрессоры для установки связи между атрибутом Income и другими непрерывными атрибутами. В таких случаях SQL Server Analysis Services возвращает среднее значение атрибута и общее отклонение в модели для этого атрибута.

SELECT FLATTENED NODE_DISTRIBUTION AS t  
FROM DT_Predict. CONTENT  
WHERE NODE_TYPE = 25  

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

T.ATTRIBUTE_NAME t.ATTRIBUTE_VALUE t.SUPPORT t.PROBABILITY t.VARIANCE t.VALUETYPE
Годовой доход Missing 0 0,000457142857142857 0 1
Годовой доход 57220,8876687257 17484 0,999542857142857 1041275619,52776 3
57220,8876687257 0 0 1041216662.54387 11

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

Список прогнозирующих функций

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

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

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

См. также:

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