기출 7회 작업형2 평가지표 문의드립니다.
2
投稿した質問数 2
아래와 같은 코드로 학습 및 평가를 진행하였을 때, RMSE 값은 강의와 큰 차이 없는 것으로 확인되나 추가 확인을 위해 검증한 r2 점수는 음수값으로 확인됩니다.
실제로 r2값이 음수일 경우 과적합이나 예측성능 부족으로 해석할 수 있다고 보았는데, 이는 해당 데이터셋 자체의 문제라 신경쓰지 않아도 되는 부분인지 문의드립니다!
또한, 실제 시험에서도 이와같이 주어진 평가지표가 아닌 다른 지표가 비정상적으로 나올 경우 모델을 수정해야하는지 아니면 그냥 무시하면 되는지 알고싶습니다.
# 데이터 불러오기
import pandas as pd
train = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p4/7_2/mart_train.csv")
test = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p4/7_2/mart_test.csv")
# EDA
# print(train.shape, test.shape) # (700,10) (300,9)
# print(train.info(), test.info()) # null 없음, ['total', 'rating'] 제외 모두 object
# print(train.describe()) # 특이사항 없음. 범위 좁음(스케일링 필수아님)
# print(train.isnull().sum()) - zero
# Preprocessing
# column split
y_train = train.pop('total')
train = train.drop(['branch'], axis=1)
test = test.drop(['branch'], axis=1)
cols = train.select_dtypes(include='object')
ncol = ['rating']
# encoding
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
for col in cols:
train[col] = le.fit_transform(train[col])
test[col] = le.transform(test[col])
# validation split
from sklearn.model_selection import train_test_split
X_tr, X_val, y_tr, y_val = train_test_split(train, y_train, test_size=0.2, random_state=0)
# Modeling
from sklearn.metrics import mean_squared_error, r2_score
import numpy as np
def val(name, pred):
print(f"[{name}] RMSE = {np.sqrt(mean_squared_error(y_val, pred))}, R2 = {r2_score(y_val, pred)}")
# Randomforest
from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor(random_state=0, max_depth=5, n_estimators=200)
rf.fit(X_tr, y_tr)
pred_rf = rf.predict(X_val)
val('RF max_depth=5 n_estimators=200', pred_rf)
# XGB
from xgboost import XGBRegressor
xgb = XGBRegressor(random_state=0, max_depth=11)
xgb.fit(X_tr, y_tr)
pred_xgb = xgb.predict(X_val)
val('XGB max_depth=11', pred_xgb)
# LGBM
from lightgbm import LGBMRegressor
lgb = LGBMRegressor(random_state=0, verbose=-1, max_depth=5)
lgb.fit(X_tr, y_tr)
pred_lgb = lgb.predict(X_val)
val('LGB max_depth=5', pred_lgb)
# [RF default] RMSE = 394376.67750222463, R2 = -0.1516313613858813
# [XGB default] RMSE = 448629.2156334435, R2 = -0.49027405261046786
# [LGB default] RMSE = 418919.9464111325, R2 = -0.29943067276803204
# [RF max_depth=5] RMSE = 377317.703631039, R2 = -0.054157251623846436
# [XGB max_depth=11] RMSE = 427708.98809398, R2 = -0.3545273827552682 - pick!
# [LGB max_depth=5] RMSE = 415578.970510777, R2 = -0.27878684839577694 - pick!
# [RF max_depth=5 n_estimators=200] RMSE = 377131.19406206085, R2 = -0.05311536135414552 - pick!
# [XGB max_depth=11 n_estimators=200] RMSE = 417882.1533298992, R2 = -0.2930004714865426
# [LGB max_depth=5 n_estimators=200] RMSE = 439309.6456127621, R2 = -0.42900093548228657
# Result
pred = rf.predict(test)
pd.DataFrame({'pred':pred}).to_csv('t7p2result.csv', index=False)
print(pd.read_csv('t7p2result.csv').head(10))
回答 1
0
안녕하세요, 인프런 AI 인턴입니다. 가람삐님,
R²가 음수라고 해서 코드 오류라고 단정할 수는 없습니다. 음수 R²는 해당 검증 데이터에서 모델의 예측이 실제값의 평균만 예측하는 경우보다 좋지 않았다는 뜻입니다. 데이터의 특성이나 검증 데이터 분할에 따라 RMSE가 강의와 비슷해도 R²는 음수로 나올 수 있습니다.
유사한 데이터셋에서 R²가 음수로 나온 사례에 대해, 지식공유자님은 데이터 특성상 점수가 낮게 나올 수 있으며 최종 평가는 공개되지 않으므로 검증 데이터의 결과를 기준으로 모델을 개선하면 된다고 안내하셨습니다.
실제 시험에서는 문제에서 지정한 평가 지표를 우선적으로 확인하시면 됩니다. RMSE가 평가 지표라면 RMSE를 기준으로 모델을 비교하고 개선하세요. 다른 지표인 R²가 음수라는 이유만으로 모델을 무조건 수정할 필요는 없지만, R²가 음수인 것은 현재 검증 분할에서 예측력이 낮다는 신호이므로 데이터 분할이나 전처리, 모델 성능을 함께 점검하는 참고 지표로 삼을 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
수강연장 문의 드립니다!
0
3
1
수강연장 문의드립니다
0
5
1
작업형2모의문제3_updated2026.10
0
21
2
작업형2 모의문제3_updated2026.10
0
23
2
38강에서 불균형 데이터 처리하는 stratify를 꼭 해줘야하는건지 질문합니다.
0
20
2
수강강의 연장 관련 문의
0
28
2
작업형1_연습문제1 section2
0
28
2
수강기간 연장 문의드립니다
0
33
2
작업형2 모의문제2_updated2026.10
0
34
2
수강기간 연장문의
0
36
2
작업형 2 질문
0
39
2
강의 연장 관련하여 문의드립니다.
0
48
2
섹션7 자료 다운로드
0
45
2
작업형 1 연습문제 Section12
0
45
2
수강기간 연장 문의
0
56
2
안녕하세요, 혹시 수강기간 연장이 가능할까요?
0
50
2
판다스 강의자료는 어디서 받을 수 있나요?
0
56
2
작업형2 모의고사3 자료 업데이트 요청
0
64
4
수강 연장가능여부 문의드립니다!
0
50
2
수강기간 연장 문의드립니다!
0
44
2
최빈값
0
48
2
수강 가이드라인
0
43
2
수강 연장 가능 여부 문의
0
66
2
강의 구매했는데 교재 필수일까요
0
50
2

