空間クロスレグレッシブ・モデル
Spatial Cross-Regressive (SLX)回帰モデルは、フィーチャ・エンジニアリング・ステップを含む通常のライナー回帰を実行して、データに空間コンテキストを提供するフィーチャを追加します。
これはトブラーの法則によれば、遠いものよりも近いものが関係しています。 このアルゴリズムは、隣接する観測からの平均を表す、特定の特徴の空間ラグを持つ1つ以上の列を追加します。
SLXRegressor
クラスでは、隣接する観測がどのように相互作用するかを確立するために、spatial_weights_definition
パラメータによる空間重みの定義が必要です。 次の表に、SLXRegressor
クラスの主なメソッドを示します。
メソッド | 説明 |
---|---|
fit |
fit メソッドのパラメータは、ほとんどの回帰アルゴリズムで同じですが、空間ラグのコンピュートに使用される列を指定するcolumn_ids パラメータを除きます。
このアルゴリズムは、説明変数のパラメータと、空間ラグで追加されたパラメータに関連付けられたパラメータを推定します。 |
predict |
predict メソッドは、fit プロセスで定義された列と同じ列を使用してデータセットの空間ラグを計算し、拡張データセットで評価されるOLS方程式の値を返します。
|
fit_predict |
トレーニング・データを使用して、fit およびpredict メソッドを順番にコールします。
|
score |
指定されたデータのR平方統計を返します。
|
詳細は、「Oracle Spatial AI Python APIリファレンス」のSLXRegressorクラスを参照してください。
次の例では、block_groups
およびSpatialDataFrame
SLXRegressor
クラスを使用して、MEDIAN_INCOME
列をターゲット変数として使用して、トレーニング・データ(X_train
)を含むSLX回帰モデルをトレーニングします。 MEAN_AGE
、 MEAN_EDUCATION_LEVEL
およびHOUSE_VALUE
列は、空間ラグの計算に使用されます。
テスト・セット(X_test
)を使用して、コードはpredict
メソッドとscore
メソッドをコールし、ターゲット変数とR平方メトリックの値をそれぞれ推定します。
from oraclesai.preprocessing import spatial_train_test_split
from oraclesai.weights import KNNWeightsDefinition
from oraclesai.regression import SLXRegressor
from oraclesai.pipeline import SpatialPipeline
from sklearn.preprocessing import StandardScaler
# Define the explanatory variables
X = block_groups[['MEDIAN_INCOME', 'MEAN_AGE', 'MEAN_EDUCATION_LEVEL', 'HOUSE_VALUE', 'INTERNET', 'geometry']]
# Define the training and test sets
X_train, X_test, _, _, _, _ = spatial_train_test_split(X, y="MEDIAN_INCOME", test_size=0.2, random_state=32)
# Define the spatial weights
weights_definition = KNNWeightsDefinition(k=10)
# Create a SXL Regressor model
slx_model = SLXRegressor(spatial_weights_definition=weights_definition)
# Add the model to a pipeline along with a preprocessing step
slx_pipeline = SpatialPipeline([('scale', StandardScaler()), ('slx_regression', slx_model)])
# Train the model
slx_pipeline.fit(X_train, "MEDIAN_INCOME", slx_regression__column_ids=["MEAN_AGE", "MEAN_EDUCATION_LEVEL", "HOUSE_VALUE"])
# Print the predictions with the test set
slx_predictions_test = slx_pipeline.predict(X_test.drop(["MEDIAN_INCOME"])).flatten()
print(f"\n>> predictions (X_test):\n {slx_predictions_test[:10]}")
# Print the score with the test set
slx_r2_score = slx_pipeline.score(X_test, y="MEDIAN_INCOME")
print(f"\n>> r2_score (X_test):\n {slx_r2_score}")
プログラムは次の出力を生成します:
>> predictions (X_test):
[102070.14467552 103393.34495125 18080.13247972 28780.88885959
166553.11466239 47847.19216301 97311.05264284 28621.06664768
86030.99787827 18315.17778001]
>> r2_score (X_test):
0.6520502048458249
トレーニング済モデルのプロパティ・サマリーを出力すると、トレーニング・プロセスで指定した列の空間ラグに関連付けられた新しいパラメータが表示されます。
REGRESSION
----------
SUMMARY OF OUTPUT: ORDINARY LEAST SQUARES
-----------------------------------------
Data set : unknown
Weights matrix : unknown
Dependent Variable : dep_var Number of Observations: 2750
Mean dependent var : 69703.4815 Number of Variables : 8
S.D. dependent var : 39838.5789 Degrees of Freedom : 2742
R-squared : 0.6404
Adjusted R-squared : 0.6395
Sum squared residual:1569034862694.453 F-statistic : 697.5148
Sigma-square :572222779.976 Prob(F-statistic) : 0
S.E. of regression : 23921.178 Log likelihood : -31625.004
Sigma-square ML :570558131.889 Akaike info criterion : 63266.007
S.E of regression ML: 23886.3587 Schwarz criterion : 63313.362
------------------------------------------------------------------------------------
Variable Coefficient Std.Error t-Statistic Probability
------------------------------------------------------------------------------------
CONSTANT 69454.0719691 458.7116277 151.4111868 0.0000000
MEAN_AGE 3407.3842392 632.8239483 5.3844110 0.0000001
MEAN_EDUCATION_LEVEL 11619.0976034 1254.9099676 9.2589093 0.0000000
HOUSE_VALUE 20550.0723247 970.0583796 21.1843666 0.0000000
INTERNET 10089.1251192 670.1690078 15.0545982 0.0000000
SLX-MEAN_AGE 106.5803082 136.9729582 0.7781120 0.4365701
SLX-MEAN_EDUCATION_LEVEL -995.5040769 172.6431756 -5.7662521 0.0000000
SLX-HOUSE_VALUE 3.1809763 136.4013684 0.0233207 0.9813962
------------------------------------------------------------------------------------
REGRESSION DIAGNOSTICS
MULTICOLLINEARITY CONDITION NUMBER 9.435
TEST ON NORMALITY OF ERRORS
TEST DF VALUE PROB
Jarque-Bera 2 1258.500 0.0000
DIAGNOSTICS FOR HETEROSKEDASTICITY
RANDOM COEFFICIENTS
TEST DF VALUE PROB
Breusch-Pagan test 7 1083.843 0.0000
Koenker-Bassett test 7 436.439 0.0000
DIAGNOSTICS FOR SPATIAL DEPENDENCE
TEST MI/DF VALUE PROB
Moran's I (error) 0.2586 31.945 0.0000
Lagrange Multiplier (lag) 1 1044.952 0.0000
Robust LM (lag) 1 55.266 0.0000
Lagrange Multiplier (error) 1 997.181 0.0000
Robust LM (error) 1 7.495 0.0062
Lagrange Multiplier (SARMA) 2 1052.447 0.0000
================================ END OF REPORT =====================================