次の方法で共有


Naive Bayes モデルクエリの例

データ マイニング モデルに対してクエリを作成する場合は、コンテンツ クエリ (分析で検出されたパターンの詳細を提供する) を作成するか、モデル内のパターンを使用して新しいデータの予測を行う予測クエリを作成できます。 データ マイニング スキーマ行セットに対するクエリを使用して、モデルに関するメタデータを取得することもできます。 このセクションでは、Microsoft Naive Bayes アルゴリズムに基づくモデルに対してこれらのクエリを作成する方法について説明します。

コンテンツ クエリ

DMX を使用したモデル メタデータの取得

トレーニング データの概要の取得

属性に関する詳細情報の検索

システム ストアド プロシージャの使用

予測クエリ

シングルトン クエリを使用した結果の予測

確率とサポート値を使用した予測の取得

関連付けの予測

Naive Bayes モデルに関する情報の検索

Naive Bayes モデルのモデル コンテンツは、トレーニング データ内の値の分布に関する集計情報を提供します。 データ マイニング スキーマ行セットに対するクエリを作成して、モデルのメタデータに関する情報を取得することもできます。

サンプル クエリ 1: DMX を使用したモデル メタデータの取得

データ マイニング スキーマ行セットに対してクエリを実行すると、モデルのメタデータを検索できます。 これには、モデルが作成されたとき、モデルが最後に処理されたとき、モデルの基になっているマイニング構造の名前、予測可能な属性として使用される列の名前が含まれる場合があります。 モデルの作成時に使用されたパラメーターを返すこともできます。

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'  

サンプルの結果:

モデルカタログ AdventureWorks
MODEL_NAME TM_NaiveBayes_Filtered
作成日 3/1/2008 19:15
最終処理済み 3/2/2008 20:00
SERVICE_NAME Microsoft_Naive_Bayes
予測エンティティ 自転車購入者,年間収入
フィルター [Region] = 'Europe' OR [Region] = 'North America'

この例で使用されるモデルは、 基本的なデータ マイニング チュートリアルで作成した Naive Bayes モデルに基づいていますが、2 つ目の予測可能な属性を追加し、トレーニング データにフィルターを適用することで変更されました。

サンプル クエリ 2: トレーニング データの概要の取得

Naive Bayes モデルでは、限界統計ノードは、トレーニング データ内の値の分布に関する集計情報を格納します。 この概要は便利であり、同じ情報を見つけるためにトレーニング データに対して 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  

同じ名前の多次元式 (MDX) 予約キーワードと区別するには、列の名前 SUPPORT と PROBABILITY を角かっこで囲む必要があります。

結果の一部 :

MODEL_NAME t.ATTRIBUTE_NAME t.ATTRIBUTE_VALUE t.SUPPORT t.確率 t.VALUETYPE
TM_NaiveBayes 自転車購入者 行方不明 0 0 1
TM_NaiveBayes 自転車購入者 0 8869 0.507263784 4
TM_NaiveBayes 自転車購入者 1 8615 0.492736216 4
TM_NaiveBayes ジェンダー 行方不明 0 0 1
TM_NaiveBayes ジェンダー F 8656 0.495081217 4
TM_NaiveBayes ジェンダー エム 8828 0.504918783 4

たとえば、これらの結果は、各不連続値 (VALUETYPE = 4) のトレーニング ケースの数と、欠損値 (VALUETYPE = 1) に対して調整された計算された確率を示します。

Naive Bayes モデルの NODE_DISTRIBUTION テーブルに指定された値の定義については、「Naive Bayes モデル のマイニング モデル コンテンツ (Analysis Services - データ マイニング)」を参照してください。 サポート計算と確率計算が欠損値の影響を受ける方法の詳細については、「欠損 値 (Analysis Services - データ マイニング)」を参照してください。

サンプル クエリ 3: 属性に関する詳細情報の検索

Naive Bayes モデルには、多くの場合、さまざまな属性間のリレーションシップに関する複雑な情報が含まれているため、これらのリレーションシップを表示する最も簡単な方法は 、Microsoft Naive Bayes Viewer を使用することです。 ただし、DMX クエリを作成してデータを返すことができます。

次の例は、特定の属性 ( Region) に関する情報をモデルから返す方法を示しています。

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

このクエリは、2 種類のノードを返します。入力属性を表すノード (NODE_TYPE = 10)、および属性の各値のノード (NODE_TYPE = 11)。 ノードのキャプションは、属性名と属性値の両方を表示するため、ノード名ではなくノードを識別するために使用されます。

NODE_TYPE ノードキャプション ノード確率 ノードサポート MSOLAP_NODE_SCORE ノードタイプ
10 Bike Buyer -> 地域 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  

サンプルの結果:

ノードキャプション MSOLAP_NODE_SCORE
自転車購入者 - > 子供の合計数 181.3654836
自転車購入者 -> 通勤距離 179.8419482
自転車購入者 - > 英語教育 156.9841928
自転車購入者 -> 同居する子供の数 111.8122599
バイク購入者 -> リージョン 84.51555875
自転車購入者 - > 結婚状態 23.13297354
自転車購入者 - > 英語職業 2.832069191

Microsoft 汎用コンテンツ ツリー ビューアーでモデル コンテンツを参照すると、どのような統計情報が興味深いかをよりよく理解できます。 ここでは、いくつかの簡単な例を示しました。多くの場合、複数のクエリを実行するか、結果を格納してクライアントで処理する必要があります。

サンプル クエリ 4: システム ストアド プロシージャの使用

独自のコンテンツ クエリを記述するだけでなく、いくつかの Analysis Services システム ストアド プロシージャを使用して結果を調べることができます。 システム ストアド プロシージャを使用するには、ストアド プロシージャ名の前に CALL キーワードを付けます。

CALL GetPredictableAttributes ('TM_NaiveBayes')  

結果の一部 :

属性名 NODE_UNIQUE_NAME
自転車購入者 100000001

これらのシステム ストアド プロシージャは、Analysis Services サーバーとクライアント間の内部通信用であり、マイニング モデルの開発とテスト時にのみ使用する必要があります。 運用システムのクエリを作成するときは、常に DMX を使用して独自のクエリを記述する必要があります。

Analysis Services システム ストアド プロシージャの詳細については、「 データ マイニング ストアド プロシージャ (Analysis Services - データ マイニング)」を参照してください。

Naive Bayes モデルを使用して予測を行う

通常、Microsoft Naive Bayes アルゴリズムは、入力属性と予測可能な属性間のリレーションシップを探索する場合よりも、予測に使用される量が少なくなります。 ただし、モデルでは、予測と関連付けの両方に対する予測関数の使用がサポートされています。

サンプル クエリ 5: シングルトン クエリを使用して結果を予測する

次のクエリでは、シングルトン クエリを使用して新しい値を提供し、モデルに基づいて、これらの特性を持つ顧客が自転車を購入する可能性があるかどうかを予測します。 回帰モデルでシングルトン クエリを作成する最も簡単な方法は、[ シングルトン クエリ入力 ] ダイアログ ボックスを使用することです。 たとえば、 TM_NaiveBayes モデルを選択し、 Singleton Query を選択し、 [Commute Distance]Genderのドロップダウン リストから値を選択することで、次の DMX クエリを作成できます。

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

結果の例:

表現
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  

結果の例:

自転車購入者 サポート $PROBABILITY $ADJUSTEDPROBABILITY $分散 $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

表の最後の行には、サポートの調整および欠損値に関する確率が示されています。 Naive Bayes モデルでは連続値をモデル化できないため、分散と標準偏差の値は常に 0 です。

サンプル クエリ 7: 関連付けの予測

マイニング構造に予測可能な属性をキーとして含む入れ子になったテーブルがマイニング構造に含まれている場合は、Microsoft Naive Bayes アルゴリズムを関連付け分析に使用できます。 たとえば、データ マイニング チュートリアルの 「レッスン 3: マーケット バスケット シナリオの構築 (中間データ マイニング チュートリアル)」 で作成したマイニング構造を使用して、Naive Bayes モデルを構築できます。 この例で使用されるモデルは、ケース テーブルに収入と顧客の地域に関する情報を追加するように変更されました。

次のクエリ例は、製品の購入に関連する製品 ( '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  

結果の一部 :

モデル
ウィメンズ マウンテン ショーツ
水筒
Touring-3000
Touring-2000
Touring-1000

関数リスト

すべての Microsoft アルゴリズムでは、共通の関数セットがサポートされています。 ただし、Microsoft Naive Bayes アルゴリズムでは、次の表に示す追加の関数がサポートされています。

予測関数 使用方法
IsDescendant (DMX) 1 つのノードがモデル内の別のノードの子であるかどうかを判断します。
Predict (DMX) 指定した列の予測値または値のセットを返します。
PredictAdjustedProbability (DMX) 加重確率を返します。
PredictAssociation (DMX) 連想データセットのメンバーシップを予測します。
PredictNodeId (DMX) 各ケースのNode_IDを返します。
PredictProbability (DMX) 予測値の確率を返します。
PredictSupport (DMX) 指定した状態のサポート値を返します。

特定の関数の構文については、「 データ マイニング拡張機能 (DMX) 関数リファレンス」を参照してください

こちらもご覧ください

Microsoft Naive Bayes アルゴリズムテクニカル リファレンス
Microsoft Naive Bayes アルゴリズム
ナイーブ ベイズ モデルの分析モデル内容(Analysis Services - データマイニング)