본문 바로가기
카테고리 없음

빅데이터분석기사 실기 단기합격 제2유형 꿀팁 R코드 템플릿 공유

by edutech_master 2025. 9. 7.
반응형

빅데이터분석기사 실기 단기합격 제2유형 꿀팁 R코드 템플릿 공유
빅데이터분석기사 실기 단기합격 제2유형 꿀팁 R코드 템플릿 공유

 

빅데이터분석기사 실기 제2유형은 100점 만점 중 40점이 배점되어있습니다. 총점 60점 이상이 빅데이터분석기사 실기 시험 합격 기준이기 때문에 제2유형에서 감점없이 만점, 즉 40점을 획득한다면 실기 합격 가능성이 한층 높아집니다. 그럼에도 빅데이터분석기사 실기 제2유형은 문제 유형이 어느 정도 고정되어 있어서 코드 템플릿을 만들어 볼 수 있었습니다. 올해 하반기 11회 시험에서 갑자기 문제 유형이 달라지지만 않는다면 아래 코드 템플릿으로 쉽게 40점을 확보하실 수 있습니다.

 

이미 기초가 있으시거나 단순 암기가 편하신 분이라면 하단에 정리해둔 최종 R 코드 템플릿만 외우셔도 충분합니다. 하지만, 이해를 기반으로 한 암기를 원하시는 분이나 최소한의 기초를 쌓으면서 빅데이터분석기사 실기 제2유형을 실수 없이 풀이하고 40점을 확보하고 싶으신 분이라면 이번 포스팅을 꼼꼼하게 읽어보시길 추천드립니다👍🏻

 

빅데이터분석기사 실기 제2유형 문제 분석

출처 : 빅데이터분석기사 실기 체험 사이트

 

빅데이터분석기사 실기 시험 제2유형 문제는 예측 모델링을 수행하는 문제입니다. 예측 모델링(Predictive Modeling)이란, 과거 데이터(학습용 데이터)를 학습해서 미래 데이터(평가용 데이터)의 값을 예측하는 머신러닝 기법입니다. 예측해야 하는 목표 변수가 연속형이면 회귀(Regression), 범주형이면 분류(Classification)에 해당합니다.

 

위 문제는 빅데이터분석기사 실기 시험 환경에서 미리 실습을 해 볼 수 있는 구름 IDE 사이트(링크)에 공개되어있는 예시 문제입니다. 문제를 분석(이랄 것도 없지만) 해보면 아래와 같습니다.

  • 학습용 데이터 : customer_train.csv (백화점 고객의 1년간 상품 구매 기록)
    • 회원 ID (식별자, 분석 제외)
    • 총구매액 (수치형)
    • 최대구매액 (수치형)
    • 환불금액 (수치형)
    • 주구매상품 (범주형)
    • 주구매지점 (범주형)
    • 방문일수 (수치형)
    • 방문당구매건수 (수치형)
    • 주말방문비율 (수치형)
    • 구매주기 (수치형)
  • 평가용 데이터 : customer_test.csv
    • 학습용 데이터셋에서 총구매액 컬럼만 제외
    • 총구매액(수치형)을 예측해야 하므로 회귀 문제에 해당

문제에서 파악해야 할 것은 딱 두 가지입니다. 어떤 변수를 예측해야 하는지, 즉 타겟 변수명 그리고 해당 변수의 데이터 타입. 아래 코드 템플릿에서 변경해주어야 하는 부분은 타겟 변수명 정도이고, 해당 변수의 데이터 타입에 따라 회귀 템플릿을 사용할 것인지 분류 템플릿을 사용할 것인지 달라지기 때문입니다. 지난 기출문제들을 보았을 때는 대체로 회귀 문제가 출제되었습니다.

 

여기까지 파악이 끝났다면 이제 예측 모델링 프로세스에 따라 코드를 작성해주면 됩니다! 아래에 전체 코드 템플릿이 작성되어있지만 예측 모델링 프로세스, 단계별로 코드를 쪼개서 살펴보도록 할게요:)

빅데이터분석기사 실기 단기합격 제2유형 꿀팁 R코드 템플릿 공유
빅데이터분석기사 실기 단기합격 제2유형 꿀팁 R코드 템플릿 공유

예측 모델링 프로세스 (1) 준비

1-1. 데이터 불러오기

빅데이터분석기사 실기시험 모든 문제는 라이브러리를 설치하고 데이터를 불러오는 것으로 시작합니다. 제2유형 문제는 dplyr, rnadomForest, ModelMetrics 세 개의 라이브러리를 사용해서 풀이했습니다.

