brunch

You can make anything
by writing

C.S.Lewis

by 첨물 Jun 13. 2021

빅분기실기(최종준비_1)

모델 만들고, 예측하고, 성능 검사, AUC 구하기

다음 주가 빅분기 실기 시험이다.

국가자격증 공식 1회 시험이다.


시험 안내 정리 (R 3.6 기준) - 총 3시간


1. 라인별 실행을 할 수 없다. 한 번에 실행 버튼을 눌러 결과를 확인해야 함

2. 자동 완성 기능이 안됨. (철자 틀리지 않게 잘 외어야 함)

3. 함수에 넣는 방법이 생각나지 않을 경우, help() 기능을 사용 가능

4. 총 코드 실행시간이 1분을 넘으면 안 됨 (Sys.time() 으로 시간 체크)

5. 작업 1유형 (3문제) : 코드 마지막에 print(변수명)

6. 작업 2유형 (1문제) : 코드 마지막에 write.csv(data, file="수험번호.csv") 

   (실행할 때마다 file이 생성되므로, 가장 마지막에 생성된 파일을 정답으로 간주함)

7. 그래프 그리는 문제는 없음 


[연습은 아래 사이트에서 함]




사이트에 사용 가능한 R의 패키지가 있다. 잘 모르는 것은 제외하고 나올 것 같은 패키지를 정리하면 아래와 같다.


1. 데이터 전처리 : data.table / dplyr / plyr/ reshape2

2. 머신러닝 

     1) 의사결정 나무 : rpart

     2) 서포트 벡터, 나이브 베이즈 분류, 교차분석 : e1071

     3) 인공신경망 : nnet

     4) 랜덤 포레스트 : randomForest

3) 성능 분석 : caret (컨퓨전 메트릭스), pROC(ROC, AUC)

4)  데이터셋 : titanic, MASS


텍스트 마이닝, 연관분석 관련 패키지가 시험 범위가 아니므로, 이것은 제외하고 공부하면 될 것 같다. ggplot2는 있지만 그래프가 그려지지 않으니 제외


그럼 주로 데이터를 읽고, 전처리를 한 후, train과 test로 나눈 후, 성능 검사, accuracy(정 분류율)나 sensitivity(특이도), specificity(민감도)를 찾고, ROC Cuve에서 AUC를 구하는 문제 정도가 패키지로 나오지 않을까 한다. 


그럼 간단하게 구르미 플랫폼으로 선형 회귀 연습을 해 보자.

필요한 패키지 먼저 설치한 후 airquality 내장 데이터 세트로 연습해보았다.

역시 구르미 플랫폼에서는 그래프가 그려지지 않았고, 한 줄씩 실행이 되지 않아 조금씩 쓰고 실행해 보고 하는 작업을 하였다. 확실시 시험 시간에 불편한 상태에서 명령어를 암기해 가지 않으면 당황스러울 것 같다는 느낌이 들었다.



#패키지 설치하기

library(rpart)

library(randomForest)

library(e1071)

library(dplyr)

library(pROC)

library(caret)

rm(list=ls())

#결측치 확인

df<-airquality

print(apply(df, 2, function(x) sum(is.na(x))))

is.na(df)

df$Ozone<-ifelse(is.na(df$Ozone),mean(df$Ozone, na.rm=T), df$Ozone)

df$Solar.R<-ifelse(is.na(df$Solar.R),mean(df$Solar.R, na.rm=T), df$Solar.R)

sum(is.na(df))

#정규화

#df$Temp<-scale(df$Temp, center=Min, scale=Max-Min)

#데이터 나누기

idx<-sample(1:nrow(df), nrow(df)*0.7, replace=T)

train<-df[idx,]

test<-df[-idx,]

#선형회귀 train data로 lm 모델 만들기

lm_model<-lm(Temp~Ozone+Month+Wind, data=train)

summary(lm_model)

pred_lm<-predict(lm_model, train[, -c(4)], type="response")

result<-cbind(pred_lm, train[,c(4)])

colnames(result)<-c("pred", "real")

result<-data.frame(result)

a<-lm(real~pred, data=result)

print(a)

#test 데이터로 lm 모델 검증하기

pred_test<-predict(lm_model, test[,c(-4)], type="response")

result2<-cbind(pred_test, test[,c(4)])

colnames(result2)<-c("pred", "real")

result2<-data.frame(result2)

b<-lm(real~pred, data=result2)

print(summary(b))



다음은 시험 사이트에서 보여준 예시문제를 본격적으로 해 보았다.


예시문제 - 작업2유형


고객 3,500명에 대한 학습용 데이터(y_train.csv, X_train.csv)를 이용하여 성별 예측 모형을 만든 후, 이를 평가용 데이터(X_test.csv)에 적용하여 얻은 2,482명 고객의 성별 예측값(남자일 확률)을 다음과 같은 형식의 CSV 파일로 생성하시오.(제출한 모델의 성능은 ROC-AUC 평가지표에 따라 채점)



---> 2탄

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari