概要
主成分分析 (PCA) またはランク低下線形判別分析 (LDA) を使用して最大量の分散を少数の成分に集約することで、連続変数セットのディメンションの数を削減します。変数は、入力テーブルまたはフィーチャ レイヤーのフィールドとして指定され、新しい変数を表す新しいフィールドは、出力テーブルまたはフィーチャクラスに保存されます。新しいフィールドの数は元の変数の数より少なくなりますが、すべての元の変数の分散最大量は保持されます。
ディメンションの削減は一般的に、変数間の多変量関係の調査、および必要なメモリと処理時間がデータのディメンション数によって異なるコンピューター ラーニング アルゴリズムの計算コストの削減に使用されます。多くの場合、分析またはコンピューター ラーニング アルゴリズムの元データの成分を使用することで、計算リソースの消費を抑えながら比較的 (またはより良い) 結果が得られます。
図
使用法
少なくとも 2 つの数値フィールドが [分析フィールド] パラメーターに提供される必要があります。これは、ディメンションを削減するには、データに少なくとも 2 つのディメンションがなくてはならないためです。
[ディメンションの削減方法] パラメーターには、次の 2 つのオプションがあります。
- 主成分分析 (PCA) - この方法は、全分散と元の変数間の相関関係を可能な限りそれぞれに把握する成分を連続的に構築します。[スケール データ] パラメーターを使用して、主成分で各変数に等しい重要性が付与されるように、それぞれの元の変数を同じスケールにすることができます。データがスケールされないと、大きな値の分散は全分散のほとんどを占めることになり、最初のいくつかの成分で過度に示されます。この方法は、成分が連続変数の値の予測に使用される分析またはコンピューター ラーニング方法を実行する場合に推奨されます。
- ランク低下線形判別分析 (LDA) - この方法は、連続変数と、[カテゴリ フィールド] パラメーターで提供されるさまざまなレベルのカテゴリ変数の分離性を最大化する成分を構築します。成分は、カテゴリ間分散を可能な限り保持して、結果として得られた成分が、各レコードをいずれかのカテゴリに最大限効果的に分類できるようにします。この方法は、自動的にデータを縮尺します。また、成分がカテゴリ変数のカテゴリの分類に使用される分析またはコンピューター ラーニング方法を実行する場合に推奨されます。
ジオプロセシング メッセージが、各成分で保持されている分散の割合と累積率を表示します。
作成される成分の数は、[維持する最小分散率] パラメーターと [成分の最小数] パラメーターに値を指定するかどうかによって異なります。
- 1 つのパラメーターが指定され、もう片方のパラメーターが指定されない場合、成分の数は指定されたパラメーターの値によって決定されます。成分の数は、指定された最小数を満たすうえで必要な最小数に等しくなります。
- 両方のパラメーターが指定される場合、結果として得られた 2 つの成分数のうち大きい方が使用されます。
- いずれのパラメーターも指定されない場合、成分数は、複数の統計方法を使用して決定され、ツールは、各方法が推奨する最大成分数を使用します。両方のディメンション削減方法の場合、ブロークン スティック方法とバートレットの球面性検定が含まれます。PCA では、[順列の数] パラメーター値が 0 より大きい場合、並べ替え検定も実行されます。
各検定の結果に関する情報は、ジオプロセシング メッセージとして表示されます。
テーブルが [出力固有値テーブル] パラメーターによって作成された場合、出力テーブルにスクリー プロット チャートが作成され、各成分が保持している分散を視覚化します。
テーブルが [出力固有ベクトル テーブル] パラメーターによって作成された場合、出力テーブルにバー チャートが作成され、各固有ベクトルを視覚化します。
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.
構文
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})
パラメーター | 説明 | データ タイプ |
in_table | ディメンションを持つフィールドを含むテーブルまたはフィーチャで、削減されます。 | Table View |
output_data | ディメンションの削減の結果作られた成分を含む出力テーブルまたはフィーチャクラス。 | Table |
fields [fields,...] | ディメンションを持つデータを表すフィールドで、削減されます。 | Field |
method (オプション) | 分析フィールドのディメンションを削減するために使用する方法を指定します。
| String |
scale (オプション) | それぞれの分析の値を縮尺して互いに等しい変数にするかどうかを指定します。この縮尺により、成分で各分析フィールドの優先度が等しくなるようにします。また、縮尺することで、距離単位の効果を取り除きます。たとえば、メートルおよびフィートで測定された同じデータは、等しい成分となります。分析フィールドの値は、両方のオプションで平均ゼロになるように変えられます。
| Boolean |
categorical_field (オプション) | LDA のカテゴリ変数を表すフィールド。成分は、これらのカテゴリへの各入力レコードを分類するために必要な最大情報量を保持します。 | Field |
min_variance (オプション) | 分析フィールドの全分散の最小割合で、成分に保持されている必要があります。全分散は、[データの縮尺] パラメーターを使用して分析フィールドが縮尺されるかどうかによって異なります。 | Long |
min_components (オプション) | 成分の最少数。 | Long |
append_fields (オプション) | 入力テーブルまたはフィーチャのすべてのフィールドをコピーして、出力テーブルまたはフィーチャに追加するかどうかを指定します。fields パラメーターで提供されたテーブルは、このパラメーターの値にかかわらず、出力にコピーされます。
| Boolean |
output_eigenvalues_table (オプション) | 各成分の固有値が格納される出力テーブル。 | Table |
output_eigenvectors_table (オプション) | 各成分の固有ベクトルが格納される出力テーブル。 | Table |
number_of_permutations (オプション) | 最適な成分数の判定時に使用される順列の数を指定します。デフォルトの値は 0 で、並べ替え検定は実行されないことを示します。提供される値は、0、99、199、499 または 999 に等しい必要があります。他の値が提供されると、0 が使用されて、並べ替え検定は実行されません。 | Long |
コードのサンプル
次の Python スクリプトは、[DimensionReduction] ツールの使用方法を示します。
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)
次のスタンドアロン 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)
ライセンス情報
- Basic: はい
- Standard: はい
- Advanced: はい