library(dplyr)            # 데이터 전처리를 위해 불러오기
library(randomForest)     # 랜덤포레스트 모델 사용
library(ModelMetrics)     # RMSE 계산

train = read.csv("data/학습용데이터셋이름.csv")		#학습용 데이터 불러오기
test = read.csv("data/평가용데이터셋이름.csv")		#평가용 데이터 불러오기

 

1-2. 전처리

전처리 단계에서 기억할 것은 크게 두 가지입니다.

  • 범주형 변수를 factor로 변환하기
  • 결측치 처리하기

만약 범주형 변수나 결측치가 없다면 생략해도 되는 단계입니다.

# 범주형 변수 factor로 변환하기
# (예시) train$성별 <- as.factor(train$성별)
# 결측치 처리하기
# (예시) train$환불금액[is.na(train$환불금액)] <- mean(train$환불금액, na.rm=TRUE)

 

1-3. 학습용/평가용 데이터 분리하기

모델을 만들기 위해 주어진 학습용 데이터(customer_train)를 다시 학습용 데이터(x_train)와 평가용 데이터(x_test)로 분리해야 합니다. 모델링을 처음 하시는 분들은 이 부분이 조금 헷갈릴 수 있는데요! 학습용 데이터의 일부(x_train)를 가지고 모델을 만들고 나머지(x_test)로는 모델의 정확도를 평가합니다. 이렇게해서 만든 예측 모델을 평가용 데이터(customer_test)에 적용하는 것입니다.

set.seed(123)						# train 데이터셋을 무작위로 섞어서
idx <- sample(1:nrow(train), size = 0.7*nrow(train))	# 7:3으로 나누고
x_train <- train[idx, ]					# 70%는 학습용(x_train)
x_test <- train[-idx, ]					# 30%는 테스트용(x_test)으로 사용하겠다.

 

set.seed(123)은 정화히 표현하면 무작위 추출 결과가 실행할 때마다 동일하게 나오도록 고정, 즉 재현가능성을 보장하기 위한 코드이지만 일단 문제를 푸는 것이 목적이라면 이정도로만 알아두어도 충분합니다. 참고로 set.seed() 안에 들어가는 숫자는 11, 2025, 119 등 무엇이든 가능합니다! 학습용과 테스트용 데이터를 나누는 비율 역시 반드시 7:3일 필요는 없지만, 7:3 또는 8:2 비율이 가장 보편적으로 사용됩니다.

 

 

예측 모델링 프로세스 (2) 모델링/학습

아래에서 한 번 더 정리하겠지만, 빅데이터분석기사 실기 시험 제2유형에는 몇 가지 감점 유형이 있고 완전히 0점 처리되는 유형도 있습니다. 바로 여기 모델 학습 부분에서 0점 처리되는 경우가 있는데요! 예측값 정확도가 평가지표 최저 구간 미만이면 0점 처리될 수 있습니다. 모델을 만들었는데 정확도가 0%이면 의미가 없겠죠?🤣 그래서 어느 정도의 정확도를 보장할 수 있는 방법으로 저는 두 가지 모델을 써서 성능을 비교하고, 더 성능이 좋은 모델을 최종적으로 선택하는 방식으로 코드를 작성했습니다. 0점 처리되는 평가지표 최저 구간이 정확히 몇 점인지는 공개된 바 없지만, 저는 40점 만점을 받았습니다.😎

 

2-1. 모델 학습하기

먼저 두 가지 모델, lm과 rf 모델을 학습시켜 보겠습니다. 궁금하실 분들을 위해 간단히 첨언하면, lm은 선형회귀(Linear Model), rf는 랜덤포레스트(Random Forest)를 의미합니다. 둘 다 회귀분석에 사용하는 모델이지만 lm은 선형 관계를 가정하는 모델이라 다소 단순하고, rf는 조금 더 정확도가 높습니다.

# ---------------------------
# 선형 회귀 모델 (lm)
# ---------------------------
model_lm <- lm(변수 ~ ., data = x_train)           # "변수"를 예측하는 선형 회귀 모델
pred_lm <- predict(model_lm, x_test)               # 검증 데이터 예측
rmse_lm <- rmse(x_test$변수, pred_lm)              # 실제 vs 예측 RMSE 계산

