ディメンションの削減 (Dimension Reduction) (空間統計)

サマリー

主成分分析 (PCA) または縮小ランク線形判別分析 (LDA) を使用して最大量の分散を少数の成分に集約することで、連続変数セットのディメンションの数を削減します。

変数は、入力テーブルまたはフィーチャ レイヤーのフィールドとして指定され、新しい変数を表す新しいフィールドは、出力テーブルまたはフィーチャクラスに保存されます。 新しいフィールドの数は元の変数の数より少なくなりますが、すべての元の変数の分散最大量は保持されます。 ディメンションの削減は一般的に、変数間の多変量関係の調査、および必要なメモリと処理時間がデータのディメンション数によって異なるコンピューター ラーニング アルゴリズムの計算コストの削減に使用されます。 多くの場合、分析またはコンピューター ラーニング アルゴリズムの元データの成分を使用することで、計算リソースの消費を抑えながら比較的 (またはより良い) 結果が得られます。

ディメンションの削減の詳細

ディメンションの削減ツールの図
8 つの変数が 3 つの成分に削減されます。

使用法

  • 少なくとも 2 つの数値フィールドが [分析フィールド] パラメーターに提供される必要があります。これは、ディメンションを削減するには、データに少なくとも 2 つのディメンションがなくてはならないためです。

  • [ディメンションの削減方法] パラメーターには、次の 2 つのオプションがあります。

    • [主成分分析 (PCA)] - この方法は、全分散と元の変数間の相関関係を可能な限りそれぞれに把握する成分を連続的に構築します。 [スケール データ] パラメーターを使用して、主成分で各変数に等しい重要性が付与されるように、それぞれの元の変数を同じスケールにすることができます。 データがスケールされないと、大きな値の分散は全分散のほとんどを占めることになり、最初のいくつかの成分で過度に示されます。 この方法は、成分が連続変数の値の予測に使用される分析またはコンピューター ラーニング方法を実行する場合に推奨されます。
    • [縮小ランク線形判別分析 (LDA)] - この方法は、連続変数と、[カテゴリ フィールド] パラメーターで提供されるさまざまなレベルのカテゴリ変数の分離性を最大化する成分を構築します。 成分は、カテゴリ間分散を可能な限り保持して、結果として得られた成分が、各レコードをいずれかのカテゴリに最大限効果的に分類できるようにします。 この方法は、自動的にデータをスケールします。また、成分がカテゴリ変数のカテゴリの分類に使用される分析またはコンピューター ラーニング方法を実行する場合に推奨されます。

  • ジオプロセシング メッセージが、各成分で保持されている分散の割合と累積率を表示します。

  • 作成される成分の数は、[維持する最小分散率] パラメーターと [成分の最小数] パラメーターに値を指定するかどうかによって異なります。

    • 1 つのパラメーターが指定され、もう片方のパラメーターが指定されない場合、成分の数は指定されたパラメーターの値によって決定されます。 成分の数は、指定された最小数を満たすうえで必要な最小数に等しくなります。
    • 両方のパラメーターが指定される場合、結果として得られた 2 つの成分数のうち大きい方が使用されます。
    • いずれのパラメーターも指定されない場合、成分数は、複数の統計方法を使用して決定され、ツールは、各方法が推定する最大成分数を使用します。 両方のディメンション削減方法の場合、ブロークン スティック方法とバートレットの球面性検定が含まれます。 PCA では、[順列の数] パラメーター値が 0 より大きい場合、並べ替え検定も実行されます。

    各検定の結果に関する情報は、ジオプロセシング メッセージとして表示されます。

  • テーブルが [出力固有値テーブル] パラメーターによって作成された場合、出力テーブルにスクリー プロット チャートが作成され、各成分が保持している分散を視覚化します。

  • テーブルが [出力固有ベクトル テーブル] パラメーターによって作成された場合、出力テーブルにバー チャートが作成され、各固有ベクトルを視覚化します。

  • [入力データのフィールドを追加] パラメーターを使用して、成分フィールドを入力テーブルに追加することができます。 これらの成分フィールドを追加した場合、関連テーブルは指定されていません。

  • 成分の数は、入力内のレコード数より大きくできません。 また、分析フィールド内に NULL 値があるレコードは計算から除外されます。 多くのレコードに NULL 値が含まれる場合、[最小成分数] パラメーターで指定された成分の数は作成されない可能性があり、ツールは正常に実行されません。 この場合、多くの NULL 値を含む分析フィールドを削除するか、[欠損値の補完 (Fill Missing Values)] ツールを使用して欠損値を補完します。

  • PCA とランク低下 LDA の詳細については、次の参考資料をご参照ください。

    • James, G., Witten, D., Hastie, T., Tibshirani, R. (2014). "An Introduction to Statistical Learning: with Applications in R." Springer Publishing Company, Incorporated. https://doi.org/10.1007/978-1-4614-7138-7

    成分の数を決定する方法の詳細については、次の参考資料をご参照ください。

    • Peres-Neto, P., Jackson, D., Somers, K. (2005). "How many principal components? Stopping rules for determining the number of non-trivial axes revisited." Computational Statistics & Data Analysis. 49.4: 974-997. https://doi.org/10.1016/j.csda.2004.06.015.

