포스트

[Project] 치매 노인 사고 방지를 위한 CCTV 최적지 분석

주제

졸업 프로젝트로 진행한 치매 노인 사고 방지를 위한 CCTV 최적지 분석 과제이다. 머신러닝 을 통해 노인 사고 발생이 높은 지역을 학습하고, 해당 지역에 대해 가장 적합한 CCTV 최적지를 찾는 과정으로 진행되었다. 코드, 데이터셋 등에 대한 설명은 링크에 정리하였다.

일정 요약

  • 9월 : 주제 선정, 전체 과정 구분, 일정 계획, 역할 분배, 기업 관계자 분들과 미팅
  • 10월 : 데이터 수집, Spaitial Analysis, 파생 변수 구성, 추가 데이터 수집, 데이터 전처리
  • 11월 : 훈련 데이터 셋 구성, 모델 선정, 모델 학습, 파라미터 튜닝, CCTV 최적지 선정
  • 12월 : 모델 성능 개선, 시각화, 결과 정리, 발표 자료 준비

Log

2024. 9

  • 2주차
    • 팀 구성(2인)
    • 주제 선정
    • 역할 분배
  • 3주차
    • 기업 관계자 분들과 Zoom 미팅으로 주제 설명 청취
      • 주제의 목적, 필요성, 분석 프로세스
      • 데이터 수집 방법 : 공공데이터, VWORLD, 각 지자체 홈페이지 등
      • 데이터 분석 방법 : Spatial Analysis, Geopandas, GeoCoding
      • 학습 모델과 시각화 : Machine Learning(XGBoost), QGIS
  • 4주차
    • 세부 일정 계획 작성
      • 데이터 수집 → 데이터 분석 및 파생변수 구성 → 훈련 데이터셋 구성 → 모델 학습 → 파라미터 튜닝 → 시각화
    • 세부 역할 분배
      • PM(나) : 데이터 분석, 모델 훈련, 파라미터 튜닝, 시각화
      • 팀원 : 데이터 수집, 데이터 분석, 훈련 데이터셋 구성
    • 목적, 필요성 정리
      • 대한민국의 고령화 심화 현상 분석
      • 데이터 변화(노인 인구 수, 지형, 도로, 건출물)에 유연하게 대처할 수 모델 필요성
      • 안전 강화를 통해 사고를 줄이는 솔루션 제시

9월은 전체적인 일정과 계획을 수립하고, 주제를 명확히 이해하는 단계였다.
전국을 적당한 크기의 격자로 분할한 후 각 격자별 데이터를 수집 및 분석하기로 결정하였다.
수집한 데이터를 바탕으로 격자 별 노인 사고자 수(GT)를 예측하는 모델을 개발하는 것을 목표로 설정했다.

2024. 10

  • 1-2주차
    • 데이터 수집
    • geopandas 공부
  • 3주차
    • 추가 데이터 수집
    • 각 데이터에 대한 통계 분석 및 기본 전처리
  • 4-5주차
    • 데이터 간 상관관계 분석
    • 파생변수 구성
    • 기본 데이터셋 제작
  • 문제점
    1. 전처리 시간
      • 전국을 3km x 3km 격자로 분할하고 시각화 및 데이터 구성을 진행하는 데 시간이 많이 소요됨
      • geopanasdintersects 연산을 수행 시 약 30시간이 걸림
    2. 데이터 결측값
      • 일부 격자는 데이터가 결측됨. 예를 들어 인구 수 데이터 중 약 30% 결측(NaN)값을 가짐
    3. 데이터 불균형
      • 일부 격자는 인구가 밀집된 지역이고, 일부는 인구가 전무한 산간 지역임
      • 전체 격자 중 노인 사고가 발생한 격자 수는 약 1%로 매우 적음
  • 해결
    1. 전처리 시간 개선
      • 기업 관계자 분께 자문을 구하였고, 데이터의 범위를 전국 → 전라북도로 축소
      • 격자 크기를 3km x 3km → 100m x 100m로 조정
      • 결과적으로 전체 데이터 수가 약 83만 행으로 데이터로 축소
    2. 데이터 결측값 처리
      • 인구 수 결측값의 경우, 남녀 인구 수의 비례를 기반으로 보완
      • 남녀 모두 결측값인 경우, 평균값 또는 토지 이용 분류도 데이터를 참고하여 대체
    3. 데이터 불균형 해결
      • StratifiedKFold를 이용해 모델 학습 시 데이터 불균형 완화

2024 11.

  • 1-2주차
    • 훈련 데이터 셋 구성
      • 각 전처리된 데이터를 기준에 따라 병합
      • 추가 데이터를 지속적으로 통합하며 데이터셋 확장
  • 2-3주차
    • 모델 선정 및 학습
      • XGBoost 이외에 다양한 모델 성능 평가 및 시각화
      • XGBoost 모델에 대해 시각화 결과와 정확도를 기반으로 파라미터 튜닝
  • 4-5주차
    • CCTV 최적지 선정
      • 분할된 격자에 대해 기존 CCTV 감시 범위를 제외
      • 최적의 알고리즘을 찾기 위해 여러 접근법 실험 및 시각화
      • 기존 CCTV 감시 범위를 확인하기 위해 감시각, 용도, 거리 등을 변수로 실험
  • 문제점
    1. 불균형 데이터
      • StratifiedKFold사용에도 데이터 불균형 해결이 어려움
      • 약 83만 개 중 사고 발생 격자는 200여 개로 제한적
    2. CCTV 감시범위 측정
      • 수집한 데이터(위치, 용도, 화소 수 등)만으로 감시 범위를 측정하기에 정확한 판단이 어려움
    3. 최적지 선정 알고리즘
      • 공공기관이 사유지에 CCTV를 설치할 수 없는 점 고려
      • 해당 위치가 최적의 위치인지 판단할 근거의 부족
  • 해결
    1. 데이터 확장
      • 경상도, 충청도 등 다른 지역 데이터 수집해 훈련 시 활용
    2. CCTV 데이터 추가 분석
      • 성능이 낮거나 건물 내부 CCTV로 판단되는 데이터 제외
      • 성능 측정 지표 도입
    3. 최적지 선정 알고리즘 개선
      • 감시 범위가 아닌 지역을 최대 포괄하는 위치를 계산
      • 공공기관은 사유지에 CCTV를 설치할 수 없음 부분은 해결 방법을 찾지 못했음. 단순 제외로는 많은 어려움 발생

2024 12.

  • 1주차
    • matplotlib으로 시각화
    • 실험 결과 및 분석 데이터 정리
  • 2주차
    • 결과 정리, PPT 제작
    • 발표 자료 준비, 보고서 작성

총평

이번 프로젝트는 공간 분석데이터 전처리에 대한 지식이 부족한 상태에서 시작했음에도 많은 부분을 배울 수 있는 기회였다.
Geopandas, 시각화, 그리고 데이터 수집 및 전처리 과정에서 얻은 지식은 앞으로 많은 도움이 될 것이다.
다만 시간 부족으로 시각화에 QGIS를 활용하지 못한 점과 데이터 불균형 문제의 완벽한 해결, 효과적인 의사소통에 대한 아쉬움이 남았다.
특히 기업 관계자들의 조언을 더 일찍, 자주 요청하지 않은 점은 개선해야 한다. 조언을 늦게 구한 점이 시간 낭비의 큰 원인 중 하나였다.

References

링크

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.