티스토리 뷰

반응형

1. 우선 주어진 데이터의 결측치 등을 확인하기

summary(train)

summary(test)

 

2. 기본적으로 사용하게 될 라이브러리 함수를 불러와 준다.

library(dplyr) # 파이프 연산자(%>%)

library(caret) # postResample >> RMSE, R2, MSE 를 확인할 수 있다.

library(randomForest) # 예측모델 randomForest 사용

 

3. 환불금액이 없는 경우(결측치)를 0원으로 대체한다. 결측이라고 보기 어렵다.

# 환불금액 없는 경우 >>> 0 으로 대체한다

train$환불금액 <- ifelse(is.na(train$환불금액), 0, train$환불금액)

test$환불금액 <- ifelse(is.na(test$환불금액), 0, test$환불금액)

 

4. 범주형 자료에 대해 훈련용, 학습용 데이터의 라벨(level)을 맞춰 준다.

# train 과 test 의 범주형 자료에 대한 라벨(level)을 맞춘다

train$주구매상품 <- factor(train$주구매상품)

test$주구매상품 <- factor(test$주구매상품, level = levels(train$주구매상품))

 

train$주구매지점 <- factor(train$주구매지점)

test$주구매지점 <- factor(test$주구매지점, level = levels(train$주구매지점))

 

#table(test$주구매상품)

 

5. 총구매액에 대해 예측하려고 하는데. 이상치에 대해 정리한 후 예측 모델을 사용하려고 한다.

## 이상치 처리

q1 <- quantile(train$총구매액, 0.25)

q3 <- quantile(train$총구매액, 0.75)

IQR <- q3 - q1

lower <- q1 - IQR*1.5

upper <- q3 + IQR*1.5

 

train01 <- train %>% filter(총구매액 >= lower & 총구매액 <= upper)

 

#########################

set.seed(100)

id <- sample(1:nrow(train01), nrow(train01)*0.7)

x_train <- train01[ id, ]

y_train <- train01[-id, ]

 

6. 모든 독립변수를 사용해서 r2 의 결과를 보고, importance=TRUE 옵션을 사용하여 중요변수를 확인해 본다.

주구매지점을 뺀 예측모델에서의 설명력을 확인한다. (결론: 뺀 경우의 설명력이 더 좋았다.)

 

rf_model <- randomForest(총구매액~. -주구매지점 , data=x_train, ntree = 100)

#pred1 <- predict(rf_model, y_train)

 

#new <- data.frame(pred1)

#new$actual <- y_train$총구매액

 

#r2 <- postResample(new$pred1, new$actual)

#r2

 

## 독립변수 모두 사용

#> RMSE Rsquared MAE

#285.9369579 0.8072927 166.3168846

 

### 주구매지점을 제외한 경우

#> RMSE Rsquared MAE

#281.3831391 0.8123912 166.9973182

 

 

 

pred <- predict(rf_model, test)

result <- data.frame(pred)

 

#tail(result)

#> pred

#2477 1102.51119

#2478 820.77033

#2479 23.23172

#2480 971.42983

#2481 453.41317

#2482 32.96072

 

# 답안(코드)을 제출한다.

write.csv(result,"result.csv",row.names = FALSE)

 

 

[참고]

유툽에서의 유명하신 분들보다 왜이리 빈약한 것 같네요...ㅜ.ㅠ..

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함