ニューラル ネットワーク構造とモデルの作成 (中間データ マイニング チュートリアル)

データ マイニング モデルを作成するには、まずデータ マイニング ウィザードを使用して、新しいデータ ソース ビューに基づいて新しいマイニング構造を作成する必要があります。 このタスクでは、ウィザードを使用してマイニング構造を作成すると同時に、Microsoft ニューラル ネットワーク アルゴリズムに基づく関連するマイニング モデルを作成します。

ニューラル ネットワークは非常に柔軟であり、入力と出力の多くの組み合わせを分析できるため、最適な結果を得るには、データを処理するいくつかの方法を試す必要があります。 たとえば、サービス品質の数値ターゲットを ビン分割またはグループ化して、特定のビジネス要件をターゲットにする方法をカスタマイズできます。 これを行うには、別の方法で数値データをグループ化する新しい列をマイニング構造に追加し、新しい列を使用するモデルを作成します。 これらのマイニング モデルを使用して、いくつかの探索を行います。

最後に、ビジネスの質問に最も大きな影響を与える要因をニューラル ネットワーク モデルから学習したら、予測とスコアリング用に別のモデルを構築します。 ニューラル ネットワーク モデルに基づくが、特定の入力に基づいてソリューションを検索するために最適化された Microsoft ロジスティック回帰アルゴリズムを使用します。

手順

既定のマイニング構造とモデルを作成する

分離を使用して予測可能列をビン分割する

列をコピーし、別のモデルの分離方法を変更する

モデルを比較できるように、予測可能列のエイリアスを作成する

すべてのモデルを処理する

既定のコール センター構造を作成する

  1. SQL Server Data Tools (SSDT) のソリューション エクスプローラーで、[ マイニング構造 ] を右クリックし、[ 新しいマイニング構造] を選択します。

  2. [ データ マイニング ウィザードへようこそ ] ページで、[ 次へ] をクリックします。

  3. [ 定義方法の選択] ページで、[ 既存のリレーショナル データベースまたはデータ ウェアハウスから ] が選択されていることを確認し、[ 次へ] をクリックします。

  4. [ データ マイニング構造の作成 ] ページで、[ マイニング モデルを使用してマイニング構造を作成 する] オプションが選択されていることを確認します。

  5. [ どのデータ マイニング手法を使用しますか?] オプションのドロップダウン リストをクリックし、[ Microsoft ニューラル ネットワーク] を選択します。

    ロジスティック回帰モデルはニューラル ネットワークに基づいているため、同じ構造を再利用し、新しいマイニング モデルを追加できます。

  6. [次へ] をクリックします。

    [ データ ソース ビューの選択] ページが表示されます。

  7. [ 使用可能なデータ ソース ビュー] で Call Centerを選択し、[ 次へ] をクリックします。

  8. [テーブルの種類の指定] ページで、FactCallCenter テーブルの横にある [ケース] チェック ボックスをオンにします。 DimDate には何も選択しないでください。 [次へ] をクリックします。

  9. [トレーニング データの指定] ページで、FactCallCenterID 列の横にあるキーを選択します。

  10. [ Predict ] チェック ボックスと [ 入力] チェック ボックスをオンにします。

  11. 次の表に示すように、 キー、 入力、 Predict のチェック ボックスをオンにします。

    テーブル/列 キー/インプット/予測
    AutomaticResponses インプット
    1件あたりの平均時間 入力/予測
    通話 インプット
    日付キー 使用しない
    DayOfWeek インプット
    FactCallCenterID 鍵
    提起された問題 インプット
    LevelOneOperators 入力/予測
    レベルツーオペレーターズ インプット
    詻 入力/予測
    サービスグレード 入力/予測
    シフト インプット
    合計オペレーター数 使用しない
    賃金タイプ インプット

    複数の予測可能な列が選択されていることに注意してください。 ニューラル ネットワーク アルゴリズムの長所の 1 つは、入力属性と出力属性のすべての可能な組み合わせを分析できることです。 大規模なデータ セットでは、処理時間が指数関数的に増加する可能性があるため、これを行いたくありません。

  12. [ 列のコンテンツとデータ型の指定 ] ページで、次の表に示すように、グリッドに列、コンテンツ タイプ、およびデータ型が含まれていることを確認し、[ 次へ] をクリックします。

    列 コンテンツ タイプ データ型
    AutomaticResponses 継続的 長い
    1件あたりの平均時間 継続的 長い
    通話 継続的 長い
    DayOfWeek ディスクリート テキスト
    ファクトコールセンターID 鍵 長い
    提起された問題 継続的 長い
    LevelOneOperators 継続的 長い
    レベルツーオペレーターズ 継続的 長い
    詻 継続的 長い
    サービスグレード 継続的 ダブル
    シフト ディスクリート テキスト
    賃金タイプ ディスクリート テキスト
  13. [ テスト セットの作成 ] ページで、[テスト用の データの割合] オプションのテキスト ボックスをオフにします。 [次へ] をクリックします。

  14. [ ウィザードの完了 ] ページで、[ マイニング構造名] に「 Call Center」と入力します。

  15. [マイニング モデル名] に「Call Center Default NN」と入力し、[完了] をクリックします。

    ニューラル ネットワーク モデルを使用してデータをドリルスルーできないため、[ ドリルスルーを許可する ] ボックスは無効になっています。

  16. ソリューション エクスプローラーで、先ほど作成したデータ マイニング構造の名前を右クリックし、[ プロセス] を選択します。

