ニューラル ネットワーク構造およびモデルの作成 (中級者向けデータ マイニング チュートリアル)
データ マイニング モデルを作成するには、まずデータ マイニング ウィザードを使用して、新しいデータ ソース ビューに基づく新しいマイニング構造を作成する必要があります。 このタスクでは、ウィザードを使用してマイニング構造を作成すると同時に、Microsoft ニューラル ネットワーク アルゴリズムに基づく関連するマイニング モデルを作成します。
ニューラル ネットワークは高い柔軟性を持ち、さまざまな入力と出力の組み合わせを分析できるため、最良の結果を得るためにはいくつかのデータ処理方法を試す必要があります。 たとえば、特定のビジネス要件を対象として、サービス品質の数値ターゲットを ビン分割またはグループ化する方法をカスタマイズできます。 そのためには、数値データを別の方法でグループ化する新しい列をマイニング構造に追加して、その新しい列を使用するモデルを作成します。 その後、それらのマイニング モデルを使用して探索を行います。
実務上の目的に最も大きい影響を与える要因がニューラル ネットワーク モデルからわかったら、最後に、予測およびスコアリングのための別のモデルを作成します。 Microsoft ロジスティック回帰アルゴリズムを使用します。これはニューラル ネットワーク モデルに基づいていますが、特定の入力に基づいてソリューションを検索するために最適化されています。
手順
既定のコール センター構造を作成する
SQL Server Data Tools (SSDT) のソリューション エクスプローラーで、[マイニング構造] を右クリックし、[新しいマイニング構造] を選択します。
[データ マイニング ウィザードへようこそ] ページで [次へ]をクリックします。
[ 定義方法の選択 ] ページで、[ 既存のリレーショナル データベースまたはデータ ウェアハウスから ] が選択されていることを確認し、[ 次へ] をクリックします。
[ データ マイニング構造の作成] ページで 、[ マイニング モデルを使用してマイニング構造を作成 する] オプションが選択されていることを確認します。
[ 使用するデータ マイニング手法] オプションのドロップダウン リストをクリックし、[ Microsoft ニューラル ネットワーク] を選択します。
ロジスティック回帰モデルはニューラル ネットワークに基づくため、同じ構造を再利用して新しいマイニング モデルを追加できます。
[次へ] をクリックします。
[ データ ソース ビューの選択] ページが表示されます。
[ 使用可能なデータ ソース ビュー] で を選択
Call Center
し、[ 次へ] をクリックします。[テーブルの種類の指定] ページで、FactCallCenter テーブルの横にある [Case チェック] ボックスを選択します。 DimDate には何も選択しないでください。 [次へ] をクリックします。
[トレーニング データの指定] ページで、列 FactCallCenterID の横にある [キー] を選択します。
[入力]
Predict
ボックスと [入力チェック] ボックスを選択します。次の表に示すように、[キー]、[入力]、[
Predict
チェック] ボックスを選択します。テーブルまたは列 [キー]/[入力]/[予測] AutomaticResponses 入力 AverageTimePerIssue [入力]/[予測] 呼び出し 入力 DateKey 使用しない DayOfWeek 入力 FactCallCenterID キー IssuesRaised 入力 LevelOneOperators [入力]/[予測] LevelTwoOperators 入力 Orders [入力]/[予測] ServiceGrade [入力]/[予測] Shift キー 入力 TotalOperators 使用しない WageType 入力 予測可能列が複数選択されていることに注意してください。 ニューラル ネットワーク アルゴリズムには、入力属性と出力属性のあらゆる組み合わせを分析できるという利点があります。 処理時間が指数関数的に増加する可能性があるため、大規模なデータ セットではこれを行いたくありません。
[ 列のコンテンツとデータ型の指定 ] ページで、次の表に示すように、グリッドに列、コンテンツ タイプ、およびデータ型が含まれていることを確認し、[ 次へ] をクリックします。
[列] コンテンツ タイプ データ型 AutomaticResponses 継続的 Long AverageTimePerIssue 継続的 Long 呼び出し 継続的 Long DayOfWeek 離散 Text FactCallCenterID キー Long IssuesRaised 継続的 Long LevelOneOperators 継続的 Long LevelTwoOperators 継続的 Long Orders 継続的 Long ServiceGrade 継続的 Double Shift キー 離散 Text WageType 離散 Text [ テスト セットの作成 ] ページで、[テスト用 のデータの割合] オプションのテキスト ボックスをオフにします。 [次へ] をクリックします。
[ ウィザードの完了 ] ページで、[ マイニング構造名] に「」と入力します
Call Center
。[ マイニング モデル名] に「」と入力
Call Center Default NN
し、[完了] をクリック します。ニューラル ネットワーク モデル を使用して データをドリルスルーできないため、[ドリル スルーを許可する] ボックスは無効になっています。
ソリューション エクスプローラーで、先ほど作成したデータ マイニング構造の名前を右クリックし、[プロセス] を選択します。
分離を使用して対象列をビン分割する
既定では、予測可能な数値属性を持つニューラル ネットワーク モデルを作成したとき、Microsoft ニューラル ネットワーク アルゴリズムではその属性は連続する数値として扱われます。 たとえば、ServiceGrade 属性は、理論上は 0.00 (すべての電話に応答している状態) ~ 1.00 (すべての発信元が電話を切っている状態) の範囲の数値です。 このデータセットにおいて、数値の分布は次のようになります。
その結果、モデルを処理したときに、その出力が期待どおりにグループ化されないことがあります。 たとえば、クラスタリングを使用して最適な値グループを識別する場合、アルゴリズムは ServiceGrade の値を次のような範囲に分割します(0.0748051948 - 0.09716216215)。 この分類は数学的には正確ですが、このような範囲がビジネス ユーザーにとって有意なものではない場合もあります。
この手順では、結果をより直感的にするために、数値を異なる方法でグループ化し、数値データ列のコピーを作成します。
分離のしくみ
Analysis Services には、数値データのビン分割や処理のためのさまざまな方法が用意されています。 次の表は、出力属性 ServiceGrade を次の 3 とおりの方法で処理した場合の結果の違いを示しています。
連続する数値として処理する。
アルゴリズムでクラスタリングを使用して値の最適な分配を特定する。
Equal Areas メソッドを使用して数値をビン分割することを指定する。
既定のモデル (連続)
値 | SUPPORT |
---|---|
Missing | 0 |
0.09875 | 120 |
クラスタリングによるビン分割
値 | SUPPORT |
---|---|
< 0.0748051948 | 34 |
0.0748051948 - 0.09716216215 | 27 |
0.09716216215 - 0.13297297295 | 39 |
0.13297297295 - 0.167499999975 | 10 |
>= 0.167499999975 | 10 |
Equal Areas メソッドによるビン分割
値 | SUPPORT |
---|---|
< 0.07 | 26 |
0.07 - 0.00 | 22 |
0.09 - 0.11 | 36 |
>= 0.12 | 36 |
Note
これらの統計は、すべてのデータが処理された後のモデルのマージナル統計ノードから取得できます。 限界統計ノードの詳細については、「 ニューラル ネットワーク モデルのマイニング モデル コンテンツ (Analysis Services - データ マイニング)」を参照してください。
この表の "値" 列には、ServiceGrade の数値がどのように処理されたかが示されています。 "サポート" 列には、その値またはその範囲に分類されたケースの数が示されています。
連続する数値の使用 (既定)
既定の方法を使用した場合、120 個の一意の値の結果が計算され、その平均値は 0.09875 になります。 また、不足値の数も確認できます。
クラスタリングによるビン分割
Microsoft クラスタリング アルゴリズムでオプションの値のグループを特定する場合、ServiceGrade の値が 5 つの範囲にグループ化されます。 "サポート" 列に示されているように、それぞれの範囲に分配されるケースの数は均等にはなりません。
等しい領域によるビン分割
この方法を選択した場合、等しいサイズのバケットに値が分配されてから、各範囲の上限と下限が変更されます。 バケットの数は指定できますが、それぞれのバケットに含まれる値の数が数個だけにならないようにしてください。
ビン分割オプションの詳細については、「 分離メソッド (データ マイニング)」を参照してください。
または、数値を使用するのではなく、サービス グレードを定義済みのターゲット範囲に分類する別の派生列 ( Best (ServiceGrade <= 0.05)、 Acceptable (0.10 > ServiceGrade > 0.05)、 Poor (ServiceGrade >= 0.10) など) を追加することもできます。
列のコピーを作成し、分離メソッドを変更する
ターゲット属性 ServiceGrade を含むマイニング列のコピーを作成し、数値のグループ化方法を変更します。 予測可能な属性を含め、マイニング構造の任意の列の複数のコピーを作成することができます。
このチュートリアルでは、Equal Areas 分離メソッドを使用して、バケット数を 4 に指定します。 結果のグループ化は、ビジネス ユーザーの興味の対象となるターゲット値に非常に近いものになります。
マイニング構造の列のカスタマイズされたコピーを作成するには
ソリューション エクスプローラーで、作成したマイニング構造をダブルクリックします。
[マイニング構造] タブで、[ マイニング構造列の追加] をクリックします。
[ 列の選択 ] ダイアログ ボックスで、[ソース] 列の一覧から [ServiceGrade] を選択し、[OK] をクリック します。
マイニング構造列の一覧に新しい列が追加されます。 新しいマイニング列の既定の名前は、元の列と同じ名前に数値の接尾辞を付けたものです (例 : ServiceGrade 1)。 この列の名前を、よりわかりやすい名前に変更します。
分離メソッドも指定します。
[ServiceGrade 1] を右クリックし、[プロパティ] を選択 します。
[ プロパティ ] ウィンドウで、 Name プロパティを見つけて、名前を [サービス グレードのビン分割] に変更します。
関連するすべてのマイニング モデル列の名前を同じように変更するかどうかを確認するダイアログ ボックスが表示されます。 [いいえ] をクリックします。
[ プロパティ ] ウィンドウで、[ データ型 ] セクションを見つけて、必要に応じて展開します。
Content
プロパティの値をContinuous
からDiscretized
に変更します。次のプロパティを使用できるようになりました。 次の表に従ってプロパティの値を変更します。
プロパティ 既定値 新しい値 DiscretizationMethod
Continuous
EqualAreas
DiscretizationBucketCount
値なし 4 注意
DiscretizationBucketCount の既定値は実際は 0 です。これは、最適なバケット数がアルゴリズムによって自動的に決定されることを表します。 したがって、このプロパティの値を既定値に戻すには、「0」と入力します。
[データ マイニング] Designerで、[マイニング モデル] タブをクリックします。
マイニング構造列のコピーを追加すると、そのコピーの使用法フラグが自動的に
Ignore
に設定されます。 マイニング構造に列のコピーを追加する場合、通常は、そのコピーを元の列と一緒に分析に使用することはありません。一緒に使用すると、アルゴリズムでその 2 つの列の間に強力な相関関係が検出されて、他の関係がわかりにくくなってしまう可能性があります。
新しいマイニング モデルをマイニング構造に追加する
対象となる属性の新しいグループ化を作成できたら、次に、その離散化列を使用する新しいマイニング モデルを追加する必要があります。 この手順が完了すると、CallCenter マイニング構造に次の 2 つのマイニング モデルが含まれるようになります。
ServiceGrade 値を連続する範囲として処理するマイニング モデル Call Center Default NN
同じサイズの 4 つのバケットに分散された ServiceGrade 列の値をターゲットの結果として使用する新しいマイニング モデル Call Center Binned NN を作成します。
新しい離散化列に基づくマイニング モデルを追加するには
ソリューション エクスプローラーで、先ほど作成したマイニング構造を右クリックし、[開く] を選択します。
[マイニング モデル] タブをクリックします。
[ 関連するマイニング モデルの作成] をクリックします。
[ 新しいマイニング モデル ] ダイアログ ボックスの [ モデル名] に「」と入力します
Call Center Binned NN
。 [ アルゴリズム名 ] ドロップダウン リストで、[ Microsoft ニューラル ネットワーク] を選択します。新しいマイニング モデルに含まれる列の一覧で ServiceGrade を見つけて、使用法を
Predict
からIgnore
に変更します。同様に、ServiceGrade Binned を見つけて、使用法を
Ignore
からPredict
に変更します。
対象列の別名を作成する
通常は、別の予測可能な属性を使用するマイニング モデルを比較することはできませんが、 マイニング モデル列の別名を作成することができるため、 つまり、マイニング モデル内で列 ServiceGrade Binned の名前を変更して、元の列と同じ名前にすることができます。 データが別の方法で分離されていても、この 2 つのモデルを精度チャートで直接比較することができます。
マイニング モデルにマイニング構造列の別名を追加するには
[ マイニング モデル ] タブの [ 構造] で、[ServiceGrade Binned] を選択します。
[プロパティ] ウィンドウには、オブジェクト ScalarMiningStructure 列のプロパティが表示されます。
マイニング モデル ServiceGrade Binned NN の列で、ServiceGrade Binned 列に対応するセルをクリックします。
[ プロパティ ] ウィンドウに、オブジェクト MiningModelColumn のプロパティが表示されます。
Name プロパティを見つけて、値を に
ServiceGrade
変更します。Description プロパティを見つけて、「Temporary column alias」と入力します。
[ プロパティ ] ウィンドウには、次の情報が含まれている必要があります。
プロパティ 値 説明 Temporary column alias ID ServiceGrade Binned ModelingFlags 名前 Service Grade SourceColumn ID Service Grade 1 使用方法 Predict [ マイニング モデル ] タブの任意の場所をクリックします。
グリッドが更新され、列の使用法の横に新
ServiceGrade
しい一時列の別名 が表示されます。 マイニング構造と 2 つのマイニング モデルを含むグリッドは次のようになります。構造体 Call Center Default NN Call Center Binned NN Microsoft ニューラル ネットワーク Microsoft ニューラル ネットワーク AutomaticResponses 入力 入力 AverageTimePerIssue Predict Predict 呼び出し 入力 入力 DayOfWeek 入力 入力 FactCallCenterID キー キー IssuesRaised 入力 入力 LevelOneOperators 入力 入力 LevelTwoOperators 入力 入力 Orders 入力 入力 ServiceGrade Binned Ignore Predict (ServiceGrade) ServiceGrade Predict Ignore Shift キー 入力 入力 Total Operators 入力 入力 WageType 入力 入力
すべてのモデルを処理する
最後に、作成したモデルを簡単に比較できるように、既定のモデルとビン分割モデルのシード パラメーターを設定します。 シード値を設定すると、各モデルで同じポイントからデータの処理が開始されるようになります。
注意
シード パラメーターに数値を指定しなかった場合は、SQL Server Analysis Services により、モデルの名前に基づいてシードが生成されます。 モデルには必ず異なる名前が付けられるため、データが同じ順序で処理されるようにするにはシード値を設定する必要があります。
シードを指定してモデルを処理するには
[ マイニング モデル ] タブで、Call Center - LR という名前のモデルの列を右クリックし、[ アルゴリズム パラメーターの設定] を選択します。
HOLDOUT_SEED パラメーターの行で、[ 値] の下にある空のセルをクリックし、「」と入力します
1
。 [OK] をクリックします。 構造に関連付けられている各モデルに対してこの手順を繰り返します。Note
関連するすべてのモデルで同じシードを使用する限り、シードとしてどのような値を選択するかは特に重要ではありません。
[ マイニング モデル ] メニューの [ プロセス マイニング構造] と [すべてのモデル] を選択します。 [ はい ] をクリックして、更新されたデータ マイニング プロジェクトをサーバーにデプロイします。
[ マイニング モデルの処理 ] ダイアログ ボックスで、[ 実行] をクリックします。
[閉じる] をクリックして [プロセスの進行状況] ダイアログ ボックスを閉じ、[プロセス マイニング モデル] ダイアログ ボックスでもう一度 [閉じる] をクリックします。
関連する 2 つのマイニング モデルを作成できたので、データを探索してデータの関係を見つけることができます。
このレッスンの次の作業
コール センター モデルの検証 (中級者向けデータ マイニング チュートリアル)