이번에는 표준화를 시행해서 랜덤포레스트를 돌려보겠습니다. 참고로 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
'R' 카테고리의 다른 글
[빅분기 실기] 이상치 정제후 AUC 0.6688 (0) | 2021.06.12 |
---|---|
[빅분기 실기] 작업형2번 파생변수 추가후 랜덤포레스트 (0) | 2021.06.12 |
[빅분기 실기] 작업형 2번문제 EDA(데이터 뜯어보기) (2) | 2021.06.11 |
[빅분기 실기] pROC, ROCR의 차이점 (0) | 2021.06.11 |
[빅분기 실기대비] 단답형 예상 개념 ④ (0) | 2021.06.10 |