Ders 5: Tahmin sorgular yürütme

Bu derste, kullanacağınız select from <modeli > Tahmin birleştirme (dmx) formu iki farklı karar ağacı temel predictions oluşturmak için select deyimi içinde oluşturduğunuz modeli ders 2: dernek incelemesi yapısı incelemesi modeller ekleme. Bu tahmin türleri aşağıda tanımlanmıştır.

  • Singleton sorgu
    Tahminler yapılırken özel değerler sağlamak için tek bir sorgu kullanın. Örneğin, tek bir müşteri büyük bir olasılıkla commute distance, alan kodunu ya da müşteri çocuk sayısı gibi sorgu girişleri geçirerek bir bisiklet alıcı olması olup olmadığını belirleyebilirsiniz. Singleton sorgu bu girişleri dayalı bir bisiklet satın almak için ne kadar büyük olasılıkla kişi gösteren bir değeri döndürür.

  • Toplu iş sorgu
    Kim potansiyel müşteriler tablosunda büyük olasılıkla bir bisiklet satınalma belirlemek için bir toplu iş sorgu kullanın. Pazarlama departmanı müşteri ve müşteri öznitelikler listesini içeren sağlıyorsa, örneğin, sonra eğer bir toplu tahmin kim tablosundan büyük olasılıkla bir bisiklet satınalma belirlemek için kullanabilirsiniz.

select from <modeli > Tahmin birleştirme (dmx) select deyimi formu üç parça içerir:

  • İncelemesi modeli sütunları ve sonuçlarında döndürülen tahmin işlevlerin listesi. Sonuçları da veri kaynağından giriş sütunlar içerebilir.

  • Bir tahmin oluşturmak için kullanılan verileri tanımlayan kaynak sorgu. Örneğin, bir toplu iş sorgu bu müşterilerin listesi olabilir.

  • Kaynak veri incelemesi modeli sütunları arasında bir eşleme. Bu adlar eşleşiyorsa, sonra doğal sözdizimini kullanın ve Sütun eşlemeleri dışında bırakın.

Tahmin işlevleri kullanarak sorgu daha da geliştirebilirsiniz. Tahmin işlevleri bir öngörü oluşma olasılığını gibi ek bilgi sağlamak ve tahmini eğitim veri kümesi için destek sağlar. Tahmin işlevleri hakkında daha fazla bilgi için bkz: Functions (DMX).

Bu öğretici öngörüleri ProspectiveBuyer tablo temel alan AdventureWorksDW2012 örnek veritabanı. ProspectiveBuyer tablo, potansiyel müşteriler ve ilişkili özelliklerini listesini içerir. Bu müşterilerin karar ağacı incelemesi modeli oluşturmak için kullanılan müşterilerine bağımsızdır.

Tahmin Sorgu Oluşturucusu'nda kullanarak tahminler oluşturabilirsiniz SQL Server Veri Akışı Araçları (SSDT). Daha fazla bilgi için, bkz. Using the Prediction Query Builder to Create DMX Prediction Queries.

Ders görevleri

Bu derste aşağıdaki görevleri gerçekleştirecek:

  • Belirli bir müşteri büyük olasılıkla bir bisiklet satınalma olup olmadığını belirlemek için tek bir sorgu oluşturun.

  • Müşteriler tablosunda listelenen hangi müşterilerin belirlemek için toplu iş sorgu oluşturmak, büyük olasılıkla bir bisiklet satınalma.

Singleton sorgu

İlk adım kullanmaktır SELECT FROM <model> PREDICTION JOIN (DMX)içinde bir singleton tahmin sorgu. Tek deyimi genel bir örneği aşağıdadır:

SELECT <select list> FROM [<mining model name>] 
NATURAL PREDICTION JOIN
(SELECT '<value>' AS [<column>], ...)
AS [<input alias>]

SELECT <select list> FROM [<mining model name>] 
NATURAL PREDICTION JOIN
(SELECT '<value>' AS [<column>], ...)
AS [<input alias>]

Sorgunun döndürmesi gerekir ve tahmin oluşturmak için kullanılan incelemesi modeli belirtir incelemesi modeli sütunlarından kodu ilk satırı tanımlar:

SELECT <select list> FROM [<mining model name>] 

SELECT <select list> FROM [<mining model name>] 

Sonraki kod satırlarını, bir tahmin oluşturmak için kullanılan müşteri özelliklerini tanımlayın:

NATURAL PREDICTION JOIN
(SELECT '<value>' AS [<column>], ...)
AS [<input alias>]
ORDER BY <expression>

NATURAL PREDICTION JOIN
(SELECT '<value>' AS [<column>], ...)
AS [<input alias>]
ORDER BY <expression>

Örneğin doğal tahmin birleştirme belirlediyseniz, sunucu modeli her sütundan sütuna giriş, temel alınarak sütun adlarından eşleşir. Sütunlar, sütun adları eşleşmiyorsa, alınmaz.

Bir singleton tahmin sorgu oluşturmak için

  1. İçinde Object Explorer, örneğini sağ tıklatın Analysis Servicesgelin Yeni sorguve'yi dmx.

    Sorgu Düzenleyicisi açılır ve yeni, boş bir sorgu içerir.

  2. Tek deyimi genel örneği boş sorgu kopyalayın.

  3. Birini değiştirin:

    <select list> 
    
    <select list> 
    

    ile:

    [Bike Buyer] AS Buyer, PredictHistogram([Bike Buyer]) AS Statistics
    
    [Bike Buyer] AS Buyer, PredictHistogram([Bike Buyer]) AS Statistics
    

    as deyimi, sorgu tarafından döndürülen diğer sütunlar için kullanılır. PredictHistogram işlevi hakkındaki tahmini, olasılık ve destek de dahil olmak üzere istatistikleri. Tahmin deyiminde kullanılan işlevler hakkında daha fazla bilgi için bkz: Functions (DMX).

  4. Birini değiştirin:

    [<mining model>] 
    
    [<mining model>] 
    

    ile:

    [Decision Tree]
    
    [Decision Tree]
    
  5. Birini değiştirin:

    (SELECT '<value>' AS [<column name>], ...)  AS t
    
    (SELECT '<value>' AS [<column name>], ...)  AS t
    

    ile:

    (SELECT 35 AS [Age],
      '5-10 Miles' AS [Commute Distance],
      '1' AS [House Owner Flag],
      2 AS [Number Cars Owned],
      2 AS [Total Children]) AS t
    
    (SELECT 35 AS [Age],
      '5-10 Miles' AS [Commute Distance],
      '1' AS [House Owner Flag],
      2 AS [Number Cars Owned],
      2 AS [Total Children]) AS t
    

    Şimdi, tam deyimi aşağıdaki gibi olmalıdır:

    SELECT
       [Bike Buyer] AS Buyer,
       PredictHistogram([Bike Buyer]) AS Statistics
    FROM
       [Decision Tree]
    NATURAL PREDICTION JOIN
    (SELECT 35 AS [Age],
       '5-10 Miles' AS [Commute Distance],
       '1' AS [House Owner Flag],
       2 AS [Number Cars Owned],
       2 AS [Total Children]) AS t
    
    SELECT
       [Bike Buyer] AS Buyer,
       PredictHistogram([Bike Buyer]) AS Statistics
    FROM
       [Decision Tree]
    NATURAL PREDICTION JOIN
    (SELECT 35 AS [Age],
       '5-10 Miles' AS [Commute Distance],
       '1' AS [House Owner Flag],
       2 AS [Number Cars Owned],
       2 AS [Total Children]) AS t
    
  6. Tarih dosyasını menüsünden tıklatın DMXQuery1.dmx farklı kaydet.

  7. İçinde Kaydet iletişim kutusunda uygun klasöre göz atın ve dosya adı Singleton_Query.dmx.

  8. Araç çubuğunda Execute düğme.

    Sorgu, belirtilen özelliklere sahip bir müşteri istatistikleri hakkında o tahmin yanı sıra bir bisiklet satın alacağınız hakkında bir tahmin döndürür.

Toplu iş sorgu

Sonraki adım kullanmaktır SELECT FROM <model> PREDICTION JOIN (DMX)bir toplu tahmin sorguda. Bir toplu iş deyimi genel bir örneği aşağıdadır:

SELECT TOP <number> <select list> 
FROM [<mining model name>]
PREDICTION JOIN
OPENQUERY([<datasource>],'<SELECT statement>')
  AS [<input alias>]
ON <on clause, mapping,>
WHERE <where clause, boolean expression,>
ORDER BY <expression>

SELECT TOP <number> <select list> 
FROM [<mining model name>]
PREDICTION JOIN
OPENQUERY([<datasource>],'<SELECT statement>')
  AS [<input alias>]
ON <on clause, mapping,>
WHERE <where clause, boolean expression,>
ORDER BY <expression>

