Microsoft デシジョン ツリー アルゴリズム テクニカル リファレンス

適用対象:SQL Server 2019 以前の Analysis Services Azure Analysis Services Fabric/Power BI Premium

重要

データ マイニングは SQL Server 2017 Analysis Services で非推奨となり、SQL Server 2022 Analysis Services で停止されました。 非推奨および停止された機能については、ドキュメントの更新は行われません。 詳細については、「Analysis Services 下位互換性」を参照してください。

Microsoft デシジョン ツリー アルゴリズムは、ツリーを作成するためのさまざまな方法を組み込んだハイブリッド アルゴリズムであり、回帰、分類、関連付けを含む複数の分析タスクをサポートします。 Microsoft デシジョン ツリー アルゴリズムは、不連続属性と連続属性の両方のモデリングをサポートしています。

このトピックでは、アルゴリズムの実装について説明し、さまざまなタスクに合わせてアルゴリズムの動作をカスタマイズする方法を示します。また、デシジョン ツリー モデルに対するクエリに関する追加情報へのリンクも示します。

デシジョン ツリー アルゴリズムの実装

Microsoft デシジョン ツリー アルゴリズムは、モデルの近似的事後分布を取得して、因果的相互作用のモデルの学習にベイジアン アプローチを適用します。 このアプローチの詳細な説明については、Microsoft Research サイトにある 構造とパラメーターの学習に関する論文を参照してください。

学習に必要な 事前分布 情報の価値を評価する手法は、 尤度等価の想定に基づいています。 この想定では、条件的に独立した同じアサーションのネットワーク構造は、データでは識別できないものと見なします。 各ケースには、ベイジアン事前分布ネットワークと、そのネットワークの信頼メジャーが、それぞれ 1 つずつあるものと見なされます。

アルゴリズムでは、これらの事前分布ネットワークを使用して、現在のトレーニング データからネットワーク構造の相対的な 事後確率 を計算し、事後確率が最も高いネットワーク構造を特定します。

Microsoft デシジョン ツリー アルゴリズムでは、さまざまな方法を使用して最適なツリーを計算します。 使用される方法はタスクによって異なり、線形回帰、分類、またはアソシエーション分析があります。 個々のモデルには、各種の予測可能な属性に応じて複数のツリーが含まれる可能性があります。 さらに、データ内の属性と値の数に応じて、各ツリーに複数の分岐が含まれる可能性があります。 特定のモデル内に作成されるツリーの形状と深さは、スコアリング方法と、使用された他のパラメーターによって決まります。 パラメーターの変更も、ノードの分割場所に影響する可能性があります。

ツリーの作成

Microsoft デシジョン ツリー アルゴリズムは、使用可能な入力値のセットを作成すると 機能の選択 を実行して最も多くの情報を提供する属性と値を特定し、頻度の低い値を考慮対象からはずします。 また、このアルゴリズムは、パフォーマンスを最適化するため、値を ビンにグループ化し、まとめて処理できる値のグループを作成します。

ツリーは、入力と対象の結果との間の相関関係を調べることによって作成されます。 すべての属性が関連付けられた後、結果を最も明確に区分する 1 つの属性がアルゴリズムによって識別されます。 この最良の区分点は、情報利得を計算する式を使用して測定されます。 情報利得のスコアが最も高い属性によってケースがサブセットに分割され、次にそのサブセットが同じプロセスで再帰的に分析され、ツリーを分割できなくなるまで繰り返されます。

情報利得の評価に使用される正確な式は、アルゴリズムの作成時に設定したパラメーター、予測可能列のデータ型、および入力のデータ型によって異なります。

不連続および連続の入力

予測可能属性および入力が不連続の場合、入力あたりの結果をカウントするには、マトリックスを作成し、マトリックスの各セルのスコアを生成します。