# ---------------------------
# 랜덤포레스트 모델 (rf)
# ---------------------------
model_rf <- randomForest(변수 ~ ., data = x_train) # 랜덤포레스트 모델 학습
pred_rf <- predict(model_rf, x_test)               # 검증 데이터 예측
rmse_rf <- rmse(x_test$변수, pred_rf)              # RMSE 계산

 

코드가 다소 복잡해 보이지만 lm, rf 부분만 수정하면 되므로 실질적으로 암기해야 하는 코드는 단 세 줄입니다. 이 정도는 외워야 시험을 볼 수 있습니다!ㅋㅋ😂

 

2-2. 최적 모델 선택하기

이제 lm과 rf 중 더 정확도가 높은 모델을 선택해보겠습니다. 평가지표는 변경될 수 있지만, 지금까지의 기출문제는 RMSE로 평가하도록 출제되었습니다. 좀 더 있어보이는 코드를 작성할 수도 있지만 저는 암기사항을 최소화하기 위해서 간단히 print() 함수를 사용해 직접 RMSE를 비교해서 최적 모델을 선택했습니다.

# ---------------------------
# 두 모델 중 성능이 더 좋은 것(=값이 작은 것) 선택
# ---------------------------
print(rmse_lm)
print(rmse_rf)

# ---------------------------
# 아래 코드 중 해당하는 한 줄만 작성
# ---------------------------

final_model <- model_lm    # rmse_lm 값이 더 작은 경우
final_model <- model_rf    # rmse_rf 값이 더 작은 경우

 

위에서 계산한 lm, rf 모델의 RMSE 값(각각 rmse_lm, rmse_rf)를 출력해 성능이 더 좋은 모델(=값이 작은 것)을 확인하고, 해당 모델을 final_model로 지정하면 됩니다.

 

 

예측 모델링 프로세스 (3) 예측/출력

3-1. 예측

예측은 단 한 줄이면 됩니다. final_model에 test 데이터를 넣어 예측한다!

pred_final <- predict(final_model, test)           # test 데이터 예측

 

3-2. 출력

"예측"보다 주의해야 하는 단계는 오히려 마지막 "출력"입니다. 이 부분에서 조금만 실수가 있어도 감점이거든요🥲

예측 결과는 아래의 [제출 형식]을 준수하여, CSV 파일로 생성하는 코드를 제출하시오.
㉠ CSV 파일명 : result.csv (파일명에 디렉토리·폴더 지정불가)
㉡ 예측 총 구매금액 칼럼명 : pred
㉢ 제출 칼럼 개수 : pred 칼럼 1개
㉣ 평가용 데이터 개수와 예측 결과 데이터 개수 일치 : 2,482개

파일명과 칼럼명, 예시에 있는 것처럼 행 범호를 제외하고 저장해줍니다.

result <- data.frame(pred = pred_final)            # 예측 결과 저장
write.csv(result, "result.csv", row.names = FALSE) # 행번호 제외하고 저장

 

최종 R코드 템플릿

library(dplyr)            # 데이터 전처리를 위해 불러오기
library(randomForest)     # 랜덤포레스트 모델 사용
library(ModelMetrics)     # RMSE 계산

# ---------------------------
# 1. 데이터 불러오기
# ---------------------------
train <- read.csv("data/customer_train.csv")   # 학습용 데이터
test <- read.csv("data/customer_test.csv")     # 평가용 데이터

# ---------------------------
# 2. 전처리 단계
# ---------------------------
# 범주형 변수 factor로 변환하기
# (예시) train$성별 <- as.factor(train$성별)
# 결측치 처리하기
# (예시) train$환불금액[is.na(train$환불금액)] <- mean(train$환불금액, na.rm=TRUE)

# ---------------------------
# 3. 데이터 분할 (훈련/검증)
# ---------------------------
set.seed(123)                                      # 재현 가능성을 위해 시드 고정
idx <- sample(1:nrow(train), size = 0.7*nrow(train)) # 70% 학습, 30% 검증
x_train <- train[idx, ]
x_test <- train[-idx, ]

# ---------------------------
# 4. 선형 회귀 모델 (lm)
# ---------------------------
model_lm <- lm(변수 ~ ., data = x_train)           # "변수"를 예측하는 선형 회귀 모델
pred_lm <- predict(model_lm, x_test)               # 검증 데이터 예측
rmse_lm <- rmse(x_test$변수, pred_lm)              # 실제 vs 예측 RMSE 계산

# ---------------------------
# 5. 랜덤포레스트 모델 (rf)
# ---------------------------
model_rf <- randomForest(변수 ~ ., data = x_train) # 랜덤포레스트 모델 학습
pred_rf <- predict(model_rf, x_test)               # 검증 데이터 예측
rmse_rf <- rmse(x_test$변수, pred_rf)              # RMSE 계산