Singleton sorgu olarak, ilk iki satır kod tahmin oluşturmak için kullanılan incelemesi model adını yanı sıra, sorgunun döndürdüğü incelemesi modeli sütunlarından tanımlayın. top <sayısı> deyimi belirtir sorgu yalnızca numarasını veya belirtilen sonuç verir <sayısı>.

Sonraki kod satırlarını predictions esas alan kaynak verileri tanımlayın:

OPENQUERY([<datasource>],'<SELECT statement>')
  AS [<input alias>]

OPENQUERY([<datasource>],'<SELECT statement>')
  AS [<input alias>]

Kaynak veri alma yöntemi için birkaç seçeneğiniz vardır, ancak bu eğitimde, openquery kullanacaktır. Kullanılabilir seçenekler hakkında daha fazla bilgi için bkz: <source data query>.

Sonraki satıra, kaynak veriler için kaynak sütunları incelemesi modeli sütun arasındaki eşlemeyi tanımlar:

ON <column mappings>

ON <column mappings>

where yan tümcesi tahmin sorgu tarafından döndürülen sonuç filtreleri:

WHERE <where clause, boolean expression,>

WHERE <where clause, boolean expression,>

Son ve isteğe bağlı satır kodun sonuçlarını tarafından sipariş sütun belirtir.

ORDER BY <expression> [DESC|ASC]

ORDER BY <expression> [DESC|ASC]

order by top ile birlikte kullanmak <sayısı> döndürülen sonuçları filtrelemek için deyimi. Örneğin, bu öngörü tahmini doğru olma ihtimali tarafından sipariş edilen en iyi on bisiklet alıcıların dönecektir. Sen-ebilmek kullanma [desc|Sonuçların görüntüleneceği sırayı denetlemek için asc] sözdizimi.

