ABOUT COMPUTER/학습 STUDY

[Deep Learning] 자전거 수요 예측하기 - kaggle

drag0npie 2021. 4. 8. 19:12

2021.04.08 공부하면서 데이터 분석, 전처리에 대해 이해하는 부분만 포스팅하였습니다.

 

Prob : 과거 사용 패턴과 날씨 데이터를 이용해서 자전거 수요 예측하기

 

제공되는 data field :

datetime - hourly date + timestamp
season - 1 = spring, 2 = summer, 3 = fall, 4 = winter
holiday - whether the day is considered a holiday
workingday - whether the day is neither a weekend nor holiday
weather - 1: Clear, Few clouds, Partly cloudy, Partly cloudy
2: Mist + Cloudy, Mist + Broken clouds, Mist + Few clouds, Mist
3: Light Snow, Light Rain + Thunderstorm + Scattered clouds, Light Rain + Scattered clouds
4: Heavy Rain + Ice Pallets + Thunderstorm + Mist, Snow + Fog
temp - temperature in Celsius
atemp - "feels like" temperature in Celsius
humidity - relative humidity
windspeed - wind speed
casual - number of non-registered user rentals initiated
registered - number of registered user rentals initiated
count - number of total rentals

 

CSV를 참조하여 내가 해석한 data field

datetime
season -> 1: spring, 2: summer, 3: fall, 4: winter
holiday,
workingday, -> 의문점 : 주말도 아니고 workingday도 아닌건 뭐임..? 둘 다 0인 경우.
weather,
temp,
atemp,
humidity,
windspeed,
casual,
registered,
count

=> 첫번째 생각 : 일단 datetime부터 쪼개서 언제 자주 타는지 확인해보자. 데이터의 이해도가 있어야 쉽게 코드를 구현할 수 있다.

두번째 생각, 날씨가 좋고 겨울보다는 봄, 여름, 가을에 많이 빌리지 않을까? 라는 생각. 내가 겨울에 자전거 탔을 떄 얼마나 추웠는지 생각해봐...

세번째 생각, 칼럼들에 대한 상관관계를 알면 좋을듯

 

datetime에 포함되어 있는 weekday를 사용하고 싶었다. 어느 요일에 많은지 보고 싶었다. 나 같은 경우만 해도 정해진 평일에만 자전거를 타고 다녔으니까 혹시라도 상관관계가 있을까? 해서 그래프를 그려보았다.

* 참고) weekday와 dayofweek에 대한 차이: weekday는 월요일 = 0, 화요일 = 1, ... 일요일 = 6

dayofweek은 일요일 = 1, 월요일 = 2, ... 토요일 = 7 이라고 느껴진다.

 

 

왼쪽 아래에 보이는게 요일별 대여량인데 맨 왼쪽부터가 월요일인데 일요일이 제일 낮았다. 아마 그 이유는 일요일엔 집에서 쉬는 사람이 대부분인 것 같다. 생각보다 워싱턴에서 출퇴근용으로 자전거를 빌리는 사람이 많게 해석된다.

 

주피터노트북에 정리한 내용은 다음과 같다.

 

신경써야 할 부분 / 2011년도보다 2012년에 대여량이 많았고,
연초보다는 연중/연말이 훨씬 많았다. -> 1~6월까지 증가하고, 10월부터 12월까지 감소
=> 내 예측이랑 같음

weekday같은 경우에는 많이 차이 없었고, 일요일에 좀 적네

시간대비 7시부터 9시 - 출근시간 과 17시부터 19시 - 퇴근시간이 많네
여기서 할 수 있는 생각으로는 요일로는 어떻게 나뉘어질까? 라는 생각을 할 수 있음
근데 왜 day rental amount에는 19까지밖에 없지? => test 데이터에 20부터 있음
아마 train을 기반으로 20~30의 렌트 수를 예측할 수 있어야 함 이게 곧 문제

 

workingday와 holiday 칼럼에 대한 의문이 아직 가시지 않았다. 그래프로 나타내보자.

여기서 재미있는 사실을 하나 알아냈는데 어떻게 겨울보다 봄이 더 적지? 에서 데이터가 뭔가 잘못되있나라는 생각이 들었다. 내 생각이 잘못됐나? => 봄엔 꽃보러들 많이 자전거 타잖아. 아마 워싱턴의 1이 겨울인 것 같다.

1 겨울 2 봄 3 여름 4 가을 위의 사진에 담겨있는 달로봐도 이해할 수 없었다. 11월 12월 1월에는 자전거 타기 싫었거든

 

 

온도와의 상관관계를 그래프로 조금이나마 이해해보자면
10도부터 30도일때가 비교적 많이 분포되어있지
체감온도도 또한 10도부터 30도에서 많이 분포되어있고 30도에서 피크 습도는 40%이상에서 많이 분포되어 있다
풍속이 너무 높으면 또 없고. 비교적 바람이 많이 불지 않아야 자전거를 잘 타네

 

 

이정도면 적절한 시각화 & 적절한 분석을 마친 것 같다. 하나 빼고.

workingday와 holiday에 따른 자전거 대여량을 위 그래프로는 얻을 수 있는게 거의 없었다.

시간대로 분석해야 할까? workingday에 대한 이해는 구글을 통해 알아냈다. 0은 휴일, 1은 근무일

확실히 다르지
날씨가 나빠도 비슷하다
출처 : https://hong-yp-ml-records.tistory.com/27?category=823206

 

처음에는 내가 히트맵을 만들었는데 상관관계가 너무 없어보인다고 생각이 들어서 삭제했는데 사실 그래프로 나타내지 않았으면 몰랐을 것이라고 생각이 들어서 급히 배껴왔다.

 

데이터 전처리를 할 때 outlier에 대한 이상치들을 제거해주는 것이 학습시킬 때에 훨씬 효율적으로 학습이 진행될것이다. 따라서 전처리에 outlier를 탐지하여 제거해주는 방향으로 전처리를 진행해줄 것