2017-07-13 13 views
1

ターゲットがログに記録されているときにクロス検証によってRMSEを計算するのが難しくなります。ターゲットがログに記録されているときにクロス検証を使用して、ログに記録されていない領域でのRMSE計算

(対象が記録されていない場合)私は、以下の方法で、RMSE関数を定義している:

def rmse_cv(model): 
rmse= np.sqrt(-cross_val_score(model, X_train_s, Y_train, scoring="neg_mean_squared_error", cv = 5)) 
return(rmse) 

model_ridge = Ridge() 
alphas = [0.005, 0.05, 0.1, 0.3, 1, 3, 5, 10, 15] 
cv_ridge = [rmse_cv(Ridge(alpha = alpha)).mean() for alpha in alphas] 
print(cv_ridge) 

今、私がログに記録されたターゲットY_log_trainでY_trainを交換し、非ログイン空間でRMSEを計算します。私は、クロスバリデーションをしながらこれを行う方法がわかりません。私は1つのアルファ値のためのモデルを実行して、トレーニングデータのRMSEを取得する必要がある場合

、私は、下記の手順になります。

model_ridge = Ridge(alpha =10).fit(X_train_s, Y_log_train) 
y_pred_log_r = model_ridge.predict(X_train_s) 
y_pred_r = np.exp(y_pred_log_r) 

RMSE_ridge_train =np.sqrt(mean_squared_error(Y_train, y_pred_r)) 

答えて

0

さて、あなたはあなたのログ値のRMSEを持っているだけでしまいます。ログ値の残差と観測値の残差が真値と観測値の残差の対数であるとは言えません。

変数をログに記録すると、RMSEは変換された変数のRMSEに過ぎません。

編集:私はログに記録され、非ログインターゲットにRMSEに基づくモデルのセットを比較する必要があれば、これはもう少し明確にするhttps://stats.stackexchange.com/questions/56658/how-do-you-interpret-rmsle-root-mean-squared-logarithmic-error

+0

た私は、私はそれをどのように行うだろう、疑問に思って?あなたの応答をありがとう! – user6200992

+0

同じ計算です。 1つは 'y1 = x'を使用し、もう1つは' z = log(x) 'のところで' y2 = z'を使います。次に、y1とy2の両方のRMSEを計算して比較します。 – zfisher

+0

私はそれをしましたが、値は比較できません。彼らは非常に異なっています。実際には、RMSEの値がアルファ= 10と同じであるかどうかを、2つのアプローチを使用して調べてみましたが、私の質問で言及しましたが、それらは異なっています。それが私が正しい提案を求めている理由です。 – user6200992

関連する問題