inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] 처음하는 파이썬 머신러닝 부트캠프 (쉽게! 실제 캐글 문제 풀며 정리하기) [데이터분석/과학 Part2]

머신러닝 적용을 위한 Feature Engineering

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

해결된 질문

817

vpdtlrdl

작성한 질문수 45

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))  

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

python 머신러닝 pandas kaggle

답변 2

1

잔재미코딩 DaveLee

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

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

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 인턴이에요.

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를 사용하지 않거나 다른 평가 지표를 사용하고 싶다면, 따로 함수를 만들지 않아도 됩니다.

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

자료 공유 질문

0

57

1

Ascii 에러 관련하여 질문드립니다

0

81

1

고차원 데이터 질문

0

52

0

test / train 데이터 나누기

0

97

1

세션4 범주형 데이터 분석 패턴 강의 질문

0

199

2

pandas 2.2.2, xgboost 2.1.3 에러 해결 방법

0

215

1

sklearn v1.5.1

0

168

1

머신러닝 적용을 위한 Feature Engineering 작업1

0

178

2

missingno 대체

0

167

1

scikit-learn 1.5.1 matplotlib 3.9.2

0

129

1

환불문의

0

263

1

자료공유를 받으려고 하는데 에러가 납니다.

0

157

1

iplot에서 항상 에러나는 분 안계신가용?

0

221

1

사망 여부 영향 가능성

0

142

1

섹션4_인코딩 이해하고 적용해보기(원핫인코딩) 질문

0

189

1

df.corr(numeric_only=True).iplot() 에러 해결 어떻게 해야되나요?

0

277

1

주피터 노트북 201_REGRESSION_BIKE_SHARING_MODELS 중 질문

0

244

1

3강 강의 자료 코드 관련 질문입니다

1

336

1

맥 사용자 mkdir .kaggle 했는데 파일이 안만들어집니다.

0

414

1

Bayesian Optimization에서 optimizer.maximize()함수를 더이상 지원 안한다고 합니다.

0

875

2

Bayesian Optimization LightGBM 적용

0

457

2

하이퍼 파라미터 튜닝 기법 적용하기 실행값이 미묘하게 달라요.

1

341

1

중복된 코드 수정 요청 - 자전거 공유 문제 이해와 EDA3

0

214

1

강의 중 에러 질문

0

739

1