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