본문 바로가기

빅데이터분석기사 실기 | 작업형 1·2·3

[빅분기 실기] 2유형 (2) 모델링 및 성능평가, 예측값 제출

반응형

빅데이터분석기사(빅분기) 실기 합격을 위한 필수 관문! 랜덤포레스트(RandomForest) 모델을 활용한 머신러닝 모델링 방법과 정확도(Accuracy), F1-score 등 성능 평가 지표를 파이썬 코드로 완벽하게 구현하는 방법을 상세히 해설합니다. 예측값 제출(predict_proba) 시 주의사항까지 한눈에 확인하세요.

 


안녕하세요, 데이터분석 마스터 박박사입니다!

 

지난 포스팅에서 데이터 전처리와 탐색적 데이터 분석(EDA)을 마쳤다면, 이제는 본격적으로 데이터로부터 정답을 찾아내는 '모델링' 단계에 진입할 차례입니다.

 

실기 시험에서 가장 대중적이면서도 강력한 성능을 자랑하는 랜덤포레스트(Random Forest) 모델을 중심으로, 모델 학습부터 성능 검증, 그리고 최종 제출 파일 생성까지의 논리적 흐름을 쉽게 풀어보겠습니다.


4. 모델링 및 성능평가: 머신러닝의 핵심

모델링은 준비된 데이터를 머신러닝 알고리즘에 학습시켜 패턴을 찾아내는 과정입니다. 성능평가는 그 학습이 얼마나 잘 되었는지 '모의고사'를 치르는 과정이라고 이해하면 쉽습니다.

(1) 랜덤포레스트 모델 생성 및 학습

랜덤포레스트는 여러 개의 의사결정나무(Decision Tree)를 결합하여 결과의 안정성을 높인 앙상블 모델입니다.

Python
 
# 1. 라이브러리 임포트 및 모델 선언
from sklearn.ensemble import RandomForestClassifier

# 회귀 모델의 경우 RandomForestRegressor를 사용합니다.
model = RandomForestClassifier()

# 2. 모델 학습 (fit)
# x_train(특징 데이터)과 y_train(정답 데이터)을 쌍으로 학습시킵니다.
model.fit(x_train, y_train)
  • 해설: model.fit()은 모델에게 "이런 특징(x)을 가진 데이터는 이런 정답(y)을 가져"라고 가르치는 단계입니다. 이 과정을 통해 모델 내부에 최적의 규칙이 생성됩니다.

(2) 검증 데이터(Validation)로 성능 예측

학습이 끝났다면, 모델이 처음 보는 데이터(x_val)에 대해 얼마나 잘 맞추는지 확인해야 합니다.

Python
 
# 3. 테스트 데이터 예측 (Validation 과정)
# 학습된 모델을 사용하여 검증 데이터의 정답을 추론합니다.
y_pred = model.predict(x_val)
  • 해설: predict() 함수는 학습된 규칙을 바탕으로 새로운 데이터의 '결과값(Class)'을 반환합니다.

(3) 모델 성능 평가 (Metrics)

모델이 내놓은 예측값(y_pred)과 실제 정답(y_val)을 비교하여 점수를 매깁니다.

Python
 
from sklearn.metrics import accuracy_score, f1_score, roc_auc_score, recall_score, precision_score

# 정확도 (Accuracy): 전체 중 맞춘 비율
acc = accuracy_score(y_val, y_pred) 

# Macro F1 Score: 클래스별 F1-score의 단순 평균
f1 = f1_score(y_val, y_pred, average = 'macro')

print(f"정확도: {acc}")
print(f"Macro F1 Score: {f1}")
  • 해설: 정확도(Accuracy)는 직관적이지만 데이터 불균형(예: 암 환자 1%, 정상 99%)이 심할 경우 모델의 성능을 왜곡할 수 있습니다.
    • F1-score (Macro): 빅분기 시험에서 자주 요구하는 지표입니다. 적은 비중을 차지하는 클래스의 성능도 동일한 비중으로 반영하기 때문에, 클래스 불균형이 있는 데이터셋에서 모델의 진정한 실력을 평가하기에 매우 적합합니다.


5. 예측값 제출: 실점을 방지하는 최종 단계

