LISAホット・スポット
Local Indicators of Spatial Association (LISA)は、地理的クラスタを識別し、地理的外れ値を見つけるために広く使用されています。 このクラスタ化アプローチは、LISA Hoptspotクラスタ化と呼ばれます。
この空間クラスタリングの使用例としては、警察が人員配置やロールをディシジョンし、自動車事故や歩行者の死亡パターンを特定し、赤信号や道路網の配置を最適化するのに役立つ犯罪のホット・スポットを見つけることが挙げられます。
LISAホット・スポット・クラスタリング・アルゴリズムは、局所的な自動相関分析を行い、観測とその直近の周囲の共変量を要約します。 高い値(ホット・スポット)の領域と低い値(コールド・スポット)の領域を識別できます。 リージョンごとに、各クアドラントを表す4つの異なるラベルがあります。
- HH (高)。 高い値で囲まれた高い値。
- LH (低-高)。 高い値で囲まれた低い値。
- LL (低)。 下限値で囲まれた下限値。
- HL (高低)。 低い値の周りの高い値。
LISA Hotspotクラスタ化アルゴリズムは、各ロケーションのローカルMoranのI (つまりLISA)を計算します。
- 正のローカルMoranのI統計を持つロケーションは、ホット・スポットまたはコールド・スポットを表す、類似した値(高い値または低い値)を持つ近傍の存在を示します。
- 負のローカルMoranの値を持つロケーションは、異なる値を持つ隣接ロケーションを示します。低い値で囲まれた高い値、または高い値で囲まれた低い値で空間外れ値を表すことができます。
LISAHotspotClustering
クラスはLISAホット・スポット・クラスタリングを実装し、次の表でそのパラメータについて説明します。
パラメータ | 説明 |
---|---|
column |
アルゴリズムがLISAホット・スポット・クラスタリング・メソッドの実行に関連付けられたデータを使用する列を示す数値。 列が定義されていない場合、アルゴリズムは単一の列を持つデータセットを想定します。 |
spatial_weights_definition |
近隣のロケーション間の関係を定義します。 隣人から情報を取得する必要があります。 |
max_p_value |
このしきい値を下回るp値でリージョンにラベルを付けるために使用します。 p値がこのしきい値以上のリージョンの場合、アルゴリズムによってラベル-1 が割り当てられます。
|
supported_quadrants |
これらの四分位数からの観測だけにラベルが付けられることを示すリスト。 値は四分位ロケーションを示します: 1 (High-High) , 2 (Low-High) , 3 (Low-Low) , 4 (High-Low) 。 残りの観測には、ラベル-1 が割り当てられます。
|
seed |
条件付き無作為化の再現性を保証します。 |
n_jobs |
同時に実行されているジョブの最大数。 |
LISAHotspotClustering
のインスタンスが作成されると、fit
メソッドをコールしてクラスタ化アルゴリズムが実行されます。 各監視に割り当てられたラベルは、labels_
プロパティを使用して取得できます。 次の表に、このクラスから使用可能な主なプロパティを示します。
パラメータ | 説明 |
---|---|
labels_ |
各監視に割り当てられたラベル。 ラベルは四角形のロケーションを示します: 1 (High-High) , 2 (Low-High) , 3 (Low-Low) , 4 (High-Low) 。 オブジェクトに渡されるパラメータに応じて、観測には-1 というラベルが付きます。
|
regions_ |
空間重みに従って地理的に接続された同じラベルの観測を表す辞書。 |
Is |
それぞれのローカルMoranのIです。 |
ps |
ローカルMoranのそれぞれの観察のIのp値。 |
詳細は、「Oracle Spatial AI Python APIリファレンス」のLISAHotspotClusteringクラスを参照してください。
次の例では、block_groups
SpatialDataFrame
のMEDIAN_INCOME
列に対してホット・スポット分析を実行します。 トレーニング・データをfit
メソッドに渡す場合、ターゲット変数を定義する必要はありません。 labels_
プロパティは、各観測に割り当てられたラベルを返します。ホット・スポットは1
、コールド・スポットは3
、外れ値は2
および4
で表されます。
from oraclesai.weights import DistanceBandWeightsDefinition
from oraclesai.clustering import LISAHotspotClustering
# Define variables and CRS
X = block_groups[['MEDIAN_INCOME', 'MEAN_AGE', 'MEAN_EDUCATION_LEVEL', 'geometry']].to_crs('epsg:3857')
# Create an instance of LISAHotspotClustering
lisa_model = LISAHotspotClustering(column="MEDIAN_INCOME",
max_p_value=0.05,
spatial_weights_definition=DistanceBandWeightsDefinition(threshold=2500))
# Train the model
lisa_model.fit(X)
# Print the labels
print(f"labels = {lisa_model.labels_[:10]}")
プログラムは、最初の10個の観測のラベルを出力します。
labels = [ 2 2 1 1 1 1 -1 -1 -1 -1]