R

[빅분기 실기] 작업형 2번 표준화후 RF AUC 0.6719

한번해보즈아 2021. 6. 11. 23:18

이번에는 표준화를 시행해서 랜덤포레스트를 돌려보겠습니다. 참고로 AUC값은 표준화 하기전에는 0.6378이 나오며 표준화 한후에는 0.6719 나오네요 이것도 돌릴때마다 값이 계속 변하긴 합니다...

 

시험기관에서는 0.5<AUC<0.6이면 10점을 부과한다고 하는데 이런식으로 하면 저는 20점 정도 받겟네요 이것보다 더 점수를 올릴수 있는 방법이 생각나지 않는데 고민이 많아지네요

 

 

##표준화 전
> x_train <- read.csv("C:/R/[Dataset] 작업형 제2유형/X_train.csv")
> y_train <- read.csv("C:/R/[Dataset] 작업형 제2유형/Y_train.csv")
> full <- left_join(x_train, y_train, id="cust_id")
Joining, by = "cust_id"
> full$환불금액 <- ifelse(is.na(full$환불금액),0,full$환불금액)
> full$주구매상품 <- as.factor(full$주구매상품)
> full$주구매지점 <- as.factor(full$주구매지점)
> full$gender <- as.factor(full$gender)
> full <- full[,-1] #cust_id 삭제
> idx <- sample(1:nrow(full), 0.7*nrow(full), replace=F)
> train <- full[idx,]
> test <- full[-idx,]
> set.seed(1234)
> rf.model <- randomForest(gender~.,
+                          data=train,
+                          ntree=50,
+                          mtry=sqrt(9),
+                          importance=T)
> pred.rf <- predict(rf.model, test[,-10],type="prob")
> auc(test$gender, pred.rf[,1]) # 남자로 예측할 확률 auc 값 확인
Setting levels: control = 0, case = 1
Setting direction: controls > cases
Area under the curve: 0.6378
### 표준화 후
> x_train <- read.csv("C:/R/[Dataset] 작업형 제2유형/X_train.csv")
> y_train <- read.csv("C:/R/[Dataset] 작업형 제2유형/Y_train.csv")
> full <- left_join(x_train, y_train, id="cust_id")
Joining, by = "cust_id"
> full$최대구매액 <- full$최대구매액/10000
> full$총구매액 <- full$총구매액/10000
> full$환불금액 <- full$환불금액/10000
> full$환불금액 <- ifelse(is.na(full$환불금액),0,full$환불금액)
> full$주구매상품 <- as.factor(full$주구매상품)
> full$주구매지점 <- as.factor(full$주구매지점)
> full$gender <- as.factor(full$gender)
> full <- full[,-1] #cust_id 삭제
                                                                     
> full$총구매액 <- scale(full$총구매액)
> full$최대구매액 <- scale(full$최대구매액)
> full$환불금액 <- scale(full$환불금액)
> full$내점일수 <- scale(full$내점일수)
> full$내점당구매건수 <- scale(full$내점당구매건수)
> full$주말방문비율 <- scale(full$주말방문비율)
> full$구매주기 <- scale(full$구매주기)
> idx <- sample(1:nrow(full), 0.7*nrow(full), replace=F)
> train <- full[idx,]
> test <- full[-idx,]
> set.seed(1234)
> rf.model <- randomForest(gender~.,
+                          data=train,
+                          ntree=50,
+                          mtry=sqrt(9),
+                          importance=T)
> pred.rf <- predict(rf.model, test[,-10],type="prob")
> auc(test$gender, pred.rf[,1]) # 남자로 예측할 확률 auc 값 확인
Setting levels: control = 0, case = 1
Setting direction: controls > cases
Area under the curve: 0.6719