인프런 커뮤니티 질문&답변
예시문제 작업형 2(ver. 2025) rmse 문의드립니다.
해결된 질문
작성
·
31
0
train['환불금액'] = train['환불금액'].fillna(train['환불금액'].median())
test['환불금액'] = test['환불금액'].fillna(test['환불금액'].median())
train = train.drop('회원ID', axis=1)
target = train.pop('총구매액')
test_id = test.pop('회원ID')
cols = train.select_dtypes(include ='O').columns
df = pd.concat([train, test])
from sklearn.preprocessing import LabelEncoder
for col in cols:
le = LabelEncoder()
# train[col] = le.fit_transform(train[col])
# test[col] = le.transform(test[col])
df[col] = le.fit_transform(df[col])
# df = pd.get_dummies(df[cols])
train = df[:len(train)]
test = df[len(train):]
from sklearn.model_selection import train_test_split
X_tr, X_val, y_tr, y_val = train_test_split(
train,
target,
test_size = 0.2,
random_state=0)
# from sklearn.ensemble import RandomForestRegressor
# rf = RandomForestRegressor(random_state=0, max_depth=5, n_estimators=500)
# rf.fit(X_tr,y_tr)
# pred = rf.predict(X_val)
from xgboost import XGBRegressor
xgb = XGBRegressor(random_state=0, max_depth=5, n_estimators=400, learning_rate=0.01)
xgb.fit(X_tr, y_tr)
pred = xgb.predict(X_val)
from sklearn.metrics import mean_squared_error, r2_score
mse = mean_squared_error(y_val, pred)
rmse = mse**(1/2)
r2 = r2_score(y_val, pred)
print(mse, rmse, r2)
이렇게 작성했을때 이렇게 나오는데 잘된게 맞는건지 아닌건지 모르겠습니다. 선생님께서는 레이블 인코딩했을때 rmse가 813.22가 나오셨다는데 왜이렇게 차이가 많이나는지 모르겠습니다.
672765.0076766363 820.2225354601252 0.7020188276193622
답변 2
0
안녕하세요 결론 문제 없음
제 결과와 대략 +- 5% 이내면 큰 문제 없다고 봐주세요
xgb가 워닝을 잘 출력해서 lightgbm을 추천합니다.
root_mean_squared_error 평가지표가 버전업이 되면서 사용가능하니 사이킷런에서 불러와서 사용하면 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다. 김호범님께서 작성하신 코드를 살펴보겠습니다.
제공해주신 코드는 전반적으로 잘 구성되어 있으며, 크게 문제가 되는 부분은 없어 보입니다. 다만, RMSE 값에서 차이가 발생하는 이유를 몇 가지 관점에서 점검해 보셔야 할 것 같습니다.
데이터 전처리:
환불금액결측치를 중앙값으로 채우신 것은 일반적인 방법이지만, 데이터의 분포를 고려했을 때 평균이나 다른 방식이 더 적합할 수도 있습니다.
- 범주형 데이터의 레이블 인코딩 과정에서, 학습 및 테스트 데이터 모두에 정확히 동일한 인코딩이 적용되었는지 확인이 필요합니다. 아주 작은 차이도 RMSE에 영향을 줄 수 있습니다.
모델 하이퍼파라미터 및 구성:
XGBRegressor의 하이퍼파라미터 세부 설정에 따라 결과가 달라질 수 있습니다. 예를 들어,learning_rate,max_depth,n_estimators값이 신중히 설정되었는지 확인해 보세요.
random_state가 동일하게 설정되어 있는지, 모든 모델 구성 요소에 걸쳐 일관되게 적용되는지 점검해 보세요.
평가지표:
mean_squared_error를 통해 RMSE를 산출하신 방법은 옳습니다.
r2_score를 추가로 확인하여 설명력을 파악하신 점은 유익합니다.
참고: 유사한 질문의 해결 방법
아래는 유사한 질문 해결에 도움이 될 수 있는 링크입니다:
- 예시문제 작업형2 관련 질문드립니다.
이 게시물에서는 RMSE와 모델 검증 과정을 다루고 있으며, 유사한 과정을 따라 결과를 비교해 볼 수 있습니다.
이와 같은 요소들을 하나씩 검토하신다면, 결과에 한층 더 정확한 결과 및 근접한 RMSE 수치를 얻을 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 기존의 유사한 질문 및 답변을 참고하여 답변을 제공하고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