離散化を使用してターゲット列をビニングする

既定では、予測可能な数値属性を持つニューラル ネットワーク モデルを作成すると、Microsoft ニューラル ネットワーク アルゴリズムによって属性が連続する数値として扱われます。 たとえば、ServiceGrade 属性は、理論的には 0.00 (すべての呼び出しに応答) から 1.00 (すべての呼び出し元がハングアップ) までの範囲の数値です。 このデータ セットでは、値には次の分布があります。

サービス グレード値の分布

その結果、モデルを処理すると、出力が予想とは異なる方法でグループ化される可能性があります。 たとえば、クラスタリングを使用して最適な値グループを識別する場合、アルゴリズムは ServiceGrade の値を次のような範囲に分割します。0.0748051948 - 0.09716216215。 このグループ化は数学的に正確ですが、このような範囲はビジネス ユーザーにとって意味がない可能性があります。

この手順では、結果をより直感的にするために、数値を異なる方法でグループ化し、数値データ列のコピーを作成します。

分離のしくみ

Analysis Services には、数値データをビン分割または処理するためのさまざまな方法が用意されています。 次の表は、出力属性 ServiceGrade が 3 つの異なる方法で処理された場合の結果の違いを示しています。

  • 連続する数値として扱います。

  • アルゴリズムを使用すると、クラスタリングを使用して値の最適な配置を特定できます。

  • Equal Areas 方法で数値をグループ化するよう指定します。

既定のモデル (連続)

価値 サポート
行方不明 0
0.09875 120

クラスタリングによるビン分割

価値 サポート
< 0.0748051948 34
0.0748051948 - 0.09716216215 二十七
0.09716216215 - 0.13297297295 39
0.13297297295 - 0.167499999975 10
>= 0.167499999975 10

等しい領域に分割する

価値 サポート
< 0.07 26
0.07 - 0.00 22
0.09 - 0.11 36
>= 0.12 36

注

これらの統計は、すべてのデータが処理された後で、モデルの限界統計ノードから取得できます。 限界統計ノードの詳細については、「 ニューラル ネットワーク モデルのマイニング モデル コンテンツ (Analysis Services - データ マイニング)」を参照してください。

この表の VALUE 列には、ServiceGrade の数値がどのように処理されたかが示されています。 [サポート] 列には、その値を持っていたケースの数、またはその範囲内に落ちたケースの数が表示されます。

  • 連続番号を使用する (既定値)

    既定の方法を使用した場合、アルゴリズムは 120 個の個別の値 (平均値は 0.09875) の結果を計算します。 欠損値の数を確認することもできます。

  • クラスタリングによるビンの分類

    Microsoft クラスタリング アルゴリズムでオプションの値のグループ化を決定すると、アルゴリズムは ServiceGrade の値を 5 つの範囲にグループ化します。 サポート列からわかるように、各範囲のケースの数は均等に分散されません。

  • 等しい領域によるビン分割

    この方法を選択すると、アルゴリズムによって値が等しいサイズのバケットに強制されます。これにより、各範囲の上限と下限が変更されます。 バケットの数は指定できますが、どのバケットにも 2 つの値を含めないようにする必要があります。