パラメーター

ラベル説明データ タイプ
入力テーブルまたはフィーチャ

ディメンションを持つフィールドを含むテーブルまたはフィーチャで、削減されます。

Table View
出力テーブルまたはフィーチャクラス
(オプション)

ディメンションの削減の結果作られた成分を含む出力テーブルまたはフィーチャクラス。

Table
分析フィールド

ディメンションを持つデータを表すフィールドで、削減されます。

Field
ディメンションの削減方法
(オプション)

分析フィールドのディメンションを削減するために使用する方法を指定します。

  • 主成分分析 (PCA)分析フィールドは、全分散の最大比をそれぞれ保持する成分に分割されます。 これがデフォルトです。
  • 縮小ランク線形判別分析 (LDA)分析フィールドは、カテゴリ変数のカテゴリ間最大分離性をそれぞれ保持する成分に分割されます。
String
データのスケール
(オプション)

それぞれの分析の値をスケールして互いに等しい変数にするかどうかを指定します。 このスケールにより、成分で各分析フィールドの優先度が等しくなるようにします。 また、スケールすることで、距離単位の効果を取り除きます。たとえば、メートルおよびフィートで測定された同じデータは、等しい成分となります。 分析フィールドの値は、両方のオプションで平均ゼロになるように変えられます。

  • オン - 各値を分析フィールドの標準偏差で除算することで、それぞれの分析フィールドの値がスケールされて 1 つの変数になります。 これがデフォルトです。
  • オフ - 各分析フィールドの変数はスケールされません。

Boolean
カテゴリ フィールド
(オプション)

LDA のカテゴリ変数を表すフィールド。 成分は、これらのカテゴリへの各入力レコードを分類するために必要な最大情報量を保持します。

Field
維持する最小分散率
(オプション)

分析フィールドの全分散の最小割合で、成分に保持されている必要があります。 全分散は、[データのスケール] パラメーター (Python では scale) を使用して分析フィールドがスケールされるかどうかによって異なります。

Long
最小成分数
(オプション)

成分の最小数。

Long
すべてのフィールドを出力データセットにコピー
(オプション)

入力テーブルまたはフィーチャのすべてのフィールドをコピーして、出力テーブルまたはフィーチャクラスに追加するかどうかを指定します。 [分析フィールド] パラメーターで提供されたテーブルは、このパラメーターの値にかかわらず、出力にコピーされます。

  • オン - 入力テーブルまたはフィーチャのすべてのフィールドをコピーして、出力テーブルまたはフィーチャクラスに追加します。
  • オフ - 分析フィールドのみが出力テーブルまたはフィーチャクラスに含められます。 これがデフォルトです。

Boolean
出力固有値テーブル
(オプション)

各成分の固有値が格納される出力テーブル。

Table
出力固有ベクトル テーブル
(オプション)

各成分の固有ベクトルが格納される出力テーブル。

Table
順列の数
(オプション)

最適な成分数の判定時に使用される順列の数。 デフォルト値は 0 で、順列テストが実施されないことを示します。

Long
入力データのフィールドを追加
(オプション)

成分フィールドを入力データセットに追加するか、出力テーブルまたはフィーチャクラスに保存するかを指定します。 フィールドを入力に追加した場合、出力座標系の環境は無視されます。

  • オン - 成分を含むフィールドは入力フィーチャに追加されます。 このオプションを実行すると、入力データが変更されます。
  • オフ - 成分フィールドを含む出力テーブルまたはフィーチャクラスが作成されます。 これがデフォルトです。

Boolean

派生した出力

ラベル説明データ タイプ
更新済みのテーブルまたはフィーチャクラス

成分フィールドが追加された、更新済みの入力テーブルまたはフィーチャクラス。

Table View

arcpy.stats.DimensionReduction(in_table, {output_data}, fields, {method}, {scale}, {categorical_field}, {min_variance}, {min_components}, {append_fields}, {output_eigenvalues_table}, {output_eigenvectors_table}, {number_of_permutations}, {append_to_input})
名前説明データ タイプ
in_table

ディメンションを持つフィールドを含むテーブルまたはフィーチャで、削減されます。

Table View
output_data
(オプション)

ディメンションの削減の結果作られた成分を含む出力テーブルまたはフィーチャクラス。

Table
fields
[fields,...]

ディメンションを持つデータを表すフィールドで、削減されます。

