概要
一連のフィーチャ属性値とオプションのクラスター サイズ制限に基づく空間的に隣接したフィーチャ クラスターを特定します。
[空間的に制限された多変量クラスター分析 (Spatially Constrained Multivariate Clustering)] の詳細
図
使用法
-
このツールは、分析に使用されるフィールドに加え、新しい整数フィールド CLUSTER_ID を使用して出力フィーチャクラスを生成します。デフォルトでは CLUSTER_ID フィールドに基づいてレンダリングが実行され、各フィーチャがどのクラスターに属しているかが示されます。たとえば、クラスター数を 3 に設定した場合、各レコードの CLUSTER_ID フィールドの値は 1、2、3 のいずれかになります。
- 入力データとして、ポイントまたはポリゴンを指定できます。
-
このツールでは、特定されたクラスターの特性を理解するのに役立つメッセージとチャートも作成されます。このメッセージにアクセスするには、[ジオプロセシング] ウィンドウでプログレス バーの上にカーソルを置くか、ポップアップ ボタンをクリックするか、メッセージ セクションを展開します。ジオプロセシング履歴から、これまでに実行した [空間的に制限された多変量クラスター分析 (Spatially Constrained Multivariate Clustering)] ツールのメッセージにアクセスすることもできます。 作成されたチャートには、[コンテンツ] ウィンドウからアクセスできます。
-
[分析フィールド] は数値である必要があり、多様な値を含んでいる必要があります。変化のないフィールド (つまり、どのレコードも値が同じ) は分析から排除されますが、[出力フィーチャ] には含まれます。このツールでは、カテゴリ フィールドは、ダミー変数 (あるカテゴリに属するすべてのフィーチャは値 1、それ以外のすべてのフィーチャは値 0) として表される場合に使用できます。
-
[空間的に制限された多変量クラスター分析 (Spatially Constrained Multivariate Clustering)] ツールは、空間的制限のあるクラスターを作成します (空間ウェイト マトリックスを使用している場合は、時間的制限が課せられることもある)。用途によっては、作成したクラスターに隣接または近接要件を適用したくない場合があります。このような場合には、[多変量クラスター分析 (Multivariate Clustering)] ツールを使用して、空間的制限のないクラスターを作成します。
クラスターのサイズは、[クラスター サイズ制限] パラメーターで管理できます。各クラスターが満たす必要がある最小閾値と最大閾値を設定できます。サイズ制限は、各クラスターに含まれている [フィーチャ数] または [属性値].の合計として設定できます。たとえば、経済的変数のセットに基づいて米国の郡をクラスタリングする場合、各クラスターに 500 万人の最小人口および 2500 万人の最大人口が存在することを指定できます。
[上限] 制限を指定すると、このアルゴリズムはまず、1 つのクラスターを複数のクラスターに分割します。次に、分割された各クラスターですべての変数を考慮して、各クラスターが [上限] を下回るまで分割処理を行います。既存のクラスターの分割が後でさらに良好な結果を生む可能性がある場合でも、制限が満たされた時点で分割処理が終了します。
最大値と最小値を互いに近い値に設定すると、生成されるクラスターのいずれかで [クラスター サイズ制限] パラメーター値が満たされない場合があります。
最小スパニング ツリーの構築方法によっては、一部のクラスターに [クラスター サイズ制限] パラメーターが適用されないこともあります。このツールが終了し、サイズ制限を満たせなかったクラスターがメッセージで報告されます。
-
このツールでは、空間的に隣接するクラスターが作成されます。隣接オプションをポリゴン フィーチャクラスに対して有効にすると、クラスターの別のメンバーとエッジを共有しているか ([隣接エッジのみ])、エッジまたは頂点を共有している ([隣接エッジ コーナー]) 場合に限り、フィーチャが同じクラスターに属することができます。[ドローネ三角形分割の切り詰め] オプションでは、外れ値フィーチャやアイランド フィーチャをクラスター化するだけでなく、分離クラスターを形成することもできます。
ポイント [入力フィーチャ] のデフォルトの [空間的制限] は [ドローネ三角形分割の切り詰め] であり、クラスターのメンバーがすべて近接し、他のフィーチャの 1 つ以上が Natural Neighbor である場合にのみ、フィーチャがクラスターに取り込まれます。この方法では、ドローネ三角形分割を使用して近接ポイントが特定された後、三角形が凸包でトリミングされます。これにより、ポイント フィーチャは凸包の外側にあるどのフィーチャとも近接できなくなります。
[ドローネ三角形分割の切り詰め] オプションでは、近接フィーチャが互いに密接します。空間的な外れ値がデータに含まれている場合、この方法の効果はほとんどありません。これは、空間的な外れ値がないと、密接した状態にならないフィーチャには凸包の切り詰めの効果がほとんど及ばないようにドローネ三角形分割が拡大適用されるためです。
-
[空間ウェイト マトリックスの生成 (Generate Spatial Weights Matrix)] ツールを使用して、まず空間ウェイト マトリックス ファイル (*.swm) を作成し、次に [空間ウェイト マトリックス ファイル] パラメーターにそのファイルのパスを指定することで、固定距離や K 近傍など、その他の [空間的制限] を適用することができます。
メモ:
空間ウェイト マトリックス ファイル (SWM) ファイルを作成して空間的制限を定義できますが、実際にはウェイトは適用されません。クラスター化アルゴリズム内で空間的制限を定義すると、[逆距離] などの方法が使用されている場合でも、リレーションシップがバイナリになります。距離制限なしで [逆距離] を使用した場合、ウェイトに基づいてフィーチャを定義する SWM が生成されますが、クラスター化アルゴリズムでこれらのウェイトが無視され、すべてのフィーチャが他のフィーチャの近接フィーチャとして定義されます。これにより、パフォーマンスが影響を受ける場合があり、実際に空間的制限のないグループが生成されます。同様に、[K 近傍] コンセプトを選択した場合にも、空間的に制限されているが、必ずしも隣接していないクラスターが生成される可能性があります。
-
空間的制限と時間的制限の両方を使用してクラスターを作成するには、まず [空間ウェイト マトリックスの生成 (Generate Spatial Weights Matrix)] ツールを使用して、フィーチャ間の空間的および時間的リレーションシップを定義する空間ウェイト マトリックス ファイル (*.swm) を作成します。次に、[空間的制限] パラメーターを [空間ウェイトをファイルから取得] に設定し、[空間ウェイト マトリックス ファイル] パラメーターを作成した SWM ファイルに設定して、[空間的に制限された多変量クラスター分析 (Spatially Constrained Multivariate Clustering)] ツールを実行します。
フィーチャの Z 値を考慮する三次元クラスターを作成するには、まず [Z 値を使用] パラメーターをオンにして [空間ウェイト マトリックスの生成 (Generate Spatial Weights Matrix)] ツールを実行し、フィーチャ間の 3D リレーションシップを定義する空間ウェイト マトリックス ファイル (*.swm) を作成します。次に、[空間的制限] パラメーターを [空間ウェイトをファイルから取得] に設定し、[空間ウェイト マトリックス ファイル] パラメーターを作成した SWM ファイルに設定して、[空間的に制限された多変量クラスター分析 (Spatially Constrained Multivariate Clustering)] ツールを実行します。
このツールはメモリ容量に依存します。[空間ウェイト マトリックス] を使用すると、フィーチャごとに多数の近接フィーチャが生成される空間リレーションシップのコンセプトでメモリの問題が発生する可能性が高くなります。
空間的制限を定義すると、コンパクト、隣接、または近接クラスターが確保されます。[分析フィールド] のリストに空間的変数を含めることにより、これらのクラスター属性も利用しやすくなります。空間的変数の例には、高速道路の入り口ランプまでの距離、求職先へのアクセス性、買い物への近さ、接続の手段、さらに座標系 (X, Y) があります。時刻、曜日、または時間的距離を表す変数を含めることにより、クラスター メンバー間の時間的緊密性を高めることができます。
-
フィーチャ群に明瞭な空間的パターンが見られるときは (空間的に明瞭に分離している 3 つのクラスターなど)、空間的に制限されたクラスター化アルゴリズムは複雑になる可能性があります。このため、クラスター化アルゴリズムでは、まず明瞭に分離されているクラスターがあるかどうかを判定します。指定した [クラスターの数] よりも、分離クラスターの数の方が多い場合、このツールは解を得ることができず、実行に失敗し、該当するエラー メッセージが表示されます。分離クラスターの数と指定した [クラスターの数] がまったく同じである場合、下の画像 (A) に示すように、フィーチャの空間的構成のみをよりどころとしてクラスター化がなされます。分離クラスターの数よりも、指定した [クラスターの数] の方が多い場合、すでに判明している分離クラスターがクラスター化の出発点となります。たとえば、分離されているクラスターが 3 つあり、指定した [クラスターの数] が 4 である場合、下の画像 (B) に示すように 3 つのクラスターのいずれかを分割して 4 番目のクラスターが作成されます。
-
場合によっては、[空間的に制限された多変量クラスター分析 (Spatially Constrained Multivariate Clustering)] ツールが、適用された空間的制限を満たすことができず、近接フィーチャのないフィーチャだけがクラスター内のフィーチャになることがあります。[空間的制限] パラメーターを [ドローネ三角形分割の切詰め] に設定すると、分離されているクラスターの問題が解決する場合があります。
-
可能な限り多くの [分析フィールド] を含めたい傾向がありますが、このツールは単一の変数およびビルドで開始することにより最適に機能します。分析フィールドの数が少ないほうが、結果の解析が容易になります。また、フィールドの数が少ないと、どの変数が最適な区別を実行するか判断しやすくなります。
-
データに最適な [クラスター数] がわかっている場合があります。わからない場合は、クラスター数をいろいろと変えて試行し、クラスターの差別化に最適な数を見出す必要があります。 [クラスター数] パラメーターを空白のままにすると、ツールは 2 ~ 30 クラスターのクラスター分析ソリューションについて疑似 F 統計量を計算し、クラスターの最適数を評価します。クラスターの最適数は、メッセージ ウィンドウに表示されます。オプションの [クラスター数の評価に使用する出力テーブル] パラメーター値を指定すると、クラスター数が 2 ~ 30 のソリューションの F 統計を示すチャートが作成されます。F 統計値が最大となるソリューションでは、同じクラスターに属するフィーチャ同士の相似性、違うクラスターに属するフィーチャ同士の相違性が両方とも最大になります。[クラスター数] を決めるのに頼れる基準が他にない場合は、疑似 F 統計値が最大になる値を、クラスター数として採用してください。
-
分割された追加のクラスターが恣意的な結果となった場合、指定した [クラスターの数] に関係なく、このツールは停止します。たとえば、データに 3 つの空間的にクラスタリングされたポリゴンと 1 つの分析フィールドが含まれているとします。クラスター内のすべてのフィーチャに同じ分析フィールド値がある場合、いずれかのクラスターは、3 つのグループが作成された後に恣意的に分割されていることになります。このような場合に 4 つ以上のクラスターを指定しても、このツールは 3 つのクラスターしか作成しません。クラスター内の少なくとも 1 つの分析フィールドの値に、ある程度のばらつきがある場合、分割によるクラスターの作成は継続します。
-
分析に空間的または空間的時間的制限を含めると、疑似 F 統計値を比較できます ([入力フィーチャ] と [分析フィールド] が変わらない限り)。したがって、F 統計値を使用すると、最適な [クラスターの数] を算出できるだけでなく、最も効果的な [空間的制限] オプションも判断できるようになります。
-
一連のフィーチャに割り当てられるクラスター番号は実行するたびに変わる可能性があります。たとえば、所得変数に基づいてフィーチャを 2 つのクラスターに分割すると、解析の初回実行時に、高所得フィーチャがクラスター 2、低所得フィーチャがクラスター 1 とラベル付けされることがあります。同じ解析を 2 回目に実行すると、高所得フィーチャがクラスター 1 となる場合があります。解析を実行するごとに、中所得フィーチャ群の一部が高所得クラスターと低所得クラスターの間を行ったり来たりする可能性があります。
[メンバーシップ確率を算出する場合の順列] パラメーターでは、順列と証拠累積を使用して、フィーチャごとにクラスター メンバーシップの確率が算出されます。確率が高い場合、フィーチャは、そのフィーチャが割り当てられているクラスターに属している可能性が極めて高いことを意味します。確率が低い場合、フィーチャは、そのフィーチャが割り当てられているクラスターとはまったく異なることを示します。また、[分析フィールド]、[クラスター サイズ制限]、または [空間的制限] が変更されている場合は、そのフィーチャが別のクラスターに属している可能性があります。これらの確率の計算には、ランダム スパニング ツリーの順列と証拠累積が使用されます。この計算を大規模なデータセットに対して実行する場合には、相当な時間がかかることがあります。まず反復処理を行って分析に最適なクラスター数を特定し、次に以降の分析の実行で確率を算出することをお勧めします。[並列処理ファクター] 環境を増やすと、パフォーマンスが向上することもあります。
-
[入力フィーチャ] が投影されていない場合 (つまり、座標が、度、分、および秒で与えられた場合)、または出力座標系が地理座標系に設定された場合、弦の測定値を使用して距離が計算されます。弦距離の測定値が使用されるのは、少なくとも互いに約 30° の範囲内のポイントに対して、すばやく算出され、実際の測地距離に非常に近い推定値が得られるという理由からです。弦距離は、扁平回転楕円体に基づいています。地球の表面上の 2 点が与えられた場合、2 点間の弦の距離は、3 次元の地球内部を通過して 2 点を接続するラインの長さになります。弦距離は、メートル単位でレポートされます。
注意:
特に分析範囲が 30°を越えて広がる場合、データを投影することが最善策です。30°を超える場合、弦距離は測地距離の良好な推定値にはなりません。
このツールは確立を算出する並列処理をサポートしており、デフォルトで利用可能なプロセッサの 50 パーセントを使用します。プロセッサの数を増減するには、並列処理ファクター環境を使用します。
構文
arcpy.stats.SpatiallyConstrainedMultivariateClustering(in_features, output_features, analysis_fields, {size_constraints}, {constraint_field}, {min_constraint}, {max_constraint}, {number_of_clusters}, {spatial_constraints}, {weights_matrix_file}, {number_of_permutations}, output_table)
パラメーター | 説明 | データ タイプ |
in_features | クラスターを作成するフィーチャクラスまたはフィーチャ レイヤー。 | Feature Layer |
output_features | 新規に作成された出力フィーチャクラス。すべてのフィーチャ、指定した分析フィールド、および各フィーチャが属しているクラスターを示すフィールドが含まれています。 | Feature Class |
analysis_fields [analysis_fields,...] | クラスターを別のクラスターと区別するために使用するフィールドのリスト。 | Field |
size_constraints (オプション) | グループあたりのフィーチャの数またはグループあたりのターゲット属性値に基づいてクラスター サイズを指定します。
| String |
constraint_field (オプション) | クラスターごとに集計される属性値 | Field |
min_constraint (オプション) | クラスターあたりのフィーチャの最小数またはクラスターあたりの属性値の最小値。正の値を指定する必要があります。 | Double |
max_constraint (オプション) | クラスターあたりのフィーチャの最大数またはクラスターあたりの属性値の最大値。上限を設定すると、[number_of_clusters] パラメーターが無効になります。正の値を指定する必要があります。 | Double |
number_of_clusters (オプション) | 作成するクラスターの数。このパラメーターを空のままにすると、このツールは、クラスター数が 2 ~ 30 のクラスター化ソリューションの疑似 F 統計を算出して、最適なクラスター数を評価します。 フィーチャの最大数または属性値の最大値が設定されている場合、このパラメーターは無効になります。 | Long |
spatial_constraints (オプション) | フィーチャ間の空間リレーションシップをどのよう定義するかを指定します。
| String |
weights_matrix_file (オプション) | フィーチャ間の空間リレーションシップと潜在的に時系列のリレーションシップを定義する空間ウェイトが含まれるファイルへのパス。 | File |
number_of_permutations (オプション) | メンバーシップ安定性スコアを算出する場合のランダムな順列の数。0 (ゼロ) を選択すると、確率は算出されません。これらの確率の計算には、ランダム スパニング ツリーの順列と証拠累積が使用されます。 この計算を大規模なデータセットに対して実行する場合には、相当な時間がかかることがあります。まず反復処理を行って分析に最適なクラスター数を特定し、次に以降の分析の実行で確率を算出することをお勧めします。[並列処理ファクター] 環境設定を 50 に設定すると、このツールの実行時間が改善されることがあります。 | Long |
output_table | 作成されるテーブルに、最適なクラスター数を評価するために算出された F 統計値の結果が示されます。このテーブルから作成されたチャートには、[コンテンツ] ウィンドウの出力フィーチャ レイヤーでアクセスできます。 | Table |
コードのサンプル
次の Python ウィンドウ スクリプトは、SpatiallyConstrainedMultivariateClusteringツールの使用方法を示しています。
import arcpy arcpy.env.workspace = r"C:\Analysis arcpy.SpatiallyConstrainedMultivariateClustering_stats("CA_schools", "CA_Schools_100k_Students", "NumStudent", "ATTRIBUTE_VALUE", "NumStudent", 100000, None, None,
"CONTIGUITY_EDGES_CORNERS")
次の Python スクリプトは、[SpatiallyConstrainedMultivariateClustering] ツールの使用方法を示します。
# Creating regions of similar schools districts with at least 100,0000 students each
# Import system modules
import arcpy
# Set property to overwrite existing output, by default
arcpy.env.overwriteOutput = True
# Local variables...
workspace = r"E:\working\data.gdb"
arcpy.env.workspace = workspace
# Create clusters of schools with a minimum of 100,000 students
arcpy.stats.SpatiallyConstrainedMultivariateClustering("CA_schools", "CA_Schools_100k_Students", "NumStudent",
"ATTRIBUTE_VALUE", "NumStudent", 100000, None, None,
"CONTIGUITY_EDGES_CORNERS")
# Create a spatial weights matrix using k nearest neighbors 16 to have more control over the search neighborhood
arcpy.stats.GenerateSpatialWeightsMatrix(r"E:\working\data.gdb\CA_schools", "UID",
r"E:\working\schools_knn_16.swm", "K_NEAREST_NEIGHBORS", "EUCLIDEAN", 1,
None, 16, "NO_STANDARDIZATION", None, None, None, None, "DO_NOT_USE_Z_VALUES")
# Create clusters again this time using the SWM file for search neighborhood and a maximum number
# of students per cluster
arcpy.stats.SpatiallyConstrainedMultivariateClustering("CA_schools", "CA_Schools_SWM_Knn16", "NumStudent", "ATTRIBUTE_VALUE",
"NumStudent", None, 250000, None, "GET_SPATIAL_WEIGHTS_FROM_FILE",
r"E:\working\schools_knn_16.swm")
# Use Summary Statistics with Cluster ID as a case field to see how many students were assigned to each cluster
arcpy.analysis.Statistics("CA_Schools_SWM_Knn16", "School_SummaryStatistics", "NumStudent SUM", "CLUSTER_ID")
環境
ライセンス情報
- Basic: はい
- Standard: はい
- Advanced: はい