データ マイニング モデルに対してクエリを作成する場合は、コンテンツ クエリを作成できます。このクエリでは、分析で検出されたパターンの詳細を提供するか、モデル内のパターンを使用して新しいデータの予測を行う予測クエリを作成できます。 たとえば、ニューラル ネットワーク モデルのコンテンツ クエリでは、非表示レイヤーの数などのモデル メタデータを取得できます。 また、予測クエリでは、入力に基づいて分類を提案し、必要に応じて各分類の確率を提供することもできます。
このセクションでは、Microsoft ニューラル ネットワーク アルゴリズムに基づくモデルのクエリを作成する方法について説明します。
コンテンツ クエリ
予測クエリ
ニューラル ネットワーク モデルに関する情報の検索
すべてのマイニング モデルは、標準化されたスキーマであるマイニング モデル スキーマ行セットに従って、アルゴリズムによって学習されたコンテンツを公開します。 この情報は、モデルに関する詳細を提供し、基本的なメタデータ、分析で検出された構造、および処理時に使用されるパラメーターを含みます。 データ マイニング拡張機能 (DMX) ステートメントを使用して、モデル コンテンツに対するクエリを作成できます。
サンプル クエリ 1: DMX を使用したモデル メタデータの取得
次のクエリは、Microsoft ニューラル ネットワーク アルゴリズムを使用して構築されたモデルに関するいくつかの基本的なメタデータを返します。 ニューラル ネットワーク モデルでは、モデルの親ノードには、モデルの名前、モデルが格納されているデータベースの名前、および子ノードの数のみが含まれます。 ただし、限界統計ノード (NODE_TYPE = 24) は、この基本的なメタデータと、モデルで使用される入力列に関するいくつかの派生統計の両方を提供します。
次のサンプル クエリは、 中間データ マイニング チュートリアルで作成したマイニング モデルに基づいており、 Call Center Default NNという名前です。 このモデルでは、コール センターのデータを使用して、スタッフ配置と通話数、注文数、問題の間で考えられる相関関係を調査します。 DMX ステートメントは、ニューラル ネットワーク モデルの限界統計ノードからデータを取得します。 対象の入力属性統計は入れ子になったテーブル、NODE_DISTRIBUTION に格納されているため、クエリには FLATTENED キーワードが含まれています。 ただし、クエリ プロバイダーが階層行セットをサポートしている場合は、FLATTENED キーワードを使用する必要はありません。
SELECT FLATTENED MODEL_CATALOG, MODEL_NAME,
( SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE,
[SUPPORT], [PROBABILITY], VALUETYPE
FROM NODE_DISTRIBUTION
) AS t
FROM [Call Center Default NN].CONTENT
WHERE NODE_TYPE = 24
注
同じ名前の予約済みキーワードと区別するには、入れ子になったテーブル列の名前 [SUPPORT] と [PROBABILITY] を角かっこで囲む必要があります。
結果の例:
| モデルカタログ | MODEL_NAME | t.ATTRIBUTE_NAME | t.ATTRIBUTE_VALUE | サポート | t.確率 | t.バリュータイプ |
|---|---|---|---|---|---|---|
| Adventure Works DW 多次元 2012 | コール センター NN | 案件あたりの平均時間 | 行方不明 | 0 | 0 | 1 |
| Adventure Works DW 多次元 2012 | コール センター NN | 案件あたりの平均時間 | < 64.7094100096 | 11 | 0.407407407 | 5 |
ニューラル ネットワーク モデルのコンテキストにおけるスキーマ行セットの列の意味の定義については、「ニューラル ネットワーク モデルの マイニング モデル コンテンツ (Analysis Services - データ マイニング)」を参照してください。
サンプル クエリ 2: スキーマ行セットからモデル メタデータを取得する
データ マイニング スキーマ行セットに対してクエリを実行すると、DMX コンテンツ クエリで返されるのと同じ情報を見つけることができます。 ただし、スキーマ行セットには追加の列がいくつか用意されています。 次のサンプル クエリは、モデルが作成された日付、変更された日付、およびモデルが最後に処理された日付を返します。 また、このクエリでは、予測可能な列も返されます。これは、モデルコンテンツからは簡単には使用できません。また、モデルの構築に使用されたパラメーターも返されます。 この情報は、モデルの文書化に役立ちます。
SELECT MODEL_NAME, DATE_CREATED, LAST_PROCESSED, PREDICTION_ENTITY, MINING_PARAMETERS
from $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = 'Call Center Default NN'
結果の例:
| MODEL_NAME | コールセンターのデフォルトNN |
| 作成日 | 2008 年 1 月 10 日午後 5:07:38 |
| 最終処理済み | 2008 年 1 月 10 日午後 5:24:02 |
| 予測エンティティ | 問題ごとの平均時間、 サービスのグレード、 注文数 |
| マイニングパラメータ | HOLDOUT_PERCENTAGE=30,HOLDOUT_SEED=0, MAXIMUM_INPUT_ATTRIBUTES=255、MAXIMUM_OUTPUT_ATTRIBUTES=255、 MAXIMUM_STATES=100、SAMPLE_SIZE=10000、HIDDEN_NODE_RATIO=4 |
サンプル クエリ 3: モデルの入力属性の取得
入力レイヤーの子ノード (NODE_TYPE = 20) (NODE_TYPE = 18) を照会することで、モデルの作成に使用された入力属性値のペアを取得できます。 次のクエリは、ノードの説明から入力属性の一覧を返します。
SELECT NODE_DESCRIPTION
FROM [Call Center Default NN].CONTENT
WHERE NODE_TYPE = 2
結果の例:
| ノードの説明 |
|---|
| 問題ごとの平均時間=64.7094100096 - 77.4002099712 |
| 曜日=金曜 |
| レベル 1 演算子 |
結果の一部の代表的な行のみがここに表示されます。 ただし、入力属性のデータ型に応じて、NODE_DESCRIPTIONが少し異なる情報を提供していることがわかります。
属性が不連続または分離された値の場合、属性とその値またはその分離された範囲が返されます。
属性が連続する数値データ型の場合、NODE_DESCRIPTIONには属性名のみが含まれます。 ただし、入れ子になったNODE_DISTRIBUTIONテーブルを取得して平均値を取得したり、NODE_RULEを返して数値範囲の最小値と最大値を取得したりできます。
次のクエリは、入れ子になったNODE_DISTRIBUTION テーブルに対してクエリを実行して、1 つの列の属性と別の列の値を返す方法を示しています。 連続属性の場合、属性の値はその平均値で表されます。
SELECT FLATTENED
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE
FROM NODE_DISTRIBUTION) as t
FROM [Call Center Default NN -- Predict Service and Orders].CONTENT
WHERE NODE_TYPE = 21
結果の例:
| t.ATTRIBUTE_NAME | t.ATTRIBUTE_VALUE |
|---|---|
| 案件あたりの平均時間 | 64.7094100096 - 77.4002099712 |
| 曜日 | 金。 |
| レベル 1 演算子 | 3.2962962962963 |
最小値と最大値は、次の例に示すように、NODE_RULE列に格納され、XML フラグメントとして表されます。
<NormContinuous field="Level 1 Operators">
<LinearNorm orig="2.83967303681711" norm="-1" />
<LinearNorm orig="3.75291955577548" norm="1" />
</NormContinuous>
サンプル クエリ 4: 非表示レイヤーから重みを取得する
ニューラル ネットワーク モデルのモデル コンテンツは、ネットワーク内の任意のノードに関する詳細を簡単に取得できるように構成されています。 さらに、ノードの ID 番号は、ノード タイプ間のリレーションシップを識別するのに役立つ情報を提供します。
次のクエリは、非表示レイヤーの特定のノードの下に格納されている係数を取得する方法を示しています。 非表示レイヤーは、メタデータのみを含むオーガナイザー ノード (NODE_TYPE = 19) と、属性と値のさまざまな組み合わせの係数を含む複数の子ノード (NODE_TYPE = 22) で構成されます。 このクエリでは、係数ノードのみが返されます。
SELECT FLATTENED TOP 1 NODE_UNIQUE_NAME,
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE, VALUETYPE
FROM NODE_DISTRIBUTION) as t
FROM [Call Center Default NN -- Predict Service and Orders].CONTENT
WHERE NODE_TYPE = 22
AND [PARENT_UNIQUE_NAME] = '40000000200000000' FROM [Call Center Default NN].CONTENT
結果の例:
| ノード_ユニーク_ネーム | t.ATTRIBUTE_NAME | t.属性値 | t.バリュータイプ |
|---|---|---|---|
| 70000000200000000 | 6000000000000000a | -0.178616518 | 7 |
| 70000000200000000 | 6000000000000000b | -0.267561918 | 7 |
| 70000000200000000 | 6000000000000000c | 0.11069497 | 7 |
| 70000000200000000 | 6000000000000000d | 0.123757712 | 7 |
| 70000000200000000 | 6000000000000000e | 0.294565343 | 7 |
| 70000000200000000 | 6000000000000000f | 0.22245318 | 7 |
| 70000000200000000 | 0.188805045 | 7 |
次に示す部分的な結果は、ニューラル ネットワーク モデルのコンテンツが非表示ノードを入力ノードに関連付ける方法を示しています。
非表示レイヤー内のノードの一意の名前は、常に 70000000 で始まります。
入力レイヤー内のノードの一意の名前は、常に 60000000 で始まります。
したがって、これらの結果は、ID 70000000200000000で示されるノードに 6 つの異なる係数 (VALUETYPE = 7) が渡されたことを示しています。 係数の値は、ATTRIBUTE_VALUE列にあります。 ATTRIBUTE_NAME列のノード ID を使用して、係数の入力属性を正確に判断できます。 たとえば、ノード ID 6000000000000000aは入力属性と値を参照します Day of Week = 'Tue.' ノード ID を使用してクエリを作成したり、 Microsoft 汎用コンテンツ ツリー ビューアーを使用してノードを参照したりできます。
同様に、出力レイヤー内のノードのNODE_DISTRIBUTION テーブル (NODE_TYPE = 23) に対してクエリを実行すると、各出力値の係数を確認できます。 ただし、出力レイヤーでは、ポインターは非表示レイヤーのノードを参照します。 詳細については、「 ニューラル ネットワーク モデルのマイニング モデル コンテンツ (Analysis Services - データ マイニング)」を参照してください。
ニューラル ネットワーク モデルを使用して予測を行う
Microsoft ニューラル ネットワーク アルゴリズムは、分類と回帰の両方をサポートしています。 これらのモデルで予測関数を使用して、新しいデータを提供し、シングルトンまたはバッチ予測を作成できます。
サンプル クエリ 5: シングルトン予測の作成
ニューラル ネットワーク モデルで予測クエリを作成する最も簡単な方法は、SQL Server Management Studio と SQL Server Data Tools (SSDT) の両方のデータ マイニング デザイナーの [ マイニング予測 ] タブにある予測クエリ ビルダーを使用することです。 Microsoft ニューラル ネットワーク ビューアーでモデルを参照して関心のある属性をフィルター処理し、傾向を表示し、[ マイニング予測 ] タブに切り替えてクエリを作成し、それらの傾向の新しい値を予測できます。
たとえば、コール センター モデルを参照して、注文ボリュームとその他の属性間の相関関係を表示できます。 これを行うには、ビューアーでモデルを開き、[入力] で [<All> を選択します。 次に、[ 出力] で [ 注文数] を選択します。 [値 1] で、最も多くの注文を表す範囲を選択し、[値 2] で最も少ない注文を表す範囲を選択します。 その後、モデルが注文量と関連付けるすべての属性をひとめで確認できます。
ビューアで結果を参照すると、特定の曜日の注文量が少ないことがわかります。また、オペレーターの数の増加は売上の増加と関連しているようです。 その後、モデルの予測クエリを使用して、"what if" 仮説をテストし、少量の日にレベル 2 演算子の数を増やすと注文が増加するかどうかを確認できます。 これを行うには、次のようなクエリを作成します。
SELECT Predict([Call Center Default NN].[Number of Orders]) AS [Predicted Orders],
PredictProbability([Call Center Default NN].[Number of Orders]) AS [Probability]
FROM [Call Center Default NN]
NATURAL PREDICTION JOIN
(SELECT 'Tue.' AS [Day of Week],
13 AS [Level 2 Operators]) AS t
結果の例:
| 予測される注文 | 確率 |
|---|---|
| 364 | 0.9532... |
予測される販売量は、火曜日の現在の販売範囲よりも高く、予測の確率が非常に高くなっています。 ただし、バッチ プロセスを使用して複数の予測を作成し、モデルでさまざまな仮説をテストすることができます。
注
Excel 2007 のデータ マイニング Add-Ins には、特定のシフトのターゲット レベルにサービス グレードを向上させるために必要なレベル 2 演算子の数など、複雑な質問に簡単に回答できるロジスティック回帰ウィザードが用意されています。 データ マイニング アドインは無料でダウンロードでき、ニューラル ネットワークやロジスティック回帰アルゴリズムに基づくウィザードが含まれています。 詳細については、 Office 2007 Web サイトのデータ マイニング アドイン を参照してください。
予測関数の一覧
すべての Microsoft アルゴリズムでは、共通の関数セットがサポートされています。 Microsoft ニューラル ネットワーク アルゴリズムに固有の予測関数はありません。ただし、アルゴリズムでは、次の表に示す関数がサポートされています。
| 予測関数 | 使用方法 |
| IsDescendant (DMX) | 1 つのノードがニューラル ネットワーク グラフ内の別のノードの子であるかどうかを判断します。 |
| PredictAdjustedProbability (DMX) | 加重確率を返します。 |
| PredictHistogram (DMX) | 現在の予測値に関連する値のテーブルを返します。 |
| PredictVariance (DMX) | 予測値の分散を返します。 |
| PredictProbability (DMX) | 予測値の確率を返します。 |
| PredictStdev (DMX) | 予測値の標準逸脱度を返します。 |
| PredictSupport (DMX) | ニューラル ネットワークとロジスティック回帰モデルの場合、モデル全体のトレーニング セットのサイズを表す単一の値を返します。 |
特定の関数の構文については、「 データ マイニング拡張機能 (DMX) 関数リファレンス」を参照してください。
こちらもご覧ください
Microsoft ニューラル ネットワーク アルゴリズム
Microsoft ニューラル ネットワーク アルゴリズムテクニカル リファレンス
ニューラル ネットワーク モデルのマイニング モデル コンテンツ (Analysis Services - データ マイニング)
レッスン 5: ニューラル ネットワークとロジスティック回帰モデルの構築 (中間データ マイニング チュートリアル)