ただし、予測可能属性が不連続で入力が連続の場合、連続列の入力が自動的に分離されます。 既定値をそのまま使用し、最適なビン数SQL Server Analysis Services見つけたり、 プロパティと DiscretizationBucketCount プロパティを設定して連続入力を分離する方法をDiscretizationMethod制御したりできます。 詳細については、「 マイニング モデルでの列の分離の変更」を参照してください。

連続属性の場合、アルゴリズムでは線型回帰を使用して、デシジョン ツリーの分割ポイントが判断されます。

予測可能属性が連続する数値データ型の場合、結果数をできるだけ減らしてモデルの作成を高速化するために、機能の選択が出力にも適用されます。 MAXIMUM_OUTPUT_ATTRIBUTES パラメーターを設定することにより、機能の選択のしきい値を変更して、使用可能な値の数を増減できます。

スコアリング方法と機能の選択

Microsoft デシジョン ツリー アルゴリズムには、情報利得のスコアを計算する式が 3 つ用意されています。Shannon のエントロピー、K2 事前分布を指定したベイジアン ネットワーク、および均一なディリクレ事前分布を指定したベイジアン ネットワークです。 データ マイニング フィールドには、3 つの方法すべてが準備されています。 最適な結果を得るには、複数のパラメーターとスコアリング方法を試してみることをお勧めします。 これらのスコアリング方法の詳細については、「 機能の選択」を参照してください。

すべてのSQL Server Analysis Servicesデータ マイニング アルゴリズムは、特徴選択を自動的に使用して分析を改善し、処理負荷を軽減します。 機能の選択に使用される方法は、モデルの作成に使用したアルゴリズムによって異なります。 デシジョン ツリー モデルに対する機能の選択を制御するアルゴリズム パラメーターは、MAXIMUM_INPUT_ATTRIBUTES と MAXIMUM_OUTPUT です。

アルゴリズム 分析の方法 説明
デシジョン ツリー 興味深さのスコア

Shannon のエントロピー

K2 事前分布を指定したベイズ定理

均一な事前分布を指定したベイズ ディリクレ等式 (既定値)
非バイナリの連続する値を含む列がある場合は、一貫性を保つため、すべての列に対して興味深さのスコアが使用されます。 それ以外の場合は、既定の方法か、指定した方法が使用されます。
線形回帰 興味深さのスコア 線形回帰でサポートされるのは連続列だけであるため、興味深さのスコアのみが使用されます。

スケーラビリティとパフォーマンス

分類は、重要なデータ マイニング戦略です。 一般に、ケースの分類に必要な情報量は、入力レコードの数に正比例して増加します。 このため、分類可能なデータのサイズが制限されます。 Microsoft デシジョン ツリー アルゴリズムでは次の方法を使用して、これらの問題を解決し、パフォーマンスを向上させ、メモリの制限を回避します。

  • 機能の選択で、属性の選択を最適化します。

  • ベイジアン スコアリングで、ツリーの拡大を制御します。

  • 連続属性のビン分割を最適化します。

  • 入力値の動的なグループ化で、最も重要な値を特定します。

Microsoft デシジョン ツリー アルゴリズムは、高速かつスケーラブルで、簡単に並列処理できるよう設計されています。つまり、すべてのプロセッサが連携し、単一の一貫したモデルを作成します。 これらの特性を兼ね備えているため、デシジョン ツリー分類子はデータ マイニングに最適のツールです。

