[ 사용된 기술 및 패키지 ]
- python
- pandas / numpy
- folium
- haversine(좌표간 거리 구하는 패키지)
- K-Mneans 알고리즘
[ 담당 업무 ]
- 팀장
- 데이터 수집 및 처리
- 지도 시각화
- 결과 해석(지표 생성)
재활용 쓰레기가 제대로 처리되지 않고 막 버려지고 있는 현실에 문제의식을 느끼고 재활용 쓰레기를 잘 모을 수 있도록 재활용 쓰레기 회수 로봇의 최적의 설치 위치를 데이터를 기반으로 선정하고자 했다.
가정에서는 재활용을 잘 하고 있다는 가정 하에 길거리를 다니는 사람들을 위한 위치 선정에 포커스를 맞췄다. 따라서 유동인구를 위한 버스정류장 데이터와 쓰레기 생성 위치에 가중치를 주기 위한 점포 인허가 정보를 사용했다.
이 프로젝트는 나의 첫 프로젝트로 21년 6월부터 21년 8월까지 진행된 '양재 AI허브 AI 실무 개발자 양성 교육' 중 데이터분석 코스에서 진행한 데이터 분석 프로젝트이다.
국가 통계 포털에 따르면 사람들은 환경 오염 방지를 위해 노력하는 일이 분리수거라고 답한 비율이 과반을 넘는다.
위 사진처럼 길거리에 놓여있는 쓰레기 봉투에 음료수 캔, 플라스틱 용기 등의 재활용품들이 그냥 버려져 있거나 지자체에서 공공 쓰레기통을 운영하고 있지만 일반쓰레기통만 있어 재활용이 잘 되지 않는 모습을 쉽게 볼 수 있다.
환경 오염 방지를 위해 재활용에 힘쓰는 사람들과 길거리에 그냥 버려진 재활용 쓰레기, 이 둘의 연결 고리는 무엇일까? 우리는 이 문제를 재활용 쓰레기를 버릴 적절한 인프라가 구성되지 않았다고 생각했다. 위에서 본 설문에서 재활용에 대한 의지는 이미 확인했으므로 재활용 쓰레기를 버릴 수 있는 시설이 적절한 곳에 있다면 이런 문제는 해결될 것이라고 생각했다.
인공지능 재활용 쓰레기 회수 로봇은 당시에도 이미 수퍼빈에서 운영 중이었기 때문에 회수로봇을 만들기보다는 적절한 위치를 선정하는 것이 더 효율적이라고 생각하여 프로젝트 주제를 재활용 쓰레기 회수 로봇의 위치 선정으로 정했다.
우선 우리는 서울시 서대문구만을 타겟으로 결정했다. 그 이유는 처음부터 서울시 전체 혹은 전국을 대상으로 데이터를 분석할 경우 데이터의 특성을 충분히 파악하지 못한다고 판단했기 때문이고, 서대문구에는 여러 개의 대학이 있고, 홍대나 신촌 같이 큰 상권이 있는 곳이기 때문에 서대문구를 타겟으로 정했다.
데이터는 공공데이터를 사용했다. 서울 열린데이터 광장에서 휴게음식 판매 점포 인허가 정보 데이터, 버스정류장 위치 및 승하차 승객 수 데이터를 사용했다.
우리는 점포 데이터와 버스 데이터 중 점포 데이터에 중점을 두기로 했다. 왜냐하면 아래 예시와 같이 주택 밀집 지역은 버스 승하차 인원은 많지만 실질적으로 재활용 쓰레기를 만드는 경우가 적다고 판단했기 때문이다.(빨간색 원은 아파트 단지를 표시한 것)
아래와 같이 처리한 데이터들을 지도에 시각화 했다. 시각화 자료의 범례는 다음과 같다.
[ 범례 ]
- 빨간색 점 : 개별 점포 위치
- 노란색 마커 / 원 : 상위 점수 클러스터(점포의 개수가 많은 클러스터) 중심 / 클러스터 경계
- 초록색 마커 / 원: 하위 점수 클러스터(점포의 개수가 적은 클러스터) 중심 / 클러스터 경계
- 분홍색 마커 : 총 승하차 승객수가 5만 이상, 8만 이하인 버스 정류장
- 짙은 빨간색 마커 : 총 승하차 승객수가 8만 이상인 버스 정류장
점포를 기준으로 군집화 한 결과와 그 안에 주요 버스정류장이 있는 지역에 우선적으로 회수 로봇이 설치되어야 된다고 생각했다. 예를 들면 아래와 같은 지역이다.
우리는 쓰레기 회수 로봇은 전력을 필요로 하고 설치에는 시의 승인이 있어야하기 때문에 대략적인 설치 위치만을 제공했다. 이 부분은 현실적인 문제가 있기에 데이터만으로 풀어내는 데에는 한계가 있었다.
이 프로젝트는 내가 진행한 첫 프로젝트이다. 사실 코딩 공부를 시작한지도 얼마 안된터라 코드 작성, 구글링, 팀원들과 협업 등 생소한 것이 너무도 많은 시간이었다. 그러나 프로젝트를 진행하며 소통하는 방법, 결과물을 공유하는 방법, 구글링하는 방법 등 많은 것들을 익혔다.
처음에는 한 클러스터의 중심은 다른 클러스터 내에 없다는 가정 하에 위와 같은 알고리즘을 생각해보았다. 그런데 이 외에도 계산해야 하는 경우의 수가 너무 많아 어려움을 느꼈다.(클러스터의 중심이 다른 원 위에 있는 경우, 두 클러스터에 교점이 없는 경우 등)
그러던 중 회수 로봇에 전기 공급, 지자체의 허가 등 현실적인 문제로 회수 로봇의 위치를 특정할 수 없다는 결론을 얻고 해당 알고리즘은 사용하지 않는 것으로 결정했다.비록 이 방법을 사용하지는 못했지만 문제를 해결하기 위해 이것 저것 생각하고 고민하는 시간 덕분에 이 프로젝트에 더 깊이 생각할 수 있었다고 생각한다.
우리 팀원 중에는 정년 퇴직을 하신 팀원(=박선생님)이 있었는데, 그 분 덕분에 우리 프로젝트를 갈무리할 수 있었다고 생각한다. 박선생님은 회의 중 나오는 안건 대부분에 "왜?"라고 질문하셨다. 그리고 우리는 자신들의 주장에 근거를 제시하면서 어느 부분에서 논리가 부족한지, 왜 이 주장은 말이 안 되는지 스스로 깨닫게 되었다. 박선생님께서 "왜?"라는 질문을 해주신 덕분에 느리지만 단단한 한 걸음을 내딛었다고 생각한다. 앞으로 어떤 프로젝트를 하던, 어떤 일을 하게 되던 "왜?"라는 질문을 달고 살아야 겠다.