マイニング モデルのフィルタの作成 (Analysis Services - データ マイニング)

データに基づくモデル フィルタは、マイニング構造内のデータのサブセットを使用するマイニング モデルを作成するのに役立ちます。フィルタを使用すると、包括的なデータ ソース ビューに基づいて 1 つのマイニング構造を作成できるため、マイニング構造とデータ ソースを柔軟に設計できます。つまり、さまざまなモデルのトレーニングとテストを行う場合に、データの各サブセットに対して個別の構造と関連モデルを作成する代わりに、データの一部だけを使用するためのフィルタを作成することができます。

たとえば、Customers テーブルと関連テーブルに、データ ソース ビューを定義します。次に、必要とするすべてのフィールドを含むマイニング構造を 1 つ定義します。最後に、Region などの特定の顧客属性に基づいてフィルタ処理されるモデルを作成します。その後、このモデルをコピーし、フィルタ条件を変更するだけで、別の地域に基づく新しいモデルを生成できます。

この機能が役立つ実際的なシナリオには、次のような場合があります。

  • 性別や地域など、複数の不連続値に対して個別のモデルを作成する場合。たとえば、衣料品店では、1 つのデータ ソースにすべての顧客の売上データが含まれていても、顧客の統計区分を使用して性別に基づく個別のモデルを作成できます。

  • 20 ~ 30 才、20 ~ 40 才、20 ~ 25 才など、同じデータの複数のグループ分けを作成およびテストして、モデルを試す場合。

  • 特定の品目を 2 個以上購入した顧客のケースのみをモデルに含めるようにするなど、入れ子になったテーブルの内容に複雑なフィルタを指定する場合。

ここでは、マイニング モデルのフィルタを作成、使用、および管理する方法について説明します。

モデル フィルタの作成

フィルタは、次の方法で作成および適用できます。

  • データ マイニング デザイナの [マイニング モデル] タブで、フィルタ エディタのダイアログ ボックスを利用して条件を作成します。

  • マイニング モデルの Filter プロパティにフィルタ式を直接入力します。

  • AMO を使用して、モデルのフィルタ条件をプログラムによって設定します。

データ マイニング デザイナによるモデル フィルタの作成

データ マイニング デザイナでは、マイニング モデルの Filter プロパティを変更することによってモデルをフィルタ処理します。[プロパティ] ペインにフィルタ式を直接入力することも、フィルタのダイアログ ボックスを開いて条件を作成することもできます。

フィルタのダイアログ ボックスは 2 つあります。最初のダイアログ ボックスでは、ケース テーブルに適用する条件を作成できます。データ ソースに複数のテーブルが含まれる場合は、まずテーブルを選択してから列を選択し、その列に適用する演算子と条件を指定します。AND 演算子または OR 演算子を使用すると、複数の条件を結合できます。値の定義に使用できる演算子は、列に含まれている値が不連続値か連続値かによって異なります。たとえば、連続値には、greater than 演算子および less than 演算子を使用できます。一方、不連続値に対しては、= (equal to) 演算子、!= (not equal to) 演算子、および is null 演算子のみを使用できます。

注意注意

LIKE キーワードはサポートされません。複数の不連続属性を含める場合は、個々の条件を作成し、それらを OR 演算子で結合する必要があります。

条件が複雑な場合、2 番目のフィルタ ダイアログ ボックスを使用して、一度に 1 つのテーブルを処理するように設定できます。2 番目のフィルタ ダイアログ ボックスを閉じると、式が評価された後、ケース テーブルの他の列で設定されたフィルタ条件と結合されます。

入れ子になったテーブルに対するフィルタの作成

入れ子になったテーブルがデータ ソース ビューに含まれている場合は、2 番目のフィルタ ダイアログ ボックスを使用して、入れ子になったテーブル内の行に対する条件を作成できます。

たとえば、顧客に関連したケース テーブルがあり、入れ子になったテーブルに顧客が購入した製品が表示されている場合、入れ子になったテーブルのフィルタで [ProductName]='Water Bottle' OR ProductName='Water Bottle Cage' という構文を使用すると、特定の品目を購入した顧客を選択するフィルタを作成できます。

また、EXISTS または NOT EXISTS のキーワードとサブクエリを使用すると、入れ子になったテーブルに特定の値があるかどうかに基づいてフィルタ処理を行うことができます。これにより、EXISTS (SELECT * FROM Products WHERE ProductName='Water Bottle') のような条件を作成できます。入れ子になったテーブルに値 Water Bottle を持つ行が 1 つ以上含まれている場合、EXISTS SELECT(<subquery>) から true が返されます。

ケース テーブルに対する条件と入れ子になったテーブルに対する条件は、結合することができます。たとえば、次の構文には、ケース テーブルに対する条件 (Age > 30)、入れ子になったテーブルに対するサブクエリ (EXISTS (SELECT * FROM Products))、および入れ子になったテーブルに対する複数の条件 (WHERE ProductName=’Milk’ AND Quantity>2) が含まれています。

(Age > 30 AND EXISTS (SELECT * FROM Products WHERE ProductName=’Milk’  AND Quantity>2) )

フィルタの作成が完了したら、Analysis Services によってフィルタ テキストが評価され、DMX 式に変換された後、モデルと共に保存されます。

Business Intelligence Development Studio のフィルタ ダイアログ ボックスの使用方法については、「マイニング モデルにフィルタを適用する方法」を参照してください。

マイニング モデルのフィルタの管理

データに基づくモデル フィルタを使用すると、同一の構造に基づく複数のモデルを簡単に作成できるため、マイニング構造とマイニング モデルの管理作業が大幅に簡素化されます。既存のマイニング モデルをすばやくコピーして、フィルタ条件だけを変更することもできます。モデル フィルタの管理に関する注意事項は次のとおりです。

  • モデルに適用されるフィルタを特定するには、マイニング モデルの Filter プロパティを確認します。

  • モデルの名前は、フィルタの内容を反映した名前に変更できます。こうすると、関連する複数のモデルどうしを区別しやすくなります。

  • フィルタ式はスクリプトとして保存され、関連付けられたマイニング モデルまたは入れ子になったテーブルと共に格納されます。フィルタ テキストを削除した場合、復元するにはフィルタ式を手動で再作成するしかありません。このため、複雑なフィルタ式を作成する場合は、フィルタ テキストのバックアップ コピーを作成することをお勧めします。

  • フィルタ式の変更や追加を行った場合、フィルタの効果を確認するには、構造およびモデルを再処理する必要があります。

フィルタ構文の詳細およびフィルタ式の例については、「モデル フィルターの構文と例 (Analysis Services - データ マイニング)」を参照してください。

マイニング モデルのテスト時にモデル フィルタを使用する方法については、「マイニング モデルの精度の測定 (Analysis Services - データ マイニング)」を参照してください。