• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    해결됨

RMSLE의 사용에 관한 질문입니다

23.08.26 20:55 작성 조회수 491

0

머신러닝 적용을 위한 Feature Engineering 강의 10:10 부분에서 질문 드립니다!

이번 강의에서는 RMSLE 계산을 위해 아래와 같이 함수를 만들었습니다.

def get_rmsle(y_actual, y_pred):
    diff = np.log(y_pred + 1) - np.log(y_actual + 1)
    mean_error = np.square(diff).mean()                 
    return np.sqrt(mean_error)   

그리고 이를 rmsle_scorer 객체로 만든 후

rmsle_scorer = make_scorer(get_rmsle, greater_is_better=False)

GridSearchCV 의 scoring에 넣어줬는데요,

lasso_grid=GridSearchCV(estimator = Lasso(), param_grid = hyperparams, 
                verbose=True, scoring=rmsle_scorer, cv=5, n_jobs=-1)

 

전에 강의에서는 RMSLE를 계산하기 위해 아래와 같은 과정을 거쳤던 것이 생각났습니다.

from sklearn.metrics import mean_squared_log_error
print("RMSLE:", np.sqrt(mean_squared_log_error(y_true, y_pred))) 

 

이번 강의에서 np.sqrt(mean_squared_log_error(y_true, y_pred)) 를 사용하지 않고, RMSLE를 계산하기 위한 함수를 따로 만든 이유는 GridSearchCV의 scoring에 적용을 하기 위함이라고 이해하면 되는 것인지 궁금합니다!

 

그리고, 함수를 필수적으로 만들어야 한다면

def get_rmsle(y_actual, y_pred):                 
    return np.sqrt(mean_squared_log_error(y_true, y_pred))  

와 같은 형식으로 함수를 만들 수도 있는 것인지 여쭙고 싶습니다!

답변 2

·

답변을 작성해보세요.

1

안녕하세요. 답변 도우미입니다. 여러 의견을 주셨는데요. 저희가 정확히 이해한 것인지 조금 걱정은 되는데요. 최대한 의견을 드립니다.

강의의 내용을 기반으로 질문에 답변드리겠습니다.

1. 함수를 따로 만든 이유:

- 예, 맞습니다. GridSearchCV의 scoring 파라미터는 사용자 정의 함수를 사용할 수 있기 때문에, RMSLE 계산을 위해 사용자 정의 함수를 만들어서 scoring 파라미터에 넘겨줄 수 있습니다.

- 또한, mean_squared_log_error 함수는 y_pred 값 중 하나라도 0 미만일 경우 에러를 발생시키기 때문에, 사용자 정의 함수를 만들어 y_pred + 1을 사용하면 이 문제를 해결할 수 있습니다.

2. 함수를 필수적으로 만들어야 한다면 위와 같은 형식으로 함수를 만들 수 있는가?

- 네, mean_squared_log_error를 사용하여 RMSLE를 계산하는 사용자 정의 함수를 만들 수 있습니다. 다만, 앞서 언급한 것처럼 y_pred 값 중 하나라도 0 미만인 경우 에러가 발생할 수 있기 때문에 이에 대한 처리가 필요합니다.

- 사용자 정의 함수를 사용하면 이러한 문제점을 회피하면서 동시에 원하는 로직 또는 전처리를 적용할 수 있습니다.

- 따라서 제안하신 함수 형태도 사용 가능하지만, y_pred의 값이 음수가 되지 않도록 주의해야 합니다.

def get_rmsle(y_actual, y_pred):                 
    return np.sqrt(mean_squared_log_error(y_actual, y_pred))  

이렇게 사용자 정의 함수를 만들어 GridSearchCV의 scoring 파라미터에 적용함으로써, GridSearch 과정에서 RMSLE를 기준으로 최적의 파라미터를 찾을 수 있습니다.

감사합니다~

 

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.08.28

안녕하세요, 인프런 AI 인턴이에요.

RMSLE은 Root Mean Squared Logarithmic Error의 약자로, 예측 값과 실제 값 사이의 오차를 측정하는 지표입니다. RMSLE는 오차를 로그 스케일로 변환하여 평가하는 것이 특징이에요.

강의에서 사용한 get_rmsle 함수는 RMSLE를 계산하는 함수로, 머신러닝 모델의 평가를 위해 GridSearchCV의 scoring에 적용하기 위해 따로 함수를 만든 것입니다.

RMSLE는 sklearn.metrics의 mean_squared_log_error를 통해 계산할 수 있지만, GridSearchCV의 scoring 파라미터에 직접 사용할 수 없는 점이 있습니다. 그래서 강의에서는 사용자가 직접 RMSLE를 계산하는 함수를 만들어서 GridSearchCV의 scoring에 적용한 것입니다.

따라서, 이번 강의에서 RMSLE를 계산하기 위한 함수를 따로 만들어 사용한 이유는 GridSearchCV의 scoring에 적용하기 위함입니다.

함수를 필수적으로 만들어야 하는지에 대해서는, 사용자의 상황과 목적에 따라 다를 수 있습니다. 만약 GridSearchCV를 사용하고 싶다면, RMSLE를 계산하기 위한 함수는 필요합니다. 그러나 GridSearchCV를 사용하지 않거나 다른 평가 지표를 사용하고 싶다면, 따로 함수를 만들지 않아도 됩니다.

이해하셨나요? 추가적인 질문이 있으면 언제든지 물어보세요. 감사합니다.