Voorbeelden van query's voor decision trees-modellen

Van toepassing op: SQL Server 2019 en eerder Analysis Services Azure Analysis Services Fabric/Power BI Premium

Belangrijk

Data mining werd verouderd verklaard in SQL Server 2017 Analysis Services en is nu stopgezet in SQL Server 2022 Analysis Services. Documentatie wordt niet bijgewerkt voor afgeschafte en stopgezette functies. Zie Analysis Services-compatibiliteit met eerdere versies voor meer informatie.

Wanneer u een query maakt op basis van een gegevensanalysemodel, kunt u een inhoudsquery maken, die details bevat over de patronen die in analyse zijn gedetecteerd, of u kunt een voorspellingsquery maken, die gebruikmaakt van de patronen in het model om voorspellingen te doen voor nieuwe gegevens. Een inhoudsquery voor een model voor beslissingsstructuren kan bijvoorbeeld statistieken geven over het aantal gevallen op elk niveau van de boomstructuur of de regels die onderscheid maken tussen gevallen. Een voorspellingsquery wijst het model ook toe aan nieuwe gegevens om aanbevelingen, classificaties enzovoort te genereren. U kunt ook metagegevens over het model ophalen met behulp van een query.

In deze sectie wordt uitgelegd hoe u query's maakt voor modellen die zijn gebaseerd op het algoritme Microsoft Decision Trees.

Inhoudsquery's

Modelparameters ophalen uit de gegevensanalyseschemarijset

Details over bomen in het model ophalen met behulp van DMX

Subbomen ophalen uit het model

Voorspellingsquery's

Voorspellingen retourneren met waarschijnlijkheden

Associaties van een Decision Trees-model voorspellen

Een regressieformule ophalen uit een Decision Trees-model

Informatie zoeken over een Decision Trees-model

Als u zinvolle query's wilt maken op de inhoud van een beslissingsstructuurmodel, moet u de structuur van de modelinhoud begrijpen en welke knooppunttypen welk soort informatie opslaan. Zie De inhoud van het miningmodel voor Decision Tree Models (Analysis Services - Data Mining) voor meer informatie.

Voorbeeldquery 1: Modelparameters ophalen uit de gegevensanalyse-schema-rijset

Door een query uit te voeren op de rijenset van het gegevensanalyseschema, kunt u metagegevens over het model vinden, bijvoorbeeld wanneer het model voor het laatst is verwerkt, de naam van de mijnbouwstructuur waarop het model is gebaseerd en de naam van de kolom die wordt gebruikt als het voorspelbare kenmerk. U kunt ook de parameters retourneren die zijn gebruikt toen het model voor het eerst werd gemaakt.

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

Voorbeeldresultaten:

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=

Voorbeeldquery 2: Retourneert details over de modelinhoud met behulp van DMX

De volgende query retourneert enkele basisinformatie over de beslissingsstructuren die zijn gemaakt tijdens het bouwen van het model in de zelfstudie Basisgegevensanalyse. Elke boomstructuur wordt opgeslagen in een eigen knooppunt. Omdat dit model slechts één voorspelbare eigenschap bevat, is er alleen een boomknooppunt. Als u echter een koppelingsmodel maakt met behulp van het algoritme Decision Trees, zijn er mogelijk honderden bomen, één voor elk product.

Met deze query worden alle knooppunten van het type 2 geretourneerd. Dit zijn de knooppunten op het hoogste niveau van een boomstructuur die een bepaald voorspelbaar kenmerk vertegenwoordigt.

Opmerking

De kolom, CHILDREN_CARDINALITY, moet tussen vierkante haken staan om deze te onderscheiden van het gereserveerde MDX-trefwoord van dezelfde naam.

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

Voorbeeldresultaten:

MODEL_NAME NODE_NAME NODE_CAPTION NODE_SUPPORT KINDEREN_CARDINALITEIT
TM_Beslissingsboom 000000001 All 12939 5

Wat vertellen deze resultaten u? In een beslissingsboommodel geeft de kardinaliteit van een bepaald knooppunt aan hoeveel directe kinderen dat knooppunt heeft. De kardinaliteit voor dit knooppunt is 5, wat betekent dat het model de doelpopulatie van potentiële fietskopers in 5 subgroepen heeft verdeeld.

De volgende gerelateerde query retourneert de kinderen voor deze vijf subgroepen, samen met de verdeling van kenmerken en waarden in de kindknooppunten. Omdat statistieken zoals ondersteuning, waarschijnlijkheid en variantie worden opgeslagen in de geneste tabel, NODE_DISTRIBUTION, wordt in dit voorbeeld het FLATTENED trefwoord gebruikt om de geneste tabelkolommen uit te voeren.

Opmerking