모델 검증을 마쳤다면 이제 '실전 테스트'인 x_test 데이터를 넣어서 제출할 파일을 만들어야 합니다.

주의: Predict vs Predict_proba

시험 문제에서 요구하는 제출 형식이 **'클래스 값(0 또는 1)'**인지, **'확률값(0.0~1.0)'**인지를 반드시 확인해야 합니다.

Python
 
# [방법 1] 특정 클래스로 분류할 경우 (예: 0 또는 1)
y_result = model.predict(x_test)
print("클래스 예측값 상위 5개:", y_result[:5])

# [방법 2] 특정 클래스로 분류될 확률을 구할 경우 (예: ROC-AUC 평가용)
y_result_prob = model.predict_proba(x_test)
print("확률 예측값 상위 5개:", y_result_prob[:5])
  • 해설: predict()는 최종 결론(A 아니면 B)을 내립니다.
    • predict_proba()는 "A일 확률은 30%, B일 확률은 70%다"라는 정보를 줍니다. 만약 성능 평가 지표가 ROC-AUC라면 반드시 predict_proba를 사용하여 확률값(보통 양성 클래스의 확률인 [:, 1])을 제출해야 높은 점수를 얻을 수 있습니다.


마치며: 빅분기 실기 합격 팁

모델링 코드는 의외로 짧고 명확합니다.

 

하지만 전처리가 잘못되면 아무리 좋은 모델도 무용지물이라는 점을 잊지 마세요! 위 코드의 흐름(학습 → 검증 → 평가 → 최종예측)을 머릿속에 도식화해 두시면 시험장에서도 당황하지 않고 완벽한 답안을 작성하실 수 있을 겁니다.

 

다음 포스팅에서는 Hyperparameter 튜닝을 통해 모델 성능을 한 단계 더 끌어올리는 방법을 알아보겠습니다!


도움이 되셨다면 공감과 댓글 부탁드려요! 여러분의 합격을 응원합니다!

 

https://intjpark.tistory.com/55

 

[빅분기 실기] 1유형 데이터 다루기 마스터하기

2026 빅데이터분석기사 실기 1유형 완벽 대비! Pandas 전처리, 기초 통계, 그룹연산, 시각화까지 30점 만점 받는 핵심 전략과 실전 코드 예제를 한 번에 정리했습니다. 실기 시험 직전 복습용으로 최

intjpark.tistory.com

https://intjpark.tistory.com/56

 

[빅분기 실기] 1유형 데이터 다루기 마스터하기 (2) - 필터링, 정렬, 조건부 수정

빅데이터분석기사 실기 1유형 | mtcars로 배우는 필터링·정렬·np.where 파이썬 실습빅데이터분석기사 실기 1유형 대비를 위해 mtcars 데이터셋으로 파이썬 필터링, 정렬, np.where 활용법을 예제 코드와

intjpark.tistory.com

https://intjpark.tistory.com/58

 

[빅분기 실기] 1유형 데이터 다루기 마스터하기 (3) - 결측치, 이상치, 중복값 완벽하게 처리하기

[빅분기 실기] 04. 데이터 전처리 필살기: 결측치, 이상치, 중복값 완벽하게 처리하기 (Python)설명: 빅데이터분석기사 실기 1유형의 핵심! 타이타닉 데이터셋을 활용해 결측치 대체/제거, IQR 및 Z-sco

intjpark.tistory.com

https://intjpark.tistory.com/60

 

[빅분기 실기] 1유형 데이터 다루기 마스터하기 (4) 데이터 스케일링, 결합, 그리고 날짜 데이터

주제: 빅데이터분석기사 실기 1유형 대비 데이터 전처리 마스터 (4편)핵심 내용: 데이터 스케일링(표준화/정규화), 데이터 결합(pd.concat), 날짜 및 시간 데이터 처리 기법목표: 실기 시험에서 자주

intjpark.tistory.com

https://intjpark.tistory.com/61

 

[빅분기 실기] 2유형 데이터 전처리, EDA, 모델선정

빅데이터분석기사 실기 2유형 합격을 위한 핵심 가이드! 데이터 전처리부터 EDA, RandomForest 모델링, 성능 평가까지 전 과정을 정리했습니다. 실습 코드를 통해 와인 종류 분류 문제를 직접 해결하

intjpark.tistory.com

 

반응형