가다서다 — 도심 주행이라는 소음
이론과 실제 사이
앞의 두 편은 신호를 다루는 도구를 설명했다. 성분으로 나누고, 시스템의 지문을 걷어내고.
그 설명들은 하나의 전제 위에 있었다. 차가 일정한 속도로 매끄럽게 달린다는 전제.
실제 도심 주행은 그렇지 않다. 이 편은 그 차이를 정면으로 다룬다. 이 부분을 넘지 못하면 앞의 모든 이야기가 종이 위에만 머문다.
도심에서 실제로 일어나는 일
출근길 15분 동안 차 안의 폰이 기록하는 것을 나열해 보자.
정지와 출발. 신호등마다 멈추고 출발한다. 출발할 때 차체가 뒤로 기울고, 멈출 때 앞으로 쏠린다. 이건 노면과 무관한 커다란 가속도 변화다. 그리고 우리가 찾는 신호보다 훨씬 크다.
저속 정체. 시속 5~10km로 기어가는 구간. 이때는 노면에서 오는 입력 자체가 약하다. 천천히 지나가면 요철을 부드럽게 넘기 때문이다. 정보가 거의 실리지 않는다.
차선 변경과 회전. 좌우 방향의 가속도가 크게 생긴다. 그리고 차가 기울어서 폰의 자세가 바뀐다. 15편에서 말한 중력 분해가 흐트러진다.
과속방지턱. 큰 충격. 자주 나온다.
요금소, 주차장 진입, 경사로. 특수한 구간들.
폰 자체의 이동. 손으로 집었다 놓고, 통화하고, 충전기를 꽂는다. 그 순간의 가속도는 노면과 완전히 무관하다.
엔진 정지와 재시동. 요즘 차는 정차 시 엔진이 꺼진다. 그러면 진동 배경이 갑자기 바뀐다.
이 목록을 보면 문제가 분명해진다. 15분 주행에서 “깨끗한” 구간은 일부에 불과하다.
크기의 문제
가장 뼈아픈 것은 크기 차이다.
급정거의 가속도는 크다. 과속방지턱 충격도 크다. 반면 우리가 찾으려는 것 — 노면 아래 지지 상태 변화에서 오는 미세한 응답 차이 — 는 아주 작다.
이건 조용한 대화를 공사장에서 녹음하는 것과 비슷하다. 마이크는 충분히 좋아도, 큰 소리에 묻혀 작은 소리가 안 들린다.
그런데 소리에서는 방법이 있다. 주파수가 다르면 나눌 수 있다. 공사장 소음이 낮은 대역에 있고 목소리가 중간 대역에 있으면, 대역을 골라 들으면 된다.
우리 문제에서도 같은 접근이 부분적으로 통한다.
- 급정거·출발 — 아주 느린 변화다. 우리 대역보다 훨씬 낮다. 걸러낼 수 있다
- 차선 변경 — 좌우 방향에 주로 나타난다. 상하 방향만 보면 줄어든다
- 엔진 진동 — 특정 위치에 집중된다. 그 부분만 제거할 수 있다
부분적으로는 되지만 완전하지는 않다. 특히 급격한 변화는 넓은 대역에 퍼져서 우리 대역까지 오염시킨다. 짧고 급한 사건은 주파수축에서 넓게 번지는 성질이 있기 때문이다.
그래서 버린다
여기서 이 프로젝트의 실무적 결론이 나온다. 오염된 구간을 정제하려 애쓰지 않고, 버린다.
이게 가능한 이유는 데이터가 남기 때문이다. 15분 주행에서 절반을 버려도 나머지가 남는다. 그리고 같은 구간을 매일 두 번, 수백 대가 지난다. 쓸 수 있는 데이터의 절대량이 충분하다면, 애매한 것을 붙들 이유가 없다.
그래서 “이 구간의 데이터를 쓸 것인가”를 판단하는 관문을 앞에 둔다.
속도 조건 — 너무 느리면 정보가 없고, 너무 빠르면 다른 문제가 생긴다. 적당한 속도 범위에서만 채택한다.
가속 조건 — 가속이나 감속이 진행 중이면 버린다. 등속에 가까운 구간만.
조향 조건 — 회전 중이면 버린다.
폰 자세 안정 — 폰이 움직인 흔적이 있으면 버린다.
엔진 상태 — 배경 진동이 갑자기 바뀌면 그 경계 구간을 버린다.
이 관문을 다 통과하는 구간만 분석에 쓴다. 통과율이 낮아도 괜찮다.
정제보다 선별. 이게 우리 전략이다. 그리고 이건 15편에서 말한 “기기마다 다르니 상대 변화만 본다”와 같은 태도다. 어려운 문제를 풀려 하지 않고, 그 문제가 없는 데이터만 쓴다.
그런데 선별에도 대가가 있다
정직하게 짚어야 할 문제가 있다. 선별은 편향을 만든다.
깨끗한 데이터만 쓰기로 하면, 어떤 구간은 구조적으로 데이터가 모이지 않는다.
정체가 심한 구간. 항상 저속이라 채택되지 않는다. 그런데 정체 구간은 차량 하중이 오래 머무는 곳이라 오히려 손상이 쌓이기 쉽다.
교차로 주변. 항상 가감속과 회전이 일어난다. 그런데 교차로는 지하 매설물이 밀집한 곳이고, 실제로 함몰 사고가 잦은 지점이다.
이면도로. 통행량이 적어 데이터 자체가 적다.
즉 우리가 못 보는 곳이 위험한 곳과 겹칠 가능성이 있다. 이건 방법론의 근본적인 한계이고, 감출 일이 아니라 명시해야 할 사항이다.
완화책이 몇 가지 있다.
- 다른 지표를 쓴다. 저속 구간에서는 진동 대신 다른 것을 본다. 예를 들어 아주 느린 상하 움직임이나 차체 기울기 변화. 정보량은 적지만 없는 것보다는 낫다.
- 관문을 구간별로 조정한다. 데이터가 부족한 구간에서는 기준을 완화하고, 대신 그 데이터의 무게를 낮춘다.
- 사람의 신고에 더 의존한다. 신호가 안 잡히는 구간일수록 2부의 사람 판단이 상대적으로 중요해진다.
세 번째가 중요하다. 1단계와 2단계가 서로의 약점을 메운다. 기계가 못 보는 저속 구간에서도 사람은 여전히 느낀다. 오히려 천천히 지날 때 더 잘 느낄 수도 있다.
소음이 아니라 맥락
마지막으로 관점을 하나 뒤집어 두고 싶다.
지금까지 가감속과 회전을 “소음”이라 불렀다. 그런데 그것들은 실제로 맥락 정보이기도 하다.
같은 지점을 지날 때 어떤 사람은 항상 감속한다면, 그 지점에 무언가 있을 수 있다. 사람들이 특정 지점에서 반복적으로 차선을 바꾼다면, 그 차선에 문제가 있을 수 있다.
운전 행동 자체가 노면에 대한 사람의 판단을 담고 있다. 명시적인 신고가 아니어도, 사람들이 어떻게 운전하는지가 정보가 된다.
이건 지금 단계에서 쓰는 방법은 아니다. 그리고 개인의 운전 행동을 다루는 것은 13편의 개인정보 원칙과 신중히 조율해야 한다. 다만 버려지는 데이터 안에도 정보가 있다는 것은 기록해 둘 만하다.
다음 편에서는 선별을 통과한 데이터를 실제로 비교 가능하게 만드는 문제를 다룬다. 정규화다.
다음 편 예고 — 차량마다 다른 조건, 정규화의 문제. 서로 다른 차, 다른 속도, 다른 거치 상태의 데이터를 같은 자로 재는 방법.
「우리 동네가 먼저 안다」는 5부 30편으로 이어집니다. 지금 읽은 글은 3부 신호 읽기의 5번째(전체 제18회)입니다.