본문 바로가기
300x250

Programming/Project10

[NYC 택시 수요 예측 PJT] 10. Result Analysis and Feature Analysis 앞서 XGBoost, LightGBM, Random Forest를 통해 예측한 결과를 분석을 해보려고 한다. 모델의 결과는 MAE, MAPE, MSE를 통해 나타내었으며, parsing을 통해 각 파라미터와 오차는 experinments 폴더에 저장이 되었다. MAE, MAPE, MSE와 같은 지표는 예측 모형의 효과를 검증하고 성능을 평가하기 위해 사용된다. 1. 오차의 종류 1-1. MAE (평균 절대 오차) MAE는 Mean Absolute Error의 약자로 실제 값과 예측 값의 차이를 절댓값의 평균으로 나타낸 값이다. MAE는 오차에 절댓값을 취하므로 오차의 크기가 그대로 반영되어 직관적인 특성을 가진 지표이나 절댓값을 취하기 때문에 실제보다 낮은 값인지 높은 값인지는 알 수 없다. 1-2. M.. 2021. 8. 19.
[NYC 택시 수요 예측 PJT] 9. XGBoost Regressor, LightGBM Regressor, Random Forest 본 게시글에서는 머신러닝의 앙상블 모델인 Random Forest와 Gradient Boost 기법의 종류인 XGBoost와 LightGBM를 사용하여 예측을 진행한다. XGBoost와 LightGBM 기법은 최근 Kaggle 플랫폼에서 좋은 성능을 보이며 주목을 받고 있다. 하지만 두 모델 모두 의사결정나무 (Decision Tree)를 기반으로 하기 때문에 오버 피팅 (Over-fitting)에 주의해야 한다. 부스팅은 랜덤 포레스트나 배깅처럼 여러 개의 트리를 만드나 기존에 있는 예측기를 발전시켜서 이를 합한다는 차이점이 있다. 정리해보면 배깅은 모델을 다양하게 만들기 위해 데이터를 재구성하는 방법, 랜덤 포레스트는 모델을 다양하게 만들기 위해 데이터와 변수 모두 재구성하는 방법 그리고 부스팅은 맞.. 2021. 8. 15.
[NYC 택시 수요 예측 PJT] 8. 베이스라인 모델 구축 - 반복 실험(Sacred 사용) 머신러닝 모델링을 진행하면 최적의 결과를 찾기 위해 다양한 모델을 사용하며 반복적으로 실험을 하게 된다. 이 과정에서 다양한 실험을 진행하며, feature, parameter를 자동으로 기록할 수 있는 도구가 있으면 진행이 아주 효율적인데 이때 Sacred라는 것을 사용하면 모델링을 할 때 사용했던 feature, parameter와 같은 설정을 저장하고 관리할 수 있다. Scared Github에 의하면 Sacred는 실험에서 축적된 데이터의 복사를 만들고, 기록하고, 정리하고, 설정하는 데 도움을 주는 도구이며, 아래와 같이 설명하고 있다. Sacred is a tool to help you configure, organize, log and reproduce experiments. It is de.. 2021. 8. 2.
[NYC 택시 수요 예측 PJT] 7. 베이스라인 모델 구축 본 장에서는 수요 예측을 진행함에 있어 성능 비교의 기준이 되는 베이스라인 모델을 구축하고자 한다. 1. Library Import import pandas as pd from sklearn.preprocessing import OneHotEncoder from sklearn.linear_model import LinearRegression import seaborn as sns import numpy as np import warnings import matplotlib.pyplot as plt from ipywidgets import interact from sklearn.metrics import mean_absolute_error from sklearn.metrics import mean_squa.. 2021. 7. 28.
[NYC 택시 수요 예측 PJT] 6. 데이터 전처리 데이터 전처리란 모델링하고자 하는 목적에 맞고 분석하기 좋게 데이터를 다듬고 이상값을 제거하는 과정을 말한다. 데이터 전처리는 SQL(BigQuery)와 Python 둘 다에서 진행이 가능하며, SQL에서 가능한 부분은 SQL에서, SQL에서 하기 힘든 부분은 Python의 Label Encoding, One Hot Encoding을 통해 하고자 한다. 코딩에 앞서 전처리할 부분은 아래와 같다. Time data pre-processing Reverse Geocoding via BigQiery GIS Categorical data pre-processing Train-Test Split 1. Library Import import pandas as pd from sklearn.preprocessing i.. 2021. 7. 27.
[NYC 택시 수요 예측 PJT] 4. 데이터 EDA - 데이터 시각화 (Time Domain) - 2 지난 포스트에 이어 이번에도 데이터 시각화를 진행하고자한다. 5. 요일별 시간대별 Trip 수 현재 데이터프레임을 다시 한번 살펴보면 현재는 1월 1일부터 시간별 Trip의 수와 날짜만을 보여준다. df.head(2) 현재 확인하고자 하는 요소들은 요일별 시간대별 Trip수이기때문에 요일, 시간 주차 정보를 추가로 데이터프레임에 추가한다. df['weekday'] = df.index.weekday #요일을 숫자로 표기 df['hour'] = df.index.hour df['weeknum'] = df.index.week #주차를 숫자로 표기 df.head() datetime모듈의 weekday()함수는 날짜의 요일 정보를 숫자값으로 0(월요일)부터 6(일요일)까지 리턴해주며, weeknum()은 주차를 숫.. 2021. 7. 14.
300x250