ビン分割オプションの詳細については、「 分離メソッド (データ マイニング)」を参照してください。

または、数値を使用するのではなく、サービス グレードを定義済みのターゲット範囲 ( Best (ServiceGrade <= 0.05)、 Acceptable (0.10 > ServiceGrade > 0.05)、 Poor (ServiceGrade >= 0.10) に分類する別の派生列を追加することもできます。

列のコピーを作成し、分離メソッドを変更する

ターゲット属性 ServiceGrade を含むマイニング列のコピーを作成し、数値のグループ化方法を変更します。 マイニング構造内の任意の列の複数のコピー (予測可能な属性を含む) を作成できます。

このチュートリアルでは、分離の Equal Areas メソッドを使用し、4 つのバケットを指定します。 この方法によって得られたグループ化は、ビジネス ユーザーにとって関心のあるターゲット値にかなり近くなります。

マイニング構造で列のカスタマイズされたコピーを作成するには

  1. ソリューション エクスプローラーで、先ほど作成したマイニング構造をダブルクリックします。

  2. [マイニング構造] タブで、[ マイニング構造列の追加] をクリックします。

  3. [ 列の選択 ] ダイアログ ボックスで、[ソース] 列の一覧から [ServiceGrade] を選択し、[OK] をクリック します。

    マイニング構造列の一覧に新しい列が追加されます。 既定では、新しいマイニング列の名前は既存の列と同じで、数値の後置が付けられます (例: ServiceGrade 1)。 この列の名前をよりわかりやすいものに変更できます。

    分離方法も指定します。

  4. ServiceGrade 1 を右クリックし、[ プロパティ] を選択します。

  5. [ プロパティ ]ウィンドウで、[名前] プロパティを探し、名前を [サービス グレード ビンド] に変更します。

  6. 関連するすべてのマイニング モデル列の名前に同じ変更を加えるかどうかを確認するダイアログ ボックスが表示されます。 [いいえ] をクリックします。

  7. [ プロパティ ] ウィンドウで、[ データ型 ] セクションを見つけて、必要に応じて展開します。

  8. プロパティ Content の値を Continuous から Discretized に変更します。

    次のプロパティを使用できるようになりました。 次の表に示すように、プロパティの値を変更します。

    プロパティ 既定値 新しい値
    DiscretizationMethod Continuous EqualAreas
    DiscretizationBucketCount 値なし 4

    注

    DiscretizationBucketCountの既定値は実際には 0 です。つまり、アルゴリズムによって最適なバケット数が自動的に決定されます。 したがって、このプロパティの値を既定値にリセットする場合は、「0」と入力します。

  9. データ マイニング デザイナーで、[ マイニング モデル ] タブをクリックします。

    マイニング構造列のコピーを追加すると、コピーの使用フラグが自動的に Ignoreに設定されます。 通常、列のコピーをマイニング構造に追加する場合、元の列と一緒に分析に使用しない方がよいです。そうしないと、アルゴリズムにより両方の列間に強い相関関係が見つかり、他の関係性が隠れる可能性があります。

マイニング構造に新しいマイニング モデルを追加する

ターゲット属性の新しいグループ化を作成したら、分離された列を使用する新しいマイニング モデルを追加する必要があります。 完了すると、CallCenter マイニング構造には次の 2 つのマイニング モデルがあります。

  • マイニング モデルのコール センターの既定の NN は、ServiceGrade 値を連続範囲として処理します。

  • 同じサイズの 4 つのバケットに分散された ServiceGrade 列の値をターゲットの結果として使用する新しいマイニング モデルである Call Center Binned NN を作成します。

新しい分離列に基づいてマイニング モデルを追加するには

  1. ソリューション エクスプローラーで、先ほど作成したマイニング構造を右クリックし、[ 開く] を選択します。

  2. [ マイニング モデル ] タブをクリックします。

  3. [ 関連するマイニング モデルの作成] をクリックします。

  4. [ 新しいマイニング モデル ] ダイアログ ボックスで、[ モデル名] に「 Call Center Binned NN」と入力します。 [ アルゴリズム名 ] ドロップダウン リストで、[ Microsoft ニューラル ネットワーク] を選択します。

  5. 新しいマイニング モデルに含まれる列の一覧で ServiceGrade を見つけ、使用状況を Predict から Ignore に変更します。

  6. 同様に、ServiceGrade Binned を見つけて、使用状況を Ignore から Predict に変更します。

ターゲット列のエイリアスを作成する

通常、異なる予測可能な属性を使用するマイニング モデルを比較することはできません。 ただし、マイニング モデル列のエイリアスを作成することはできます。 つまり、マイニング モデル内の列 ServiceGrade Binned の名前を変更して、元の列と同じ名前にすることができます。 その後、データの分離が異なる場合でも、精度グラフでこれら 2 つのモデルを直接比較できます。

マイニング モデルでマイニング構造列のエイリアスを追加するには

  1. [ マイニング モデル ] タブの [ 構造] で、[ServiceGrade Binned] を選択します。

    [プロパティ] ウィンドウには、オブジェクトの ScalarMiningStructure 列のプロパティが表示されることに注意してください。

  2. マイニングモデルの [ServiceGrade Binned NN] 列の下にある、ServiceGrade Binned 列に対応するセルをクリックしてください。

    [プロパティ] ウィンドウにオブジェクト MiningModelColumn のプロパティが表示されます。

  3. Name プロパティを見つけて、値を ServiceGrade に変更します。

  4. Description プロパティを探し、「Temporary column alias」と入力します。

    [プロパティ] ウィンドウには、次の情報が含まれている必要があります。

    プロパティ 価値
    説明 一時列の別名
    身分証明書 サービスグレード分類済み
    モデリング フラグ
    名前 サービス グレード
    SourceColumn ID サービス グレード 1
    使用方法 予言する
  5. [ マイニング モデル ] タブの任意の場所をクリックします。

    グリッドが更新され、列の使用法の横に新しい一時列のエイリアス ( ServiceGrade) が表示されます。 マイニング構造と 2 つのマイニング モデルを含むグリッドは、次のようになります。

    構造 コールセンターのデフォルトNN コールセンターの分類 NN
    Microsoft ニューラル ネットワーク Microsoft ニューラル ネットワーク
    AutomaticResponses インプット インプット
    1件あたりの平均時間 予言する 予言する
    通話 インプット インプット
    DayOfWeek インプット インプット
    FactCallCenterID 鍵 鍵
    提起された問題 インプット インプット
    LevelOneOperators インプット インプット
    レベルツーオペレーターズ インプット インプット
    詻 インプット インプット
    ServceGrade Binned 不問に付す Predict (ServiceGrade)
    サービスグレード 予言する 不問に付す
    シフト インプット インプット
    合計演算子 インプット インプット
    賃金タイプ インプット インプット

すべてのモデルを処理する

最後に、作成したモデルを簡単に比較できるように、既定のモデルと区分化されたモデルの両方にシードパラメーターを設定します。 シード値を設定すると、各モデルが同じポイントからデータの処理を開始することが保証されます。

注

シード パラメーターに数値を指定しない場合、SQL Server Analysis Services はモデルの名前に基づいてシードを生成します。 モデルの名前は常に異なるため、データが同じ順序で処理されるようにシード値を設定する必要があります。

シードを指定してモデルを処理するには

  1. [ マイニング モデル ] タブで、Call Center - LR という名前のモデルの列を右クリックし、[ アルゴリズム パラメーターの設定] を選択します。

  2. HOLDOUT_SEED パラメーターの行で、[ 値] の下にある空のセルをクリックし、「 1」と入力します。 OK をクリックします。 構造に関連付けられている各モデルに対して、この手順を繰り返します。

    注

    すべての関連モデルに同じシードを使用する限り、シードとして選択する値は関係ありません。

  3. [ マイニング モデル ] メニューの [ マイニング構造の処理] と [すべてのモデル] を選択します。 更新されたデータ マイニング プロジェクトをサーバーに配置するには、[ はい ] をクリックします。

  4. [ マイニング モデルの処理 ] ダイアログ ボックスで、[ 実行] をクリックします。

  5. [閉じる] をクリックして [プロセスの進行状況] ダイアログ ボックスを閉じ、[プロセス マイニング モデル] ダイアログ ボックスでもう一度 [閉じる] をクリックします。

2 つの関連するマイニング モデルを作成したら、データを探索してデータ内のリレーションシップを検出します。

このレッスンの次の作業

コール センター モデルの探索 (中間データ マイニング チュートリアル)

こちらもご覧ください

マイニング構造 (Analysis Services - データ マイニング)