De geneste tabelkolom, SUPPORT, moet tussen vierkante haken staan om deze te onderscheiden van het gereserveerde trefwoord van dezelfde naam.

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'  

Voorbeeldresultaten:

NODE_NAME NODE_CAPTION T.ATTRIBUTE_NAME T.ATTRIBUTE_VALUE ONDERSTEUNING
00000000100 Aantal auto's in bezit = 0 Fietskoper Vermist 0
00000000100 Aantal auto's in eigendom = 0 Fietskoper 0 1067
00000000100 Aantal auto's in bezit = 0 Fietskoper 1 1875
00000000101 Aantal auto's in bezit = 3 Fietskoper Vermist 0
00000000101 Aantal auto's in eigendom = 3 Fietskoper 0 678
00000000101 Aantal auto's in bezit = 3 Fietskoper 1 473

Uit deze resultaten kunt u zien dat de klanten die een fiets hebben gekocht ([Fietskoper] = 1), 1067 klanten 0 auto's hadden en 473 klanten 3 auto's hadden.

Voorbeeldquery 3: Subtrees ophalen uit het model

Stel dat u meer wilt weten over de klanten die wel een fiets hebben gekocht. U kunt aanvullende details voor een van de substructuren bekijken met behulp van de functie IsDescendant (DMX) in de query, zoals wordt weergegeven in het volgende voorbeeld. De query retourneert het aantal fietskopers door bladknooppunten (NODE_TYPE = 4) op te halen uit de structuur die klanten bevat die ouder zijn dan 42 jaar. De query beperkt rijen uit de geneste tabel tot rijen waarbij 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  

Voorbeeldresultaten:

NODE_NAME NODE_CAPTION t.SUPPORT
000000001000100 Jaarlijks inkomen >= 26000 en < 42000 266
00000000100010100 Totaal aantal kinderen = 3 75
0000000010001010100 Aantal kinderen thuis = 1 75

Voorspellingen doen met behulp van een Decision Trees-model

Omdat beslissingsstructuren kunnen worden gebruikt voor verschillende taken, waaronder classificatie, regressie en zelfs koppeling, wanneer u een voorspellingsquery maakt op een beslissingsstructuurmodel, hebt u veel opties beschikbaar. U moet het doel begrijpen waarvoor het model is gemaakt om de resultaten van de voorspelling te begrijpen. De volgende queryvoorbeelden illustreren drie verschillende scenario's:

  • Retourneert een voorspelling voor een classificatiemodel, samen met de waarschijnlijkheid dat de voorspelling juist is en filtert vervolgens de resultaten op de waarschijnlijkheid;

  • Een singleton-query maken om associaties te voorspellen;

  • Het ophalen van de regressieformule voor een deel van een beslissingsstructuur waarbij de relatie tussen de invoer en uitvoer lineair is.

Voorbeeldquery 4: Voorspellingen teruggeven met waarschijnlijkheidswaarden

In de volgende voorbeeldquery wordt het beslissingsstructuurmodel gebruikt dat is gemaakt in de zelfstudie Basisgegevensanalyse. De query geeft een nieuwe voorbeeldgegevensset door uit de tabel dbo.ProspectiveBuyers in AdventureWorks2012 DW, om te voorspellen welke van de klanten in de nieuwe gegevensset een fiets zullen kopen.

De query maakt gebruik van het voorspellingsfunctie PredictHistogram (DMX) dat een geneste tabel retourneert die nuttige informatie bevat over de waarschijnlijkheden die door het model zijn gedetecteerd. De laatste WHERE-component van de query filtert de resultaten om alleen klanten te retourneren die waarschijnlijk een fiets kopen, met een waarschijnlijkheid van meer dan 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 retourneert standaard geneste tabellen met het kolomlabel Expressie. U kunt dit label wijzigen door de kolom te aliasen die wordt geretourneerd. Als u dit doet, wordt de alias (in dit geval Resultaten) gebruikt als zowel de kolomkop als als de waarde in de geneste tabel. U moet de geneste tabel uitvouwen om de resultaten te kunnen zien.

Voorbeeldresultaten met Bike Buyer = 1:

Fietskoper $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

Als uw provider geen hiërarchische rijensets ondersteunt, zoals deze hier worden weergegeven, kunt u het trefwoord PLATGEMAAKT in de query gebruiken om de resultaten te retourneren als een tabel die null-waarden bevat in plaats van de herhaalde kolomwaarden. Voor meer informatie, zie Geneste tabellen (Analysis Services - Data Mining) of Inzicht in de DMX Select-instructie.

Voorbeeldquery 5: Koppelingen van een Decision Trees-model voorspellen

De volgende voorbeeldquery is gebaseerd op de koppelingsanalysestructuur. Als u dit voorbeeld wilt volgen, kunt u een nieuw model toevoegen aan deze mijnbouwstructuur en Microsoft Decision Trees selecteren als het algoritme. Zie Les 3: Een marktmandscenario bouwen (Gegevensmijnbouw zelfstudie voor gevorderden) voor meer informatie over het maken van de associatieregelsstructuur.

