이번 포스팅에선 앞서 가공한 데이터를 이용해 데이터 시각화를 해보겠습니다.
지금 가지고 있는 Variable은 총 28개 있으며 현재 변수들 간에 서로 어떠한 상관관계가 있는지 모릅니다.
그래서 어떻게 시작해야할 지 감이 안잡힐 수도 있습니다.
우선 본 프로젝트의 목표를 다시 한번 확인하겠습니다.
"새로운 가입자가 최초로 예약할 장소를 예측하자!"
그러므로 기존의 사용자가 어떠한 상태에서 예약을 했는지, 예약을 했다면 어디를 맨 처음 예약했는지 확인해 볼 필요성이 있습니다.
우선 가입날짜와 처음 예약한 날짜와의 상관관계가 있는지 확인해보겠습니다.
아래에서 코드와 실행결과를 확인할 수 있습니다.
# date_first_booking by date_account_created
airbnb %>%
sample_n(2000) %>%
filter(age < 150) %>%
ggplot(aes(date_account_created, date_first_booking)) +
geom_point(alpha = 0.5) + geom_smooth() +
ggtitle("Date_first_booking by date_account_created ")
결과를 먼저 확인하고 코드에 대해 설명하겠습니다.
위 두 변수의 관계가 선형관계에 있음을 확인할 수 있습니다.
즉, 가입한지 오래된 사용자 보다는 이제 막 가입한지 얼마안된 사용자를 대상으로 마케팅을 해야함을 알 수 있습니다.
이제 코드를 확인해보겠습니다.
전체 데이터를 다 사용하기 보단 보단 랜덤으로 2000개의 데이터를 뽑아서 사용했습니다. 2000도 충분히 큰 숫자이기 때문에 모집단을 예측하는 데 문제가 없을 것 같습니다.
사용자의 나이를 나타내는 age변수에 간혹 이상한 값이 들어가 있을 경우가 있습니다. 이는 회원가입할 때 충분히 발생할 수 있는 오류이므로 150살 이상의 고객은
실수로 입력했다고 가정하고 그 이하의 사용자 데이터만 사용했습니다.
코드를 보면 Line마다 '%>%' 를 볼 수 있습니다. 이것은 dplyr에서 제공해주는 연산자로 and의 의미와 같습니다.
여러 개의 조건을 추가하는 경우 %>%를 사용하여 쉽게 구현할 수 있습니다.
수도코드로 나타내면 다음과 같습니다.
airbnb 데이터에서,
2000개를 랜덤으로 고르고,
date_account_created를 기준으로 date_first_booking을 알아본건데,
점과 선을 긋고,
제목은 ~~로 해줘!!
위 코드를 조금 수정해보겠습니다.
저희가 가지고 있는 변수 중 sign_up app가 있습니다. 이는 회원가입 경로가 모바일인지 웹인지 나타내는 변수입니다.
이를 코드에 추가하면 sign_up app에 따라 점의 색깔을 다르게 표현해보겠습니다. 또한 age변수를 추가하여 점의 크기를 나타내보겠습니다.
# date_first_booking by date_account_created
airbnb %>%
sample_n(2000) %>%
filter(age < 150) %>%
ggplot(aes(date_account_created, date_first_booking)) +
geom_point(aes(size=age, col=signup_app),alpha = 0.5) + geom_smooth() +
ggtitle("Date_first_booking by date_account_created ")
자 결과를 보니 어떤가요?
대부분의 예약을 완료한 고객들은 Web을 통해 가입한 고객임을 알 수 있습니다!
아마 숙소를 예약하는 것이기 때문에 스마트폰으로 대충 보기보단, 자리에 앉아서 컴퓨터를 통해 많은 고민을 하고(?) 예약을 하는구나!
예를 들어 이렇게 생각할 수 있는겁니다. 점의 크기로 age를 나타냈는 점이 너무 많아서 이 의미를 찾기는 힘드네요
지금까지 분석한 결과를 한번 정리해보겠습니다.
이제 막 회원가입한 사용자 중에 Web을 통해 가입한 고객을 대상으로 마케팅을 해야한다!
위 분석을 통해 Signup_app이 중요한 변수라는 것을 알았습니다.
그럼 한번 Signup_app의 분포를 한번 확인해볼까요? 보기 쉽게 막대그래프로 표현해보겠습니다.
# view signup_app
airbnb %>% ggplot(aes(signup_app)) + geom_bar()
기본적으로 Web을 통해 가입한 사용자가 많네요..!
다음으로 예약한 사용자를 기반으로 age 분포를 확인해보겠습니다.
#View age by data_account_created
airbnb %>%
sample_n(2000) %>%
filter(age<150) %>%
ggplot(aes(age, date_first_booking)) + geom_point(alpha=.5) + geom_smooth()
20,30대의 고객이 주로 Airbnb 서비스를 사용하고 있는 것을 알 수 있습니다.
시간이 지날수록 Airbnb가 점점 커지고 유명해지면서 사용고객도 많아지고 있음을 알 수 있네요.
이제 사용자들이 맨 처음 예약하는 장소가 어디가 많은지 한번 확인해보겠습니다.
확률을 표현하기 위해 %로 표현하겠습니다.
#overall dest table stats
#what % of users go to which country
t = table(airbnb$country_destination)
print(signif(t / sum(t) * 100), digits = 2)
Result :
NDF가 거의 60%로 많은 비율을 차지하고 있습니다, NDF는 No Destination Found의 약자로 예약을 하지 않은 사용자를 말합니다.
많은 사용자가 예약은 하지 않았고, 예약한 사용중에서는 US(미국)이 약 30%로 가장 많은 비율을 차지하고 있습니다.
막대그래프로 다시 한번 확인해보겠습니다.
barplot(t/sum(t))
다음 포스팅에서는 예약한 Destination을 기준으로 더 데이터 시각화를 해보는 내용을 이어가겠습니다.
감사합니다!
'Computer Science > 프로젝트' 카테고리의 다른 글
Airbnb New User Bookings 데이터 시각화 - Kaggle Project(4) (0) | 2017.11.11 |
---|---|
Airbnb New User Bookings 데이터 읽기 및 가공 - Kaggle Project(2) (0) | 2017.11.09 |
Airbnb New User Bookings - Kaggle Project(1) (0) | 2017.10.31 |