空間加重
空間重みは、空間AIでの分析とモデリングのための空間関係を定量化するために使用されます。
空間加重は加重グラフとして表され、データセット内の各観測はノードを表します。 2つのノードが地理的コンテキスト内の隣接ノードである場合、そのノード間に重みが関連付けられているエッジがあります。 場合によっては、重みがバイナリであり、両方のノードが空間的に接続されていることを示します。それ以外の場合、重みはノード間の距離に基づきます。 疎グラフを使用するのは一般的な方法であるため、通常、空間ウェイトは隣接リストを使用して実装されます。
空間自動相関統計やリージョン化アルゴリズムなどの多くの機械学習アルゴリズムと空間アナリティクスは、空間AIの空間重みに依存しています。 次の表に、空間AIでサポートされている空間重みを示します。
空間加重 | 説明 |
---|---|
KNNWeightsDefinition |
近接性に基づいており、K近傍の空間関係を定義します。 |
KernelBasedWeightsDefinition |
これは、カーネル関数を使用して空間関係を定義し、減衰関数です。つまり、近接近傍は大きい値を持ち、近接近傍は小さい値を持ちます。
|
DistanceBandWeightsDefinition |
2つのノード間の距離を、接続するエッジのウェイトとして使用します。 バイナリ・パラメータがTrue の場合、しきい値を下回る距離にあるすべてのネイバーの重みは1 です。 それ以外の場合は、減衰パラメータalpha を使用して重みを見積もります。 デフォルトでは、ユークリッド距離メトリックが使用されます。
|
RookWeightsDefinition |
関係は連続性に基づいており、2つのジオメトリが少なくとも1つのエッジを共有している場合、隣接しています。 |
QueenWeightsDefinition |
この定義は矛盾に基づいています。 共通の頂点を持つ2つのジオメトリは、ウェイトが1 のネイバーです。
|
空間ウェイトのタイプは、解決する問題のシナリオによって異なります。 空間ウェイトが連続性に基づいていない場合、データは予測参照システム内に存在する必要があります。 詳細は、「Oracle Spatial AI Python APIリファレンス」のoraclesai.weightsモジュールを参照してください。
次の例は、KNNWeightsDefinition
関数およびSpatialWeights.create
関数を使用して、block_groups
SpatialDataFrame
からSpatialWeights
クラスのインスタンスを作成する方法を示しています。
from oraclesai.weights import SpatialWeights, KNNWeightsDefinition
spatial_weights = SpatialWeights.create(block_groups, KNNWeightsDefinition(k=5))
print(f"neighbors' indexes: {spatial_weights.neighbors[0]}")
print(f"neighbors' weights: {spatial_weights.weights[0]}")
前述のコードは、最初の監視のネイバーのインデックスとその重みを出力します。 この場合、すべての重みはバイナリです。 ネイバーとその重みは、それぞれneighbors
プロパティとweights
プロパティを使用して参照できます。
neighbors' indexes: [2806, 81, 1717, 80, 1916]
neighbors' weights: [1.0, 1.0, 1.0, 1.0, 1.0]