이번 6차 미니 프로젝트는 IT 인프라 요구사항 기반 DX 솔루션 기획 및 인프라 설계를 주제로 진행되었다.
5월 한 달 동안 인프라, 클라우드, 제안서 작성에 대해 배웠으며, 이를 바탕으로 요구사항을 분석하고 KT 엔터프라이즈 기술들을 활용해 작성하는 시간이었다.
요구사항 분석표에서 요구사항을 보고 세부 솔루션과 기능을 적는 것은 비교적 수월했으나, 서비스, 인프라, 클라우드 구성도를 작성하는 부분은 어려웠다.
사실 난 클라우드를 맡지 않아서 지금도 잘 모르지만 (?) 교육받을 때도 어려웠고, 이번 프로젝트에서도 역시 어려움을 느꼈다 ... 클라우드 관련 지식이 부족하다는 것을 느껴서 추가적인 공부가 필요하다고 생각했는데 우리 팀원들이 잘해서 이번 프로젝트는 그냥 넘어갔다...?
하지만 이번 빅프로젝트를 진행할 때는 클라우드 공부를 다시 해야겠다고 느꼈다.
- 서비스 구성도
- 인프라 구성도
5월 교육과 6,7차 미프는 이렇게 제안서와 구성도를 작성해 보는 시간이다.
대학생 때도 코딩 위주로 공부를 했기 때문에 제안서 작성 과정은 아직 낯설고 어렵게만 느껴진다. 그래도 입사 후 이러한 작업을 자주 하게 될 것 같아서 지금 미리 경험해 보는 것도 나쁘지 않다고 생각한다. 또한, 면접 때도 충분히 어필할 수 있을 것 같아서 한 번씩 다시 공부할 예정이다.
특히, 1차 모델링과 비교했을 때, 전반적으로 모든 항목에서 MAE 값이 낮아진 것은 모델의 정확도가 향상되었음을 의미한다. 그러나 일부 항목에서는 여전히 상대적으로 큰 MAE 값을 보이고 있어, 예측 성능을 더욱 향상시키기 위해서는 데이터셋의 구성 및 모델링 방법론의 추가적인 개선이 필요하다.
데이터셋을 구성하는 과정이 더욱 복잡하고 세밀해질수록, 예측 성능이 개선될 가능성이 크다는 것을 이번 분석을 통해 알게 되었다. 이는 보다 정교한 데이터 수집과 전처리 과정이 중요하다는 것을 시사한다. 이를 바탕으로, 앞으로는 데이터의 질을 높이고, 다양한 특성을 고려하는 방향으로 데이터셋을 구성할 필요가 있다.
따라서, 다음 단계에서는 Linear Regression 알고리즘이 아닌 다른 알고리즘을 활용하여 모델링을 시도할 계획이다.
이를 통해 보다 높은 예측 성능을 달성할 수 있을 것으로 기대된다. 다양한 알고리즘을 적용해 봄으로써, 각 알고리즘의 특성과 데이터에 대한 적합성을 평가하고, 최적의 모델을 찾아가는 과정이 될 것이다.
5. 3차 모델링
Random Forest
LightGBM
Beverage
1816.34
1984.72
Milk
2038.35
2398.19
Agricultural products
10.55
11.39
3차 모델링의 예측 결과값을 한눈에 비교하기 위해서 각 모델의 MAE (Mean Absolute Error) 값만을 추출하여 비교해 보았다. 이 비교를 통해 전체적인 성능 차이를 명확히 알 수 있었다.
먼저, LightGBM과 Random Forest의 성능을 비교해 보면, Random Forest가 전반적으로 더 우수한 성능을 보였다. 이는 Random Forest가 다양한 결정 트리를 결합하여 예측 성능을 향상시키는 특성이 반영된 결과로 보인다.
그러나, Linear Regression 모델과 비교했을 때는 이야기가 달라진다. Linear Regression 모델의 MAE 값이 가장 낮게 나타나, 다른 모델들보다 예측 정확도가 높은 것으로 나타났다. 이는 Linear Regression이 주어진 데이터 세트에서 가장 적합한 모델임을 시사한다.
따라서, 이번 분석에서는 여러 복잡한 모델들이 존재함에도 불구하고, Linear Regression이 가장 좋은 성능을 보였음을 확인할 수 있었다. 이 결과는 데이터의 특성이나 모델의 적합성에 따라 간단한 모델이 오히려 더 나은 성능을 발휘할 수 있음을 보여준다.
마지막으로 데이터 프레임을 joblib를 사용해 저장할 때는 다음과 같이 저장 할 수 있다.
[5-10월에 농산물 판매량이 높음] 1. 계절적 요인 : 농산물 생산이 활발하게 이루어지는 따뜻한 계절이며, 다양한 종류의 작물이 수확되는 시기임. 이로 인해 시장에 공급되는 농산물의 양이 증가하게 되어 판매량이 높아질 수 있음. => 농산물의 수확량이 증가하면 구매할 수 있는 양도 더 많아짐 : 판매량 증가 2. 휴가철 : 여름철에는 학생들의 방학 및 휴가철이 겹치는 경우가 많이 있음. 이로 인해 가정 내 식품 소비가 증가하고, 여행객들도 지역적인 농산물을 구매하는 경향 => 수요 높아지면 판매량 높아짐
[주말이 판매량 가장 높음 / 월요일이 가장 낮음] 1. 주말에는 사람들이 외식을 즐기거나 집에서 요리를 하기 위해 재료를 구매하는 경향 => 판매량 높음 그래서 월요일에는 집에서 준비한 음식을 먹는 경우가 많아져서 판매량 감소할 수도 있음 2. 일부 소비자들은 주말에 휴식을 취하고 주중에는 바빠서 외식을 하거나 식료품을 구매하는 시간을 갖지 않을 수 있음 이는 특히 월요일에 나타남 3. 일부 소비자들은 주말에 큰 쇼핑을 하고 월요일에 무거운 소비를 자제하는 경향. 이는 주말에 구매한 식료품을 사용하고 소비를 줄이는 것과 관련이 있음 4. 공급망 요인: 공급망이 월요일에 활성화되지 않아 식료품 재고가 부족할 수 있음. 이는 판매량이 감소하는 요인이 될 수 있음
마지막으로 지금까지 분석한 판매량과 변화량의 상관 계수를 알아보았다.
시각화만으로도 충분히 연관이 있다고 느꼈고, 상관 계수는 0.65 로 중간 정도의 관계가 나왔다.
사실 생각했던 것보단 낮아서 조금 충격이었다.
0.8은 나올 줄 알았,,,
correlation = weekday_mean['Qty'].corr(weekday_mean['Qty_Diff'])
print("판매량과 변화량의 상관 계수:", correlation)
판매량과 변화량의 상관 계수: 0.653969813069822
이 글에서는 여기까지만 리뷰를 하고 다음 글에서 이어서 분석을 하고 예측 모델을 만들 예정이다.
from sklearn.linear_model import LinearRegression
linear_model = LinearRegression()
linear_model.fit(x_data, y_data)
8. 딥러닝 모델링
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.models import Sequential, load_model
from tensorflow.keras.layers import Dense, Dropout
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint
다음 가설인 노선수가 적을수록 이동 시간은 높을 것이다. 를 증명하기 위해 평균 이동 시간(분)과 노선수를 분석해 보았다.
그래프를 보면 완전히 직선을 따라 분포돼있지는 않지만 어느 정도 규칙성이 보이며,
상관계수와 p-value 값을 보았을 때 관련이 있다는 것이 보인다.
이제 정류장과 노선수를 어느 지역에 설치해야 할지 구제척으로 보기 위해 다음과 같은 그래프를 만들어 보았다.
노선수와 평균 이동 시간의 관계는 중간 정도임을 위에서 확인하였다.
그리고 그래프를 보면 노선수가 적은 지역일수록 이동 시간이 많이 걸리는 것을 한눈에 볼 수 있다.
그렇게 가설 검증을 한 결과, 노선수를 추가해야 하는 지역은 강동구라고 결론을 내렸다.
결론 : 인구가 많지만 정류장/노선수가 적은 지역은 이용자 편의성 감소, 이용률 저하, 지역 접근성 감소, 교통 혼잡 증가, 지역 발전 저해 등 의 문제점이 발생한다. 강동구, 강서구, 노원구와 같이 노선수에 비해 정류장 수가 많은 지역들은 주로 주거 지역으로 발전되어 왔다. 반면에 정류장 수보다 노선 수가 많은 종로구와 중구는 도심 지역으로 분류되며, 이에 따라 정류장 수는 적지만, 지하철과 버스 등 다양한 교통수단을 활용할 수 있는 특징을 가지고 있다.
또한, 평균 이동 시간이 긴 지역으로는 강동구 강서구가 있는데 이 지역들은 동시에 노선수가 적은 지역이기도 하다.
이 처럼 정류장에 비해 노선수가 적고, 인구가 많이 분포되어 있는 강동구, 강서구가 교통의 불편함으로 인해 평균 이동시간이 많이 걸리는 것을 볼 수 있으며 반면, 노선수가 많은 지역인 중구, 용산구, 동작구는 평균 이동 시간이 적은 것을 볼 수 있다.