Microsoft ニューラル ネットワーク アルゴリズム (SSAS)
Microsoft SQL Server 2005 Analysis Services (SSAS) の Microsoft ニューラル ネットワーク アルゴリズムでは、ニューロンの多層パーセプトロン ネットワークを構築することによって、分類および回帰のマイニング モデルを作成します。Microsoft デシジョン ツリー アルゴリズムと同様に、Microsoft ニューラル ネットワーク アルゴリズムでは、予測可能な属性の各状態を指定すると、入力属性の考えられる各状態の確率が計算されます。これらの確率を後で使用して、入力属性に基づいて予測属性の結果を予測できます。
例
Microsoft ニューラル ネットワーク アルゴリズムは、製造または商業活動などからの複雑な入力データの分析や、大量のトレーニング データが利用できるが他のアルゴリズムではルールを簡単に導き出すことができない業務上の問題の分析に役立ちます。
Microsoft ニューラル ネットワーク アルゴリズムを使用する推奨シナリオは次のとおりです。
- ダイレクト メール宣伝やラジオ広告キャンペーンの成功度の測定など、マーケティングおよび宣伝に関する分析
- 履歴データからの、株価の動向、通貨の騰落、その他の流動性の高い金融情報の予測
- 製造および工業プロセスに関する分析
アルゴリズムの動作
Microsoft ニューラル ネットワーク アルゴリズムでは、最大 3 層のニューロンまたはパーセプトロンで構成される多層パーセプトロン ネットワーク (バックプロパゲーション デルタ ルール ネットワークとも呼ばれる) を使用します。これらの層は、入力層、オプションの非表示層、および出力層です。多層パーセプトロン ネットワークでは、各ニューロンは 1 つまたは複数の入力を受け取り、1 つまたは複数の同一の出力を生成します。各出力は、ニューロンへの入力の合計の単純な非線形関数です。入力は入力層のノードから非表示層のノードに送られ、最終的に出力層に渡されます。層内のニューロン間は接続されていません (非表示層が含まれていない場合、入力は入力層のノードから出力層のノードに渡されます)。多層パーセプトロン ニューラル ネットワークの詳細については、このマニュアルでは扱いません。
Microsoft ニューラル ネットワーク アルゴリズムで作成されたマイニング モデルには、入力と予測の両方に使用する列の数または予測のみに使用する列の数に応じて、複数のネットワークを含めることができます。1 つのマイニング モデルに含まれるネットワークの数は、マイニング モデルで使用される入力列および予測可能列に含まれる状態の数によって異なります。
Microsoft ニューラル ネットワーク アルゴリズムで作成されるニューラル ネットワークには、次の 3 種類のニューロンがあります。
- 入力ニューロン
入力ニューロンは、データ マイニング モデルの入力属性値を指定します。不連続の入力属性の場合、入力ニューロンは通常、欠落値などの入力属性からの 1 つの状態を表します。たとえば、バイナリの入力属性では、存在しない状態または存在する状態を表す 1 つの入力ノードが生成され、その属性の値が存在するかどうかが示されます。入力属性として使用されるブール型の列では、true 値のニューロン、false 値のニューロン、および存在しない状態または存在する状態のニューロンという 3 つの入力ニューロンが生成されます。3 つ以上の状態を持つ不連続の入力属性では、各状態の入力ニューロンと、存在しない状態または存在する状態の入力ニューロンが 1 つずつ生成されます。連続する入力属性では、存在しない状態または存在する状態のニューロンと、連続する属性自体の値のニューロンという 2 つの入力ニューロンが生成されます。入力ニューロンは、1 つまたは複数の非表示ニューロンの入力になります。 - 非表示ニューロン
非表示ニューロンは入力ニューロンから入力を受け取り、出力ニューロンに出力を渡します。 - 出力ニューロン
出力ニューロンは、データ マイニング モデルの予測可能属性値を表します。不連続の入力属性の場合、出力ニューロンは通常、欠落値などの予測可能属性の 1 つの予測状態を表します。たとえば、バイナリの予測可能属性では、存在しない状態または存在する状態を表す 1 つの出力ノードが生成され、その属性の値が存在するかどうかが示されます。予測可能属性として使用されるブール型の列では、true 値のニューロン、false 値のニューロン、および存在しない状態または存在する状態のニューロンという 3 つの出力ニューロンが生成されます。3 つ以上の状態を持つ不連続の予測可能属性では、各状態の出力ニューロンと、存在しない状態または存在する状態の出力ニューロンが 1 つずつ生成されます。連続する予測可能な列では、存在しない状態または存在する状態のニューロンと、連続する列自体の値のニューロンという 2 つの出力ニューロンが生成されます。予測可能な列のセットを確認することによって 500 を超える出力ニューロンが生成された場合は、Analysis Services によって追加の出力ニューロンを表す新しいネットワークがマイニング モデル内に生成されます。
ニューロンはさまざまな入力を受け取ります。入力ニューロンでは、元のデータからの入力を受け取ります。非表示ニューロンと出力ニューロンでは、ニューラル ネットワーク内の他のニューロンの出力からの入力を受け取ります。入力によってニューロン間のリレーションシップが確立され、特定のケース セットを分析するためのパスとしての役割を果たします。
各入力には、重みと呼ばれる値が割り当てられています。この値は、非表示ニューロンまたは出力ニューロンに対する特定の入力の関連性または重要性を表します。入力によって特定のケースを適切に分類できるかどうかをアルゴリズムで判断するとき、その入力に割り当てられている重みが大きいほど、値を受け取るニューロンに対する入力の関連性または重要性が増加します。また、重みには負の値も使用できます。これは、その入力によって特定のニューロンがアクティブになるのではなく、抑制されることを意味します。入力値と重みを乗算して、特定のニューロンに対する入力を強めます (負の重みの場合は、入力値と重みを乗算して値を弱めます)。
同様に、各ニューロンにはアクティブ化関数と呼ばれる単純な非線形関数が割り当てられており、ニューラル ネットワークの層に対する特定のニューロンの関連性または重要性が表されます。非表示ニューロンではアクティブ化関数としてハイパータンジェント関数を使用し、出力ニューロンではアクティブ化関数としてシグモイド関数を使用します。どちらの関数も、ニューラル ネットワークによる入力ニューロンと出力ニューロン間の非線形リレーションシップのモデル化を可能にする非線形の連続関数です。
ニューラル ネットワークのトレーニング
Microsoft ニューラル ネットワーク アルゴリズムを使用するデータ マイニング モデルのトレーニングには、複数の手順が必要です。これらの手順は、アルゴリズムで使用できるパラメータに対して指定した値の影響を強く受けます。
まず、アルゴリズムによってデータ ソースのトレーニング データの評価および抽出が行われます。提示されたデータと呼ばれるトレーニング データの割合は、結果モデルの構造の精度の測定で使用するために予約されています。トレーニング処理の間、トレーニング データを反復処理するたびに、提示されたデータに対してモデルが評価されます。モデルの精度が向上しなくなると、トレーニング処理が停止します。SAMPLE_SIZE パラメータと HOLDOUT_PERCENTAGE パラメータの値は、トレーニング データからサンプリングするケースの数と、提示されたデータに対して使用しないケースの数を決めるために使用します。HOLDOUT_SEED パラメータの値は、提示されたデータに対して使用しない個々のケースをランダムに決定するために使用します。
次に、マイニング モデルがサポートするネットワークの数と複雑さがアルゴリズムによって決定されます。予測のみに使用される 1 つまたは複数の属性がマイニング モデルに含まれている場合は、そのようなすべての属性を表す単一のネットワークが作成されます。入力と予測に使用される 1 つまたは複数の属性がマイニング モデルに含まれている場合は、アルゴリズム プロバイダによってそのような各属性のネットワークが作成されます。入力属性の数が MAXIMUM_INPUT_ATTRIBUTES パラメータの値を上回っているか、予測可能属性の数が MAXIMUM_OUTPUT_ATTRIBUTES パラメータの値を上回っている場合は、マイニング モデルに含まれているネットワークの複雑さを軽減するために、機能選択アルゴリズムが使用されます。機能選択によって、入力属性または予測可能属性の数が、モデルとの関連性が統計的に最も高い属性の数まで減らされます。
不連続の値を持つ入力属性および予測可能属性の場合、各入力ニューロンまたは出力ニューロンはそれぞれ 1 つの状態を表します。連続する属性を持つ入力属性および予測可能属性の場合、各入力ニューロンまたは出力ニューロンはそれぞれ属性の値の範囲および分布を表します。両方のケースでサポートされる状態の最大数は、MAXIMUM_STATES アルゴリズム パラメータの値によって異なります。特定の属性の状態の数が MAXIMUM_STATES アルゴリズム パラメータの値を超えている場合は、その属性の最も一般的な状態または最も関連性の強い状態が最大限に選択され、残りの状態は分析の目的では欠落値としてグループ化されます。
アルゴリズムでは、非表示層に対して作成するニューロンの最初の数を決定するときに HIDDEN_NODE_RATIO パラメータの値が使用されます。HIDDEN_NODE_RATIO を 0 に設定すると、マイニング モデルに対して生成されるネットワーク内に非表示層が作成されず、ニューラル ネットワークがロジスティック回帰として扱われます。
アルゴリズム プロバイダでは、一括学習と呼ばれる処理で、以前に予約されたトレーニング データのセットを取得し、提示されたデータ内の各ケースの実際の既知の値をネットワークの予測と比較することによって、ネットワーク内のすべての入力の重みを同時に反復的に評価します。アルゴリズムによってトレーニング データのセット全体が評価された後、各ニューロンの予測値と実際値が確認されます。アルゴリズムでは、エラーがあればエラーの程度を計算し、バックプロパゲーションと呼ばれる処理で出力ニューロンから入力ニューロンに逆方向の処理を行い、そのニューロンの入力に関連付けられた重みを調整します。次に、アルゴリズムではトレーニング データのセット全体で処理が繰り返されます。アルゴリズムでは多数の重みと出力ニューロンをサポートできるので、入力の重みの割り当ておよび評価を行うトレーニング処理の実行には、共役勾配アルゴリズムが使用されます。共役勾配法アルゴリズムの詳細については、このマニュアルでは扱いません。
アルゴリズムの使用
ニューラル ネットワーク モデルには、単一のキー列、1 つ以上の入力列、および 1 つ以上の予測可能列が必要です。
次の表のように、Microsoft ニューラル ネットワーク アルゴリズムでは、特定の入力列のコンテンツの種類、予測可能列のコンテンツの種類、およびモデリング フラグがサポートされています。
入力列のコンテンツの種類 |
Continuous、Cyclical、Discrete、Discretized、Key、Table、Ordered |
予測可能列のコンテンツの種類 |
Continuous、Cyclical、Discrete、Discretized、Ordered |
モデリング フラグ |
MODEL_EXISTENCE_ONLY と NOT NULL |
ディストリビューション フラグ |
Normal、Uniform、Log Normal |
すべての Microsoft アルゴリズムでは、共通の関数セットがサポートされています。ただし、Microsoft ニューラル ネットワーク アルゴリズムでは、次の表のような追加の関数がサポートされています。
|
すべての Microsoft アルゴリズムに共通の関数の一覧については、「データ マイニング アルゴリズム」を参照してください。これらの関数の使用方法については、「データ マイニング拡張機能 (DMX) 関数リファレンス」を参照してください。
Microsoft ニューラル ネットワーク アルゴリズムを使用して作成したモデルでは、マイニング モデルのノードの構造がその基になるデータと必ずしも直接対応しているわけではないので、ドリルディストリビューション フラグやデータ マイニング ディメンションがサポートされていません。
Microsoft ニューラル ネットワーク アルゴリズムでは、結果として得られるマイニング モデルのパフォーマンスおよび精度に影響を与えるいくつかのパラメータがサポートされています。次の表では、各パラメータについて説明します。
パラメータ | 説明 |
---|---|
HIDDEN_NODE_RATIO |
入力ニューロンおよび出力ニューロンに対する非表示ニューロンの比率を指定します。次の式で、非表示層のニューロンの最初の数を求めます。 HIDDEN_NODE_RATIO * SQRT(入力ニューロンの総数 * 出力ニューロンの総数) 既定値は 4.0 です。 |
HOLDOUT_PERCENTAGE |
提示されたエラーの計算に使用するトレーニング データ内のケースの割合を指定します。この割合は、マイニング モデルのトレーニング中に停止条件の一部として使用されます。 既定値は 30 です。 |
HOLDOUT_SEED |
提示されたデータをランダムに調べるときに使用する擬似乱数ジェネレータのシード値を指定します。このパラメータを 0 に設定すると、アルゴリズムによってマイニング モデルの名前に基づいたシードが生成され、再処理中にモデルのコンテンツが変更されることはありません。 既定値は 0 です。 |
MAXIMUM_INPUT_ATTRIBUTES |
機能選択を採用する前にアルゴリズムに指定できる入力属性の最大数を設定します。この値を 0 に設定すると、入力属性に対する機能の選択が無効になります。 既定値は 255 です。 |
MAXIMUM_OUTPUT_ATTRIBUTES |
機能選択を採用する前にアルゴリズムに指定できる出力属性の最大数を設定します。この値を 0 に設定すると、出力属性に対する機能の選択が無効になります。 既定値は 255 です。 |
MAXIMUM_STATES |
アルゴリズムによってサポートされる、属性ごとの不連続状態の最大数を指定します。特定の属性の状態の数がこのパラメータで指定した数を上回ると、アルゴリズムはその属性の最も一般的な状態を使用し、残りの状態を存在しない状態として扱います。 既定値は 100 です。 |
SAMPLE_SIZE |
モデルのトレーニングに使用するケースの数を指定します。アルゴリズムでは、この数と、HOLDOUT_PERCENTAGE パラメータで指定されたデータに含まれないケースの総数の割合のうち、いずれか小さい方が使用されます。 たとえば、HOLDOUT_PERCENTAGE が 30 に設定されている場合、アルゴリズムでは、このパラメータの値と、ケースの総数の 70% に相当する値のうち、いずれか小さい方が使用されます。 既定値は 10000 です。 |
参照
概念
データ マイニング アルゴリズム
データ マイニングでの機能の選択
データ マイニング ツールの使用
Microsoft ニューラル ネットワーク ビューアを使用したマイニング モデルの表示