# ---------------------------
# 6. 두 모델 중 성능이 더 좋은 것 선택 (직접 값을 print해서 비교해도 무방함)
# ---------------------------
if (rmse_lm <= rmse_rf) {
  final_model <- model_lm    # 선형 회귀 선택
} else {
  final_model <- model_rf    # 랜덤포레스트 선택
}

# ---------------------------
# 7. 최종 예측
# ---------------------------
pred_final <- predict(final_model, test)           # test 데이터 예측

# ---------------------------
# 8. 제출 파일 생성
# ---------------------------
result <- data.frame(pred = pred_final)            # 예측 결과 저장
write.csv(result, "result.csv", row.names = FALSE) # 행번호 제외하고 저장

 

주의해야 하는 감점 요인

빅데이터분석기사 실기 단기합격 제2유형 꿀팁 R코드 템플릿 공유
출처 : 제10회 빅데이터분석기사 실기 자격검정 안내

 

마지막으로 주의해야 하는 감점 요인에 대해 알아보며 포스팅을 마치겠습니다. 빅데이터분석기사 실기 제2유형의 채점 대상은 "마지막에 제출한 코드로 생성되는 CSV 파일"입니다. 즉, 최종적으로 CSV 파일을 생성하기까지 어떠한 코드를 작성했는지는 평가하지 않는다는 것입니다. 코드를 아무리 잘 작성했어도 최종 생성된 CSV 파일에 정해진 형식에 맞추어 값을 작성되지 않았다면 평가 지표에 따라 누적해서 감점이 되거나 0점 처리될 수 있습니다.

 

빅데이터분석기사 실기 단기합격 제2유형 꿀팁 R코드 템플릿 공유
출처 : 제10회 빅데이터분석기사 실기 자격검정 안내

 

먼저 빅데이터분석기사 실기시험 제2유형 0점 유형입니다. 모델링을 통해 도출한 예측값의 정확도가 평가지표 최저 구간 미만인 경우 0점입니다. 앞서 언급했듯 정확한 예측값 평가지표 구간이 공개되어있지는 않습니다. 저희는 가능한 예측 정확도를 높이는 것이 아니라 최소한의 정확도를 확보하는 것이 목표이므로 lm, rf 두 개 모델 중 조금이라도 정확도가 높은 모델을 선택하는 방식으로 코드를 작성했습니다.

또다른 빅데이터분석기사 실기시험 제2유형 0점 유형은 평가 데이터 개수와 예측 결과 데이터 개수가 불일치하는 경우입니다. 이건 평가용 데이터세트에서 특정 행을 삭제하지만 않으시면 되니 유의하시길 바라겠습니다!

 

다음은 빅데이터분석기사 실기시험 제2유형 감점 유형입니다. 아래 3가지 경우에 해당할 경우 각 3점씩 누적해서 감점될 수 있습니다. 즉 빅데이터분석기사 실기시험 제2유형은 총 40점 만점 중에 다섯 가지 점수 유형(0점, 31점, 34점, 37점, 40점)이 나올 수 있는 것이죠. 제2유형에서 40점 만점을 확보하면 시험 합격이 엄청나게 유리해지니 절대 감점 당하지 않아야 합니다. 물론 위에 정리해 둔 R 코드 템플릿을 잘 암기하시면 아래 세 가지 유형에 해당해서 감점 당하실 일은 없습니다😎

  • 최종 생성/제출하는 CSV 파일의 파일명은 result.csv
  • 예측값 칼럼명은 pred로 설정

➔ 파일명 또는 칼럼명을 임의로 변경하는 경우 각각 3점씩 감점될 수 있습니다. 스펠링 하나라도 잘못 입력하지 않도록 오타 주의!!

  • 예측 결과 칼럼(pred)만 제출

➔ 예측 결과 칼럼 외에 다른 칼럼을 함께 제출하면 감점입니다. 자동 생성되는 Index 칼럼을 제외하는 코드로 템플릿을 작성해두었으니 꼭 템플릿 코드 그대로 암기해주세요!!

빅데이터분석기사 실기 단기합격 제2유형 꿀팁 R코드 템플릿 공유
출처 : 제10회 빅데이터분석기사 실기 자격검정 안내

 

빅데이터분석기사 실기시험을 준비하시는 분들에게 도움이 되기를 바라며, 

반응형

댓글