Toplu tahmin sorgu oluşturmak için

  1. İçinde Object Explorer, örneğini sağ tıklatın Analysis Servicesgelin Yeni sorguve'yi dmx.

    Sorgu Düzenleyicisi açılır ve yeni, boş bir sorgu içerir.

  2. Toplu deyimi genel örneği boş sorgu kopyalayın.

  3. Birini değiştirin:

    <select list> 
    
    <select list> 
    

    ile:

    SELECT
      TOP 10
      t.[LastName],
      t.[FirstName],
      [Decision Tree].[Bike Buyer],
      PredictProbability([Bike Buyer])
    
    SELECT
      TOP 10
      t.[LastName],
      t.[FirstName],
      [Decision Tree].[Bike Buyer],
      PredictProbability([Bike Buyer])
    

    top 10, sadece ilk on sonuç sorgu tarafından döndürülen olduğunu belirtir. order BYdeyimi bu sorgu sonuçları tahmini doğru yani yalnızca on en olası sonuçları döndürülür olma olasılığını tarafından emir.

  4. Birini değiştirin:

    [<mining model>] 
    
    [<mining model>] 
    

    ile:

    [Decision Tree]
    
    [Decision Tree]
    
  5. Birini değiştirin:

    OPENQUERY([<datasource>],'<SELECT statement>')
    
    OPENQUERY([<datasource>],'<SELECT statement>')
    

    ile:

      OPENQUERY([Adventure Works DW2008R2],
        'SELECT
          [LastName],
          [FirstName],
          [MaritalStatus],
          [Gender],
          [YearlyIncome],
          [TotalChildren],
          [NumberChildrenAtHome],
          [Education],
          [Occupation],
          [HouseOwnerFlag],
          [NumberCarsOwned]
        FROM
          [dbo].[ProspectiveBuyer]
        ') AS t
    
      OPENQUERY([Adventure Works DW2008R2],
        'SELECT
          [LastName],
          [FirstName],
          [MaritalStatus],
          [Gender],
          [YearlyIncome],
          [TotalChildren],
          [NumberChildrenAtHome],
          [Education],
          [Occupation],
          [HouseOwnerFlag],
          [NumberCarsOwned]
        FROM
          [dbo].[ProspectiveBuyer]
        ') AS t
    
  6. Birini değiştirin:

    <ON clause, mapping,> 
    WHERE <where clause, boolean expression,>
    ORDER BY <expression>
    
    <ON clause, mapping,> 
    WHERE <where clause, boolean expression,>
    ORDER BY <expression>
    

    ile:

    [Decision Tree].[Marital Status] = t.[MaritalStatus] AND
      [Decision Tree].[Gender] = t.[Gender] AND
      [Decision Tree].[Yearly Income] = t.[YearlyIncome] AND
      [Decision Tree].[Total Children] = t.[TotalChildren] AND
      [Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND
      [Decision Tree].[Education] = t.[Education] AND
      [Decision Tree].[Occupation] = t.[Occupation] AND
      [Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND
      [Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned]
    WHERE [Decision Tree].[Bike Buyer] =1
    ORDER BY PredictProbability([Bike Buyer]) DESC
    
    [Decision Tree].[Marital Status] = t.[MaritalStatus] AND
      [Decision Tree].[Gender] = t.[Gender] AND
      [Decision Tree].[Yearly Income] = t.[YearlyIncome] AND
      [Decision Tree].[Total Children] = t.[TotalChildren] AND
      [Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND
      [Decision Tree].[Education] = t.[Education] AND
      [Decision Tree].[Occupation] = t.[Occupation] AND
      [Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND
      [Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned]
    WHERE [Decision Tree].[Bike Buyer] =1
    ORDER BY PredictProbability([Bike Buyer]) DESC
    

    Belirtmek DESCen yüksek olasılık sonuçları ilk listelemek için.

    Şimdi, tam deyimi aşağıdaki gibi olmalıdır:

    SELECT
      TOP 10
      t.[LastName],
      t.[FirstName],
      [Decision Tree].[Bike Buyer],
      PredictProbability([Bike Buyer])
    FROM
      [Decision Tree]
    PREDICTION JOIN
      OPENQUERY([Adventure Works DW2008R2],
        'SELECT
          [LastName],
          [FirstName],
          [MaritalStatus],
          [Gender],
          [YearlyIncome],
          [TotalChildren],
          [NumberChildrenAtHome],
          [Education],
          [Occupation],
          [HouseOwnerFlag],
          [NumberCarsOwned]
        FROM
          [dbo].[ProspectiveBuyer]
        ') AS t
    ON
      [Decision Tree].[Marital Status] = t.[MaritalStatus] AND
      [Decision Tree].[Gender] = t.[Gender] AND
      [Decision Tree].[Yearly Income] = t.[YearlyIncome] AND
      [Decision Tree].[Total Children] = t.[TotalChildren] AND
      [Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND
      [Decision Tree].[Education] = t.[Education] AND
      [Decision Tree].[Occupation] = t.[Occupation] AND
      [Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND
      [Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned]
    WHERE [Decision Tree].[Bike Buyer] =1
    ORDER BY PredictProbability([Bike Buyer]) DESC
    
    SELECT
      TOP 10
      t.[LastName],
      t.[FirstName],
      [Decision Tree].[Bike Buyer],
      PredictProbability([Bike Buyer])
    FROM
      [Decision Tree]
    PREDICTION JOIN
      OPENQUERY([Adventure Works DW2008R2],
        'SELECT
          [LastName],
          [FirstName],
          [MaritalStatus],
          [Gender],
          [YearlyIncome],
          [TotalChildren],
          [NumberChildrenAtHome],
          [Education],
          [Occupation],
          [HouseOwnerFlag],
          [NumberCarsOwned]
        FROM
          [dbo].[ProspectiveBuyer]
        ') AS t
    ON
      [Decision Tree].[Marital Status] = t.[MaritalStatus] AND
      [Decision Tree].[Gender] = t.[Gender] AND
      [Decision Tree].[Yearly Income] = t.[YearlyIncome] AND
      [Decision Tree].[Total Children] = t.[TotalChildren] AND
      [Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND
      [Decision Tree].[Education] = t.[Education] AND
      [Decision Tree].[Occupation] = t.[Occupation] AND
      [Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND
      [Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned]
    WHERE [Decision Tree].[Bike Buyer] =1
    ORDER BY PredictProbability([Bike Buyer]) DESC
    
  7. Tarih dosyasını menüsünden tıklatın DMXQuery1.dmx farklı kaydet.

  8. İçinde Kaydet iletişim kutusunda uygun klasöre göz atın ve dosya adı Batch_Prediction.dmx.

  9. Araç çubuğunda Execute düğme.

    Sorgu, müşteri adlarını içeren bir tablo olup her müşteri, bir bisiklet ve tahmini olasılık satınalma bir tahmin döndürür.

Bu Bike Buyer eğitimde son adımdır. Şimdi sen-ebilmek kullanma-e, müşterileri arasında benzerlikler keşfetmek ve potansiyel müşterilerin bir bisiklet satın alacak olup olmadığını tahmin incelemesi modelleri bir dizi var.

Pazar Sepeti senaryoda dmx kullanmayı öğrenmek için bkz: Pazar Sepeti dmx öğreticisi.