3.1.4 評価
新しいデータでモデルを使用して予測を行う前に、まずモデルの精度を評価する必要があります。 様々なメソッドを使用してモデルを評価できます。
モデル設定に関する情報
モデルの構築後に生成された様々な統計を調べて、モデルを評価します。 統計はモデルの品質を示します。
- モデル詳細: モデル設定、属性係数、適合詳細など、GLMモデル・オブジェクトを介して使用可能なモデル詳細については、次のスクリプトを実行します。
glm_mod
また、次に示すように個別に表示および表示できます。
- 属性係数: 次のスクリプトを実行して、モデルの属性係数を表示します。
z.show(glm_mod.coef.round(2).head())
- 適合詳細: 次のスクリプトを実行して、モデルの適合の詳細を表示します。
z.show(glm_mod.fit_details.round(2).head())
スコア
スコアリングは、テスト・データにモデルを適用してパフォーマンスにアクセスするプロセスです。
- 販売価格の予測: モデルを使用して、テスト・データを予測します。
BROOKLYN_RES = glm_mod.predict(TEST.drop('sale_price'), supplemental_cols = TEST[:,['ID','sale_price']]) z.show(BROOKLYN_RES.round(2).head())
- モデル・パフォーマンスの評価: スコア関数を使用してモデルのパフォーマンスを評価します。
model_coef = len(glm_mod.coef) no_rows_test = TEST_X.shape[0] R_squared = glm_mod.score(TEST_X, TEST_Y).round(3) print( f"RMSE : {(((BROOKLYN_RES['PREDICTION'] - BROOKLYN_RES['sale_price']) ** 2).mean() ** .5).round(2)}\n" f"MAE: {((abs(BROOKLYN_RES['PREDICTION'] - BROOKLYN_RES['sale_price'])).mean()).round(2)}\n" f"R squared: {R_squared}\n" f"Adjusted R^2: {(1 - ( 1 - R_squared)*(no_rows_test-1)/(no_rows_test - model_coef -1)).round(4)}" )
メトリックに基づくモデルのパフォーマンスの解釈は次のとおりです:
- RMSE (286,137.56): モデルの予測は、実際の値から平均して約286、137.56単位偏ります。
- MAE (170,992.05): 予測における平均絶対誤差は170、992.05単位であり、大きな誤差を損なうことなく、モデルの精度を把握できます。
- R² (0.581): モデルは、ターゲット変数の差異の58.1%を説明し、データへの適度な適合を示唆しています。
- 調整R² (0.5604): 予測子の数を調整した後、このモデルでは差異の56.04%について説明
全体として、このモデルは中程度の予測精度を示し、さらなる改善の可能性を示しています。
- 残余グラフ: 残差プロットには、異方性パターンが表示されています。 これは、モデル内のエラーに一貫性がないことを示します。 適合値(予測値)と残差との非線形関係は、モデルをさらに改善できることを示唆しています。
import matplotlib.pyplot as plt y_pred = BROOKLYN_RES['PREDICTION'].pull() residuals = (BROOKLYN_RES['sale_price'] - BROOKLYN_RES['PREDICTION']).pull() plt.scatter(y_pred, residuals) plt.xlabel('Predicted Sale Prices') plt.ylabel('Residuals') plt.title('Residual Plot', fontsize=16) plt.grid(True) plt.axhline(y=0, color='r', linestyle='--') plt.show()
データをスコアリングして予測詳細を表示するSQLインタフェース
SQLインタフェースを使用して、データのスコアリングと予測を行うことができます。 テスト・データは、SQLを使用して問合せできるように、BROOKLYN_GLM_TEST_DATAにマテリアライズドされます。 マテリアライズド・メソッドは、Oracle Machine Learning oml.DataFrameプロキシ表の内容をOracle Database表に書き込みます。
- 次の問合せで使用するためにBROOKLYN_GLM_TEST_DATAをマテリアライズします:
try: oml.drop(table = 'BROOKLYN_GLM_TEST_DATA') except: pass _ = TEST.materialize(table = 'BROOKLYN_GLM_TEST_DATA')
-
SQLの説明予測詳細を含む予測の表示: 予測の詳細をスコアリングおよび表示するSQLコマンド。 予測関数は、BROOKLYN_GLM_REGRESSION_MODELという名前のglm回帰モデルをマテリアライズド表BROOKLYN_GLM_TEST_DATAのデータに適用します。 この問合せには、予測に最も影響する予測子の情報が含まれています。
SELECT ID, round(PREDICTION_YRS_RES,3) PRED_YRS_RES, round(PRED_LOWER_LIMIT,1) LOWER_BOUND, round(PRED_UPPER_LIMIT,1) UPPER_BOUND, RTRIM(TRIM(SUBSTR(OUTPRED."Attribute1",17,100)),'rank="1"/>') FIRST_ATTRIBUTE, RTRIM(TRIM(SUBSTR(OUTPRED."Attribute2",17,100)),'rank="2"/>') SECOND_ATTRIBUTE, RTRIM(TRIM(SUBSTR(OUTPRED."Attribute3",17,100)),'rank="3"/>') THIRD_ATTRIBUTE FROM (SELECT ID, PREDICTION(BROOKLYN_GLM_REGRESSION_MODEL USING *) PREDICTION_YRS_RES, PREDICTION_BOUNDS(BROOKLYN_GLM_REGRESSION_MODEL USING *).LOWER PRED_LOWER_LIMIT, PREDICTION_BOUNDS(BROOKLYN_GLM_REGRESSION_MODEL USING *).UPPER PRED_UPPER_LIMIT, PREDICTION_DETAILS(BROOKLYN_GLM_REGRESSION_MODEL USING *) PD FROM BROOKLYN_GLM_TEST_DATA WHERE ID < 100015 ORDER BY ID) OUT, XMLTABLE('/Details' PASSING OUT.PD COLUMNS "Attribute1" XMLType PATH 'Attribute[1]', "Attribute2" XMLType PATH 'Attribute[2]', "Attribute3" XMLType PATH 'Attribute[3]') OUTPRED
結論として、一般化線形モデル・アルゴリズムを使用してボストンの中間住宅価格を予測することに成功しました。
親トピック: 回帰ユース・ケース