De volgende voorbeeldquery is een singleton-query die u eenvoudig in SQL Server Data Tools kunt maken door velden te kiezen en vervolgens waarden voor deze velden te selecteren in een vervolgkeuzelijst.

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  

Verwachte resultaten:

Model
Mountain-200
Mountainbike binnenband
Toerbinnenband

De resultaten vertellen u de drie beste producten die u kunt aanbevelen aan klanten die het Patch Kit-product hebben gekocht. U kunt ook meerdere producten opgeven als invoer wanneer u aanbevelingen doet, door waarden te typen of door het dialoogvenster Invoer van Singleton-query's te gebruiken en waarden toe te voegen of te verwijderen. In de volgende voorbeeldquery ziet u hoe de meerdere waarden worden opgegeven, waarop u een voorspelling kunt doen. Waarden worden verbonden met een UNION-component in de SELECT-instructie die de invoerwaarden definieert.

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  

Verwachte resultaten:

Model
Lange Mouwen Logo Jersey
Mountain-400-W
Klassiek vest

Voorbeeldquery 6: Een regressieformule ophalen uit een Decision Trees-model

Wanneer u een beslissingsstructuurmodel maakt dat een regressie op een doorlopend kenmerk bevat, kunt u de regressieformule gebruiken om voorspellingen te doen of kunt u informatie over de regressieformule extraheren. Zie Voorbeelden van lineaire regressiemodellen voor meer informatie over query's voor regressiemodellen.

Als een beslissingsstructurenmodel een combinatie van regressieknooppunten en knooppunten bevat die zijn gesplitst op discrete kenmerken of bereiken, kunt u een query maken die alleen het regressieknooppunt retourneert. De tabel NODE_DISTRIBUTION bevat de details van de regressieformule. In dit voorbeeld worden de kolommen platgemaakt en wordt de NODE_DISTRIBUTION tabel een alias voor eenvoudigere weergave. In dit model zijn echter geen regressors gevonden om inkomsten te relateren aan andere doorlopende kenmerken. In dergelijke gevallen retourneert SQL Server Analysis Services de gemiddelde waarde van het kenmerk en de totale variantie in het model voor dat kenmerk.

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

Voorbeeldresultaten:

t.ATTRIBUTE_NAME t.ATTRIBUTE_VALUE t.SUPPORT t.PROBABILITEIT t.VARIANTIE t.VALUETYPE
Jaarlijks inkomen Vermist 0 0.000457142857142857 0 1
Jaarlijks inkomen 57220.8876687257 17484 0.999542857142857 1041275619.52776 3
57220.8876687257 0 0 1041216662.54387 11

Zie Mining Model Content for Linear Regression Models (Analysis Services - Data Mining) voor meer informatie over de waardetypen en de statistieken die worden gebruikt in regressiemodellen.

Lijst met voorspellingsfuncties

Alle Microsoft-algoritmen ondersteunen een algemene set functies. Het algoritme Microsoft Decision Trees ondersteunt echter de aanvullende functies die worden vermeld in de volgende tabel.

Voorspellingsfunctie Usage
IsDescendant (DMX) Bepaalt of één knooppunt een onderliggend knooppunt is van een ander knooppunt in het model.
IsInNode (DMX) Geeft aan of het opgegeven knooppunt de huidige case bevat.
PredictAdjustedProbability (DMX) Geeft als resultaat de gewogen kans.
PredictAssociation (DMX) Voorspelt het lidmaatschap van een associatieve gegevensset.
PredictHistogram (DMX) Retourneert een tabel met waarden die zijn gerelateerd aan de huidige voorspelde waarde.
PredictNodeId (DMX) Retourneert de Node_ID voor elke case.
PredictProbability (DMX) Berekent de waarschijnlijkheid voor de voorspelde waarde.
PredictStdev (DMX) Retourneert de voorspelde standaarddeviatie voor de opgegeven kolom.
PredictSupport (DMX) Retourneert de ondersteuningswaarde voor een opgegeven status.
PredictVariance (DMX) Retourneert de variantie van een opgegeven kolom.

Zie Algemene voorspellingsfuncties (DMX) voor een lijst met functies die gebruikelijk zijn voor alle Microsoft-algoritmen. Zie Data Mining Extensions (DMX)-functieverwijzing voor de syntaxis van specifieke functies.

Zie ook

Query's voor gegevensanalyse
Microsoft Decision Trees Algorithm
Technische naslaginformatie over Microsoft Decision Trees Algorithm
Analysemodelinhoud voor Decision Tree-modellen (Analysis Services - Gegevensanalyse)