パフォーマンスの制約が大きい場合、次の方法を使用すると、デシジョン ツリー モデルのトレーニング中の処理時間を短縮できる場合があります。 ただし、このとき、処理パフォーマンスを向上させるために属性を削除すると、モデルの結果が変わり、母集団を正しく代表しなくなる可能性があります。

  • ツリーの拡大を制限するには、COMPLEXITY_PENALTY パラメーターの値を大きくします。

  • 作成されるツリー数を制限するには、アソシエーション モデル内のアイテム数を制限します。

  • オーバーフィットを回避するには、MINIMUM_SUPPORT パラメーターの値を大きくします。

  • 任意の属性に対する不連続値の数を、10 以下に制限します。 モデルに応じたさまざまな方法で、値のグループ化を試みることができます。

    注意

    SQL Server 2017 Integration Services (SSIS) で使用できるデータ探索ツールを使用して、データ内の値の分布を視覚化し、データ マイニングを開始する前に適切に値をグループ化できます。 詳細については、「 データ プロファイル タスクとビューアー」を参照してください。 また、 Excel 2007 用データ マイニング アドインを使用すると、データの探索、グループ化、およびラベル変更を Microsoft Excel で行うことができます。

デシジョン ツリー アルゴリズムのカスタマイズ

Microsoft デシジョン ツリー アルゴリズムでは、結果のマイニング モデルのパフォーマンスと精度に影響を与えるパラメーターがサポートされています。 マイニング モデル列またはマイニング構造列にモデリング フラグを設定して、データの処理方法を制御することもできます。

注意

