マイニング モデルでの入れ子になったテーブルのフィルター処理 (中級者向けデータ マイニング チュートリアル)

 

対象: SQL Server 2016 Preview

モデルの作成と検証が完了したら、顧客データのサブセットに焦点を絞ります。 たとえば、特定の品目が入っているバスケットのみを分析したり、一定期間に何も購入しなかった顧客の人口統計を分析したりすることができます。

Analysis Services マイニング モデルで使用されているデータをフィルター処理する機能を提供します。 別のデータを使用する新しいデータ ソース ビューを設定する必要がないために、この機能の使用をお勧めします。 「基本的なデータ マイニング チュートリアル」では、ケース テーブルに条件を適用することでフラット テーブルのデータをフィルター処理する方法について学習しました。 ここでは、入れ子になったテーブルに適用するフィルターを作成します。

入れ子になったテーブルとケース テーブルでのフィルターの違い

データ ソース ビューにケース テーブルと入れ子になったテーブルが含まれている場合は、アソシエーション モデルで使用されているデータ ソース ビューと同様に、ケース テーブルの値、入れ子になったテーブルでの値の有無、または両方の組み合わせをフィルター処理できます。

ここでは、まずアソシエーション モデルのコピーを作成し、関連する新しいモデルに IncomeGroup 属性と Region 属性を追加して、ケース テーブルでこれらの属性をフィルター処理できるようにします。

アソシエーション モデルのコピーを作成して変更するには

  1. マイニング モデル タブ SQL Server Data Tools (SSDT), を右クリックし、 アソシエーション をモデル化し、選択 新しいマイニング モデルします。

  2. モデル名, 、型 Association Filteredします。 アルゴリズム名, [ Microsoft アソシエーション ルールします。 **[OK]**をクリックします。

  3. [Association Filtered モデルの列で、[incomegroup] 行] をクリックし、値から変更 無視入力します。

次に、新しいアソシエーション モデルでケース テーブルに対してフィルターを作成します。 このフィルターでは、対象の地域または収入レベルの顧客のみがモデルに渡されます。 さらに、買い物かごに 1 つ以上の品目が入っていた顧客のみがモデルで使用されるように指定する 2 番目のフィルター条件を追加します。

マイニング モデルにフィルターを追加するには

  1. マイニング モデル ] タブで、Association Filtered、モデルを右クリックし、選択 モデル フィルターの設定します。

  2. [モデル フィルター] ダイアログ ボックスで、[マイニング構造列] ボックスのグリッドの先頭行をクリックします。

  3. マイニング構造列 テキスト ボックスで、[IncomeGroup します。

テキスト ボックスの左側のアイコンが変化して、選択されたアイテムが列であることが示されます。  
  1. クリックして、 演算子 テキスト ボックスを選択、 = 、一覧から演算子。

  2. クリックして、 テキスト ボックス、および種類 ボックス。

  3. グリッドの次の行をクリックします。

  4. クリックして、 し、グリッドの次の行のテキスト ボックス またはです。

  5. マイニング構造列 テキスト ボックスで、[IncomeGroup します。 テキスト ボックスに「 中程度します。

作成したフィルター条件が自動的に追加、 **式** テキスト ボックスと、次のように表示する必要があります。  

`[IncomeGroup] = 'High' OR [IncomeGroup] = 'Moderate'`  
  1. 指定しない限り、演算子のままにしてグリッドに次の行をクリックして ANDします。

  2. 演算子, 、既定値をそのまま Containsします。 クリックして、 テキスト ボックスです。

  3. フィルター ダイアログ ボックスの下の最初の行で マイニング構造列, [ モデルします。

  4. 演算子, [ IS NOT NULLします。 ままにして、 ボックスは空白です。 **[OK]**をクリックします。

フィルター条件、 **式** のテキスト ボックス、 **モデル フィルター** を入れ子になったテーブルに新しい条件を含める] ダイアログ ボックスが自動的に更新します。 完成した式は次のようになります。  

`[IncomeGroup] = 'High' OR [IncomeGroup] = 'Moderate' AND EXISTS SELECT * FROM [vAssocSeqLineItems] WHERE [Model] <> NULL).`  
  1. **[OK]**をクリックします。``

ドリルスルーを有効にして、フィルター選択されたモデルを処理するには

  1. マイニング モデル ] タブで、右クリックし、 Association Filtered をモデル化し、選択 プロパティします。

  2. 変更、 AllowDrillThrough プロパティを Trueします。

  3. 右クリックし、 Association Filtered マイニング モデル、および選択 プロセス モデルします。

  4. をクリックして はい に新しいモデルを配置するエラー メッセージに、 Analysis Services データベースです。

  5. マイニング構造の処理 ] ダイアログ ボックスをクリックして 実行します。

  6. 処理が完了するとクリックして 閉じる を終了する、 処理の進行状況 ] ダイアログ ボックスをクリック 閉じる を終了するには、もう一度、 マイニング構造の処理 ] ダイアログ ボックス。

Microsoft 汎用コンテンツ ツリー ビューアーで NODE_SUPPORT の値を参照すると、フィルター選択されたモデルに含まれているケースの数が元のモデルよりも少ないことを確認できます。

解説

ここで作成した入れ子になったテーブルのフィルターでは、そのテーブルに少なくとも 1 つの行があるかどうかのみがチェックされますが、特定の製品の有無を確認するフィルター条件を作成することもできます。 たとえば、次のようなフィルターを作成できます。

[IncomeGroup] = 'High' AND  
 EXISTS (SELECT * FROM [<nested table name>] WHERE [Model] = 'Water Bottle' )   

このステートメントでは、ケース テーブルの顧客を水筒 (water bottle) の購入者のみに制限しています。 ただし、入れ子になったテーブルの属性数には制限がないため、Analysis Services では選択できる値の一覧が表示されません。 代わりに、値を正確に入力する必要があります。

クリックして クエリの編集 フィルター式を手動で変更します。 ただし、フィルター式の一部を手動で変更すると、グリッドが無効になり、その後はテキスト編集モードのみでフィルター式を操作する必要があります。 グリッド編集モードに戻すには、フィルター式を消去して最初からやり直す必要があります。

警告


入れ子になったテーブル フィルターで LIKE 演算子を使用することはできません。

このレッスンの次の作業

アソシエーション #40; 中級者向けデータ マイニング チュートリアル ) を予測します。

参照

モデル フィルターの構文と例 (Analysis Services - データ マイニング)
マイニング モデルのフィルター選択 (Analysis Services - データ マイニング)