Field
method
(オプション)

分析フィールドのディメンションを削減するために使用する方法を指定します。

  • PCA分析フィールドは、全分散の最大比をそれぞれ保持する成分に分割されます。 これがデフォルトです。
  • LDA分析フィールドは、カテゴリ変数のカテゴリ間最大分離性をそれぞれ保持する成分に分割されます。
String
scale
(オプション)

それぞれの分析の値をスケールして互いに等しい変数にするかどうかを指定します。 このスケールにより、成分で各分析フィールドの優先度が等しくなるようにします。 また、スケールすることで、距離単位の効果を取り除きます。たとえば、メートルおよびフィートで測定された同じデータは、等しい成分となります。 分析フィールドの値は、両方のオプションで平均ゼロになるように変えられます。

  • SCALE_DATA各値を分析フィールドの標準偏差で除算することで、それぞれの分析フィールドの値がスケールされて 1 つの変数になります。 これがデフォルトです。
  • NO_SCALE_DATA各分析フィールドの変数はスケールされません。
Boolean
categorical_field
(オプション)

LDA のカテゴリ変数を表すフィールド。 成分は、これらのカテゴリへの各入力レコードを分類するために必要な最大情報量を保持します。

Field
min_variance
(オプション)

分析フィールドの全分散の最小割合で、成分に保持されている必要があります。 全分散は、[データのスケール] パラメーター (Python では scale) を使用して分析フィールドがスケールされるかどうかによって異なります。

Long
min_components
(オプション)

成分の最小数。

Long
append_fields
(オプション)

入力テーブルまたはフィーチャのすべてのフィールドをコピーして、出力テーブルまたはフィーチャクラスに追加するかどうかを指定します。 fields パラメーターで提供されたテーブルは、このパラメーターの値にかかわらず、出力にコピーされます。

  • APPEND入力テーブルまたはフィーチャのすべてのフィールドをコピーして、出力テーブルまたはフィーチャクラスに追加します。
  • NO_APPEND分析フィールドのみが出力テーブルまたはフィーチャクラスに含められます。 これがデフォルトです。
Boolean
output_eigenvalues_table
(オプション)

各成分の固有値が格納される出力テーブル。

Table
output_eigenvectors_table
(オプション)

各成分の固有ベクトルが格納される出力テーブル。

Table
number_of_permutations
(オプション)

最適な成分数の判定時に使用される順列の数。 デフォルト値は 0 で、順列テストが実施されないことを示します。 指定する値は、0、99、199、499 または 999 に等しい必要があります。他の値が指定されると、0 が使用されて、並べ替え検定は実行されません。

Long
append_to_input
(オプション)

成分フィールドを入力データセットに追加するか、出力テーブルまたはフィーチャクラスに保存するかを指定します。 フィールドを入力に追加した場合、出力座標系の環境は無視されます。

  • APPEND_TO_INPUT成分を含むフィールドは入力フィーチャに追加されます。 このオプションを実行すると、入力データが変更されます。
  • NEW_OUTPUT成分フィールドを含む出力テーブルまたはフィーチャクラスが作成されます。 これがデフォルトです。
Boolean

派生した出力

名前説明データ タイプ
updated_table

成分フィールドが追加された、更新済みの入力テーブルまたはフィーチャクラス。

Table View

コードのサンプル

DimensionReduction の例 1 (Python ウィンドウ)

次の Python スクリプトは、DimensionReduction 関数の使用方法を示しています。


import arcpy
arcpy.stats.DimensionReduction("DemographicData", 
           "DemographicData_DimensionReduction", 
           "age_group_1;age_group2;age_group_3;age_group_4;age_group_5", 
           "PCA", "NO_SCALE_DATA", None, None, 3, 
           "NO_APPEND", "EigenValueTable", None, 99, NEW_OUTPUT)
DimensionReduction の例 2 (スタンドアロン スクリプト)

次のスタンドアロン Python スクリプトは、DimensionReduction 関数を使用して人口を予測する方法を示します:


# Import system modules 
import arcpy

# Overwrite existing output, by default
arcpy.env.overwriteOutput = True

# Local variables...
arcpy.env.workspace = r"c:\projects\dimensionreduction.gdb"

# Reduce the fields of population by age group using Reduced-Rank LDA method; 
# use "State" as the categorical field; choose the eigenvector output. 
arcpy.stats.DimensionReduction("DemographicData", 
           "DemographicData_DimensionReduction", 
           "age_group_1;age_group2;age_group_3;age_group_4;age_group_5", 
           "LDA", "SCALE_DATA", "State", None, None, 
           "APPEND", None, "EigenVectorTable", 0, NEW_OUTPUT)

ライセンス情報

  • Basic: Yes
  • Standard: Yes
  • Advanced: Yes

関連トピック