Microsoft デシジョン ツリー アルゴリズムは、SQL Serverのすべてのエディションで使用できますが、Microsoft デシジョン ツリー アルゴリズムの動作をカスタマイズするための高度なパラメーターの一部は、SQL Serverの特定のエディションでのみ使用できます。 SQL Server の各エディションでサポートされる機能の一覧については、SQL Server 2012 の各エディションでサポートされる機能 (https://go.microsoft.com/fwlink/?linkid=232473) に関する記事を参照してください。

アルゴリズム パラメーターの設定

次の表では、Microsoft デシジョン ツリー アルゴリズムで使用できるパラメーターについて説明します。

COMPLEXITY_PENALTY
デシジョン ツリーの拡大を制御します。 値を小さくすると分割数が増加し、値を大きくすると分割数が減少します。 次に示すように、既定値は特定のモデルの属性数に基づいて決定されます。

  • 属性数が 1 ~ 9 の場合、既定値は 0.5 です。

  • 属性数が 10 ~ 99 の場合、既定値は 0.9 です。

  • 属性数が 100 以上の場合、既定値は 0.99 です。

FORCE_REGRESSOR
アルゴリズムによって計算された列の重要性にかかわらず、指定した列をアルゴリズムでリグレッサーとして使用するように設定します。 このパラメーターは、連続属性を予測するデシジョン ツリーでのみ使用します。

注意

このパラメーターを設定すると、属性がアルゴリズムのリグレッサーとして使用されます。 ただし、最終的なモデルにおいて属性が実際にリグレッサーとして使用されるかどうかは、分析結果によって決まります。 リグレッサーとして使用された列を確認するには、モデル コンテンツに対するクエリを実行します。

[SQL Serverの一部のエディションでのみ使用可能]

MAXIMUM_INPUT_ATTRIBUTES
選択した機能を呼び出す前にアルゴリズムが処理できる入力属性の数を定義します。

既定値は 255 です。

この値を 0 に設定すると、機能の選択がオフになります。

[SQL Serverの一部のエディションでのみ使用可能]

MAXIMUM_OUTPUT_ATTRIBUTES
選択した機能を呼び出す前にアルゴリズムが処理できる出力属性の数を定義します。

既定値は 255 です。

この値を 0 に設定すると、機能の選択がオフになります。

[SQL Serverの一部のエディションでのみ使用可能]

MINIMUM_SUPPORT
デシジョン ツリー内で分割を生成するために必要なリーフ ケースの最小数を決定します。

既定値は 10 です。

データセットが非常に大きい場合は、オーバートレーニングを回避するため、この値を大きくする必要が生じることがあります。

SCORE_METHOD
分割スコアを計算するために使用する方法を決定します。 次のオプションを使用できます。

id 名前
1 エントロピー
3 K2 事前分布を指定したベイズ定理
4 均一な事前分布を指定したベイズ ディリクレ等式 (BDE)

(既定値)。

既定値は 4、または BDE です。

これらのスコアリング方法の詳細については、「 機能の選択」を参照してください。

SPLIT_METHOD
ノードを分割するために使用する方法を決定します。 次のオプションを使用できます。

id 名前
1 Binary: 属性値の実際の数にかかわらず、ツリーが 2 つの分岐に分割されることを示します。
2 Complete: 属性値と同じ数の分割をツリーに作成できることを示します。
3 Both: バイナリ分割と完全分割のどちらを使用すると最適な結果が生成されるのかが、Analysis Services によって判断されることを示します。

既定値は 3 です。

ModelingFlags

Microsoft デシジョン ツリー アルゴリズムでは、次のモデリング フラグがサポートされています。 モデリング フラグは、マイニング構造やマイニング モデルを作成するときに定義し、分析時に各列の値をどのように処理するかを指定します。 詳細については、「 モデリング フラグ (データ マイニング)」を参照してください。

モデリング フラグ 説明
MODEL_EXISTENCE_ONLY 列が、 Missing および Existingの 2 つの可能な状態を持つ列として扱われることを示します。 NULL は Missing 値になります。

マイニング モデル列に適用されます。
NOT NULL 列に NULL を含めることはできないことを示します。 モデルのトレーニング中に NULL が検出された場合はエラーが発生します。

マイニング構造列に適用されます。

デシジョン ツリー モデルのリグレッサー

Microsoft 線形回帰アルゴリズムを使用しない場合でも、連続する数値入力と出力を持つデシジョン ツリー モデルには、連続属性の回帰を表すノードが含まれる可能性があります。

連続する数値データ列がリグレッサーを表すことを指定する必要はありません。 Microsoft デシジョン ツリー アルゴリズムは、列に REGRESSOR フラグを設定しない場合でも、列を潜在的なリグレッサーとして自動的に使用し、データセットを意味のあるパターンを持つリージョンにパーティション分割します。

しかし、FORCE_REGRESSOR パラメーターを使用すると、アルゴリズムで特定のリグレッサーが使用されるようにすることができます。 このパラメーターは、Microsoft デシジョン ツリーと Microsoft 線形回帰アルゴリズムでのみ使用できます。 このモデリング フラグを設定すると、ツリーのノードのパターンに合う a*C1 + b*C2 + ... という形式の回帰式をアルゴリズムが見つけようとします。 残差の合計が計算され、偏差が大きすぎる場合には、ツリーが強制的に分割されます。

たとえば、 Income を属性として使用して顧客の購入行動を予測する場合に、その列に REGRESSOR モデリング フラグを設定すると、アルゴリズムはまず、標準の回帰式を使用して Income の値を試します。 偏差が大きすぎる場合はその回帰式が放棄され、ツリーが他の属性で分割されます。 その後デシジョン ツリー アルゴリズムは、分割後の各分岐で、Income をリグレッサーとして使用できるかどうかを試します。

要件

デシジョン ツリー モデルには、キー列、入力列、および少なくとも 1 つの予測可能列が必要です。

入力列と予測可能列

Microsoft デシジョン ツリー アルゴリズムでは、次の表に示す特定の入力列と予測可能な列がサポートされています。 マイニング モデルで使用する場合のコンテンツ タイプの意味の詳細については、「 コンテンツ タイプ (データ マイニング)」を参照してください。

コンテンツの種類
入力属性 Continuous、Cyclical、Discrete、Discretized、Key、Ordered、Table
予測可能な属性 Continuous、Cyclical、Discrete、Discretized、Ordered、Table

注意

コンテンツの種類 Cyclical および Ordered はサポートされますが、アルゴリズムはこれらを不連続の値として扱い、特別な処理は行いません。

参照

Microsoft デシジョン ツリー アルゴリズム
デシジョン ツリー モデルのクエリ例
Mining Model Content for Decision Tree Models (Analysis Services - Data Mining)