inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Chinh phục hoàn toàn kỳ thi thực hành Kỹ sư phân tích dữ liệu lớn [Bao gồm tất cả các kỳ thi trước đó · Cập nhật liên tục · Cung cấp môi trường thực hành chuyên dụng]

Lần 11 Loại 2

11회차 2유형 질문.

35

parkjh980226

6 câu hỏi đã được viết

1

실습에서 문제에 언급이 안된 내용들이 들어가있는데(train -> train,val분할이라던지, 정확도나 auc 구하기라던지

실제 시험에서도 이런 내용도 추가해주는것이 좋은가요?
아니면 인코딩->(분할x)학습->test_x 삽입 이런식으로 결과만 내도 되는건가요?

python pandas statistical-test sklearn 빅데이터분석기사

Câu trả lời 1

1

algolearn

안녕하세요. 알고런입니다.


질문에 대해서 결론 부터 말씀드리자면,

시험 자체만을 두고 봤을 때 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)

roc_auc_score

0

2

1

재귀함수 연산법

0

5

1

추가질문 합니다

0

10

1

시험환경 구름

0

10

1

변경된 체험환경 작업형3번질문이요

0

3

1

2유형 질문드려요

0

8

1

RandomForest vs lgb

0

18

1

전처리 관련질문

0

13

2

수강기간즘연장해주세요

0

8

1

작업형3 기출

0

12

1

유형2에서 데이터분할 생략 가능여부

0

20

2

9회 기출 유형3 질문

0

15

1

lgb 기초편

0

10

1

수업자료 문의

0

16

2

괄호 사용

0

15

1

수업노트는 어디서 볼 수 있나요?

0

16

2

작업형 2 데이터 전처리 질문

0

18

1

11회 기출 유형 작업형1 문제 3-1

0

16

0

7회 3유형 2번문제 질문

0

11

1

예시문제 작업형2 (ver2023) 질문입니다

0

16

1

Data type에 따른 처리

0

15

2

알고런io 이용 관련 문의

0

37

1

강의내용관련

0

41

1

기출문제 pdf 없음

0

45

2