次の方法で共有


不足値 (Analysis Services - データ マイニング)

欠損値を正しく処理することは、効果的なモデリングの重要な部分です。 このセクションでは、欠損値について説明し、データ マイニング構造とマイニング モデルを構築するときに欠損値を処理するために Analysis Services で提供される機能について説明します。

データ マイニングにおける不足値の定義

不足値は、さまざまな状況を表します。 たとえば、フィールドが該当しなかった、イベントが発生しなかった、データを使用できなかった、 データの入力者が正しい値を知らなかった、入力者がフィールドにデータが入力されていなくてもかまわないと考えた、などです。

一方、不足値が重要な情報を提供するデータ マイニング シナリオが数多く存在します。 このように、不足値の意味は文脈によって大きく異なります。 たとえば、請求書の一覧で日付が不足値である場合と、従業員の雇用開始日を示す列の日付が欠落している場合とでは、大きな意味の違いがあります。 一般に、Analysis Services は欠損値を有益として扱い、欠損値を計算に組み込むように確率を調整します。 これにより、既存のケースに偏ったモデルにならないようにすることができます。

したがって、Analysis Services には、欠損値を管理および計算するための 2 つの明確に異なるメカニズムが用意されています。 最初の方法では、マイニング構造のレベルで null の処理を制御します。 2 番目の方法ではアルゴリズムによって実装が異なりますが、一般に、null 値が使用できるモデルでの不足値の処理方法やカウント方法が定義されています。

Null 値の処理の指定

データ ソースで、不足値はさまざまな形式で表されます。null 値、スプレッドシートの空のセル、N/A という値やその他のコード、または 9999 などの人工的な値が使用される可能性があります。 しかし、データ マイニングの目的では、null 値のみが不足値として扱われます。 データ内に null ではなくプレースホルダー値が含まれていると、モデルの結果に影響を与えることがあるため、null に置き換えるか、可能であれば正しい値を推測して置き換えてください。 適切な値を推定して入力するためには、SQL Server Integration Services の参照変換または Data Profiler タスクや、Excel 用データ マイニング アドインの Fill By Example ツールなど、さまざまなツールを使用できます。

列に不足値があってはならないタスクをモデル化している場合は、マイニング構造を定義するときに NOT_NULL モデリング フラグを列に適用します。 このフラグにより、ケースに適切な値がない場合は処理が失敗するように指定されます。 モデルの処理中にこのエラーが発生した場合は、そのエラーをログに記録して、モデルに入力されたデータを修正することができます。

不足状態の計算

データ マイニング アルゴリズムにとって不足値は有益なデータであり、 ケース テーブルにおいて Missing は他の状態と同様の有効な状態です。 さらに、データ マイニング モデルでは他の値を使用して値が不足するかどうかを予測できます。 要するに、値が不足していることはエラーではありません。

マイニング モデルを作成すると、すべての不連続列についてモデルに Missing 状態が自動的に追加されます。 たとえば、入力列 [Gender] に Male と Female の 2 つの可能な値が含まれている場合、Missing 値を表すために 3 つ目の値が自動的に追加されます。また、その列のすべての値の分布を示すヒストグラムには、Missing 値を持つケースの数が常に含まれます。 Gender 列に値の不足がない場合は、Missing 状態が見つかったケースの数が 0 としてヒストグラムに示されます。

既定に Missing 状態を含めると、可能な値の例をデータ内で完全に網羅したとは考えられない場合に、データに例が含まれていないというだけの理由でその可能性がモデルから排除されないようにすることができます。 たとえば、店舗の売上データで、特定の製品を購入した顧客がたまたますべて女性だったからと言って、その製品は女性しか購入しないと予測するモデルが作成されるようでは問題があります。 代わりに、Analysis Services は、考えられる他の状態に対応する方法として、 という Missing名前の余分な不明な値のプレースホルダーを追加します。

たとえば次の表は、Bike Buyer チュートリアルのために作成されたデシジョン ツリー モデルの (すべて) ノードの値の分布を示しています。 この例のシナリオでは、[Bike Buyer] 列は予測可能な属性です。1 は "Yes" を表し、0 は "No" を表します。

ケース
0 9296
1 9098
Missing 0

この分布からは、自転車を購入した顧客と購入しなかった顧客の数がほぼ半々であることがわかります。 このデータセットは完璧であるため、すべてのケースが [Bike Buyer] 列の値を持ち、Missing 値の数は 0 になっています。 ただし、[Bike Buyer] フィールドに null がある場合、Analysis Services はその行を値を持つ Missing ケースとしてカウントします。

入力が連続列の場合には、この属性に対して ExistingMissing の 2 つの可能な状態が適用されます。 つまり、その列に何らかの数値データ型の値が含まれているか、値が何も含まれていないかのいずれかになります。 値があるケースの場合は、平均、標準偏差、およびその他の意味のある統計がモデルで計算されます。 値がないケースの場合は、Missing 値の数がカウントされ、それに基づいて予測が調整されます。 予測を調整する方法はアルゴリズムによって異なります。詳細については次のセクションを参照してください。

注意

入れ子になったテーブルの属性では、不足値は有益なデータにはなりません。 たとえば、顧客が製品を購入していない場合は、入れ子になった Products テーブルにその製品に対応する行は含まれず、マイニング モデルでその不足している製品の属性は作成されません。 ただし、特定の製品を購入していない顧客に関心がある場合は、モデル フィルターで NOT EXISTS ステートメントを使用することにより、入れ子になったテーブルにその製品が存在しないという属性に基づいてフィルター処理されるモデルを作成できます。 詳細については、「 マイニング モデルへのフィルターの適用」を参照してください。

不足状態のための確率の調整

Analysis Services は、値のカウントに加えて、データ セット全体の値の確率を計算します。 これは、Missing 値にも当てはまります。 たとえば次の表は、前の例のケースの確率を示しています。

ケース 確率
0 9296 50.55%
1 9098 49.42%
Missing 0 0.03%

Missing 値の確率が、ケースの数が 0 なのに 0.03% として計算されているのは奇妙に見えるかもしれません。 実のところ、この動作は意図的なものであり、モデルで不明な値を適切に処理できるようにするための調整を表しています。

一般に確率は、好ましいケースをすべての可能なケースで割ることによって計算されます。 この例の場合は、特定の条件 ([Bike Buyer] = 1 または [Bike Buyer] = 0) を満たすケースの合計を計算し、その数を行の合計数で割ります。 ただしここでは、Missing のケースを計算に入れるために、すべての可能なケースの数に 1 が追加されます。 その結果、不明なケースの確率は、0 ではなくごく小さな値になります。これにより、その状態がありそうにないだけで、あり得なくはないことが示されます。

小さな Missing 値が追加されても予測子の結果は変わりませんが、過去のデータにすべての考えられる結果が含まれてはいないシナリオで、モデリングを改善することが可能になります。

注意

不足値を処理する方法はデータ マイニング プロバイダーによって異なります。 たとえば、入れ子になった列の不足しているデータはスパース表現だが、入れ子になっていない列ではそのデータが不規則に不足していると想定するプロバイダーもあります。

データですべての結果が指定されていることがわかっている場合に、確率が調整されないようにするには、マイニング構造の列で NOT_NULL モデリング フラグを設定します。

注意

不足値の処理方法は、アルゴリズム (サード パーティ プラグインから入手したカスタム アルゴリズムを含む) ごとに異なる可能性があります。

デシジョン ツリー モデルにおける不足値の特別な処理

Microsoft デシジョン ツリー アルゴリズムによる不足値の確率の計算方法は、他のアルゴリズムと異なります。 デシジョン ツリー アルゴリズムでは、ケースの合計数に単純に 1 を追加する代わりに、若干異なる式を使用して Missing 状態のための調整を行います。

Missing 状態の確率は、デシジョン ツリー モデルでは次のように計算されます。

StateProbability = (NodePriorProbability)* (StateSupport + 1) / (NodeSupport + TotalStates)

さらに、SQL Server 2014 Analysis Services (SSAS) では、デシジョン ツリー アルゴリズムによって、モデルに対するフィルターの存在をアルゴリズムが補正するのに役立つ追加の調整が提供され、トレーニング中に多くの状態が除外される可能性があります。

SQL Server 2014 では、トレーニング中に状態が存在するが、特定のノードでサポートが 0 になるだけの場合は、標準の調整が行われます。 一方、トレーニング中に状態が一度も検出されなかった場合には、その確率が厳密に 0 に設定されます。 この調整は Missing 状態だけでなく、トレーニング データに存在するがモデル フィルターの結果としてサポートが 0 になるその他の状態にも適用されます。

この追加の調整の結果となる式を次に示します。

トレーニング セットでその状態のサポートが 0 の場合、StateProbability = 0.0

ELSE StateProbability = (NodePriorProbability)* (StateSupport + 1) / (NodeSupport + TotalStatesWithNonZeroSupport)

この調整の最終的な効果として、ツリーの安定性が維持されます。

次のトピックでは、不足値の処理方法の詳細について説明します。

タスク リンク
不足値の処理を制御するためのフラグを個々のモデル列に追加する。 モデリング フラグの表示または変更 (データ マイニング)
マイニング モデルに、不足値の処理を制御するためのプロパティを設定する。 マイニング モデルのプロパティの変更
DMX でモデリング フラグを指定する方法を習得する。 モデリング フラグ (DMX)
マイニング構造が不足値を処理する方法を変更する。 マイニング構造のプロパティの変更

参照

Mining Model Content (Analysis Services - Data Mining)
モデリング フラグ (データ マイニング)