11회차 2유형 질문.
25
작성한 질문수 5
실습에서 문제에 언급이 안된 내용들이 들어가있는데(train -> train,val분할이라던지, 정확도나 auc 구하기라던지
실제 시험에서도 이런 내용도 추가해주는것이 좋은가요?
아니면 인코딩->(분할x)학습->test_x 삽입 이런식으로 결과만 내도 되는건가요?
답변 1
1
안녕하세요. 알고런입니다.
질문에 대해서 결론 부터 말씀드리자면,
시험 자체만을 두고 봤을 때 Validation 데이터로 분할하여 정확도, auc 등을 구하는 게 필수는 아닙니다. 시험에서 2유형은 코드 작성 과정이 아니라 제출한 예측 결과(CSV)의 성능만으로 채점됩니다. 따라서 질문처럼 인코딩 → 학습 → test 예측 → 제출, 이렇게 결과만 내도 답안으로 전혀 문제없습니다.
(물론, 실무에서는 100% 데이터를 validation으로 분할하여 정확도, auc 등의 성능 지표를 확인합니다.)
하지만, 시험 칠 때 시간이 절대적으로 부족하거나 코드에 익숙하지 않은 경우를 제외하고는..
가급적이면 validation 데이터셋을 이용해서 여러 성능 지표를 점검해보시기를 권해드립니다.
그 이유는 제출 전에 실수를 하지 않았나, 스스로 점검할 수 있기 때문입니다. 시험장에서는 test의 정답을 알 수 없습니다. 그래서 train 일부를 떼어 검증해 보면, 제대로 문제를 풀었는지 확인해볼 수 있습니다. 예를 들어 다음과 같은 점을 알 수 있습니다.
AUC가 0.5 근처로 나온다 → 인코딩 실수, 컬럼 누락 등 모델이 깨졌을 수 있다는 신호를 제출 전에 발견 가능. AUC 의 값은 0.5 ~ 1.0 사이의 값이 나오며 0.5에 가까울 수록 성능이 낮은 겁니다.
확률(
predict_proba)을 내야 하는데 라벨(predict)을 내는 흔한 실수도 자연스럽게 걸러낼 수 있음
3~5분 투자로 40점짜리 문제의 치명적 실수를 막아주는 보험이라고 보면 좋겠습니다.
제가 권장하는 코드 작성 흐름은 아래와 같습니다.
인코딩 → train/val 분할 → 학습 → val 성능 확인 → test 예측 → 저장
이때 전체 데이터로 재학습하는 단계를 한 번 더 가져도 좋습니다. 실무에서는 하이퍼파라미터 튜닝 등을 통해 성능을 향상시키는 작업을 하겠지만, 시험에서 하이퍼파라미터 튜닝은 좀 어려울 수 있습니다. 그러니 데이터를 분할하지 않고 전체 train 재학습 과정을 다시 거치는 것도 시험용으로는 나름 괜찮아 보입니다.
인코딩 → train/val 분할 → 학습 → val 성능 확인 → 전체 train 재학습 → test 예측 → 저장
아래는 빅분기 실기 2유형 파이썬 기본 골격 코드입니다. 코드 골격을 익혀 놓으시면 실수를 줄일 수 있습니다. 그럼 수고하시구요. 시험 잘 보시길 응원하겠습니다. 감사합니다.
python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier #랜덤포레스트는 성능이 좋은 편임
from sklearn.metrics import roc_auc_score #문제에서 원하는 성능 측정 함수 추가
# 1. 데이터 로드 및 인코딩
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
X = pd.get_dummies(train.drop(columns=['target'])) #원핫인코딩
y = train['target']
X_test = pd.get_dummies(test) #테스트용 데이터 원핫인코딩
# 2. [검증용] 분할 후 성능 확인 — 채점과 무관, 문제 풀이 단계에서 확인용
X_tr, X_val, y_tr, y_val = train_test_split(X, y, test_size=0.2, random_state=42)
model = RandomForestClassifier(random_state=42)
model.fit(X_tr, y_tr)
print('val AUC:', roc_auc_score(y_val, model.predict_proba(X_val)[:, 1]))
# → 0.5 근처면 어딘가 잘못된 것. 제출 전에 발견 가능
# 3. [최종] 전체 데이터로 재학습 후 예측·제출
model.fit(X, y) #이 단계는 생략 가능. 전체 데이러토 재학습 하는 과정. 실무에서는 미수행
pred = model.predict_proba(X_test)[:, 1] # 확률 요구 시. 라벨 요구 시 predict()
pd.DataFrame({'pred': pred}).to_csv('result.csv', index=False)강의 자료를 어디서 확인 할 수 있나요?
0
7
1
FRED API
0
12
0
캐글 제출 점수
0
7
1
VCP 시그널 상태 추가 스크립트 에서 return_pct 조건
0
14
2
캐쉬가 업데이트 안됩니다.
0
13
2
기출 마무리 방법
0
22
1
제가 AWS 에 배포했는데
1
15
1
빅이시 작업형2 기초 - 케이스 1~3 관련 문의
0
13
1
갑자기 stock_prediction은 어디서 발생한건가요?
1
19
2
pipeline/run-buy-pipeline 실행시 "LLM호출전체실패"에러발생
1
18
2
데이터프레임 슬라이싱 인덱싱 질문2
0
15
2
SSL 발급할때 HTTP로 진행하는 이유가 궁금합니다.
0
14
2
단일표본검정, 샤피로검정, 윌콕슨검정
0
25
2
강의자료 다운로드 여부
0
26
2
2-14.\x02 안보임 관련
0
16
0
문제에 첨부된 예시와 실제 출력된 샘플 비교
0
23
2
원핫 인코딩 관련
0
32
2
오늘 처음으로 자동매매가
1
32
2
타겟 분리
0
28
2
Id 삭제
0
31
2
roc_auc_score 질문: 작업형2 모의문제3 09분 48초
0
29
2
알고런io 이용 관련 문의
0
28
1
강의내용관련
0
35
1
기출문제 pdf 없음
0
40
2





