機械翻訳について

適応的空間回帰

AdaptiveSpatialRegressorクラスは、データに適合する回帰アルゴリズムを検出する自動化されたアプローチで構成されます。 これは、使用するモデルがわからない場合に最適なアプローチです。

このアルゴリズムは、空間診断を取得するために、spatial_weights_definitionパラメータを指定してOLSRegressorモデルをトレーニングします。 空間統計に基づき、回帰アルゴリズムを提案した。 このアルゴリズムを使用する場合は空間加重定義を指定する必要があります。指定しない場合、アルゴリズムはOLSRegressorを推奨します。

次の図は、最適なアルゴリズムを選択するための現在のワークフローを示しています。



空間診断から、このアルゴリズムはMoranのI統計を取得します。 値が統計的に有意である場合、次のように解釈されます:

  • MoranのI統計の正の値は、空間依存性または空間クラスタリングの存在を示し、この空間依存性を含むアルゴリズムが優先されます。 空間依存性を考慮する2つのアルゴリズムは、SpatialLagRegressorSpatialErrorRegressorです。 空間診断から取得したLagrange乗数に応じて、アルゴリズムはそれらのいずれかを選択します(空間回帰診断の詳細は、[ 3 ]を参照)。
  • MoranのI統計が負の場合は、リージョンの分散または空間異方性が存在することを示し、GWRRegressorなどのローカル・メソッドがより適しています。

MoranのI統計が統計的に重要ではなく、残余の変動が重要である場合、アルゴリズムはGWRRegressorを選択します。

詳細は、「Oracle Spatial AI Python APIリファレンス」SpatialAdaptiveRegressorクラスを参照してください。

次の例では、block_groups SpatialDataFrameおよびSpatialAdaptiveRegressorを使用して、トレーニング・セットからモデルをトレーニングします。 次に、テスト・セットを使用して、コードがターゲット変数を推定し、R平方メトリックを取得します。

%python

from oraclesai.preprocessing import spatial_train_test_split 
from oraclesai.weights import KNNWeightsDefinition 
from oraclesai.regression import SpatialAdaptiveRegressor 
from oraclesai.pipeline import SpatialPipeline 
from sklearn.preprocessing import StandardScaler 

# Define target and explanatory variables 
X = block_groups[['MEDIAN_INCOME', 'MEAN_AGE', 'MEAN_EDUCATION_LEVEL', 'HOUSE_VALUE', 'INTERNET', 'geometry']] 

# Define training and test sets 
X_train, X_test, _, _, _, _ = spatial_train_test_split(X, y="MEDIAN_INCOME", test_size=0.2, random_state=32) 

# Define spatial weights 
weights_definition = KNNWeightsDefinition(k=5) 

# Create an instance of SpatialAdaptiveRegressor 
spreg_model = SpatialAdaptiveRegressor(spatial_weights_definition=weights_definition)

# Add the model to a spatial pipeline along with a preprocessing step 
spreg_pipeline = SpatialPipeline([('scale', StandardScaler()), ('spreg_regression', spreg_model)]) 

# Train the model 
spreg_pipeline.fit(X_train, "MEDIAN_INCOME") 

# Print the selected model 
print(f">> Algorithm chosen: {spreg_pipeline.named_steps['spreg_regression'].model_type.__name__}") 

# Print the predictions with the test set 
spreg_predictions_test = spreg_pipeline.predict(X_test.drop("MEDIAN_INCOME")).flatten() 
print(f"\n>> predictions (X_test):\n {spreg_predictions_test[:10]}") 

# Print the score with the test set 
spreg_r2_score = spreg_pipeline.score(X_test, "MEDIAN_INCOME") 
print(f"\n>> r2_score (X_test):\n {spreg_r2_score}")

プログラムの出力は、SpatialAdaptiveRegressorによって選択されたアルゴリズムの名前、テスト・セットの最初の10個の観測の予測、およびテスト・セットのR平方メトリックで構成されます。

> Algorithm chosen: ErrorModel

>> predictions (X_test):
 [101563.4135695  105231.46019748  24081.18722085  38529.02025428
 164280.78271333  50332.38349005 102590.59769969  27659.63416001
  81911.84382123  17657.93225933]

>> r2_score (X_test):
 0.6456845274014411