데이터에 포함된 동적 패턴의 탐색과 해석을 위한 협업적 탐험 플랫폼 (CoDIP) (2)
클릭 >> Hello, world !! (from ShadowEgo)
- (1)편 (https://inforience.net/2017/07/31/codipintro1/)에 이어서…
- 본 포스팅의 세부 요소 기술들은 모두 특허로 보호되고 있습니다. (https://inforience.net/2018/05/24/patent2017july/)
데이터를 수집했다. 그러나.
데이터를 수집하고 처리하는 시스템을 만드는 가장 기본적인 이유는 데이터에서 가치를 뽑아내고 활용하는 것이다. 그럼에도 불구하고, 많은 데이터 분석 관련 프로젝트들이 데이터를 수집하고 저장하는 시스템이나 플랫폼을 만드는 것에만 초점을 맞추고, 정작 데이터를 활용할 구체적인 방안을 만드는 데에는 소홀한 경우가 많다. 이러한 현상이 발생하는 대표적인 이유는, 데이터에서 가치를 뽑아내는 과정에는 소프트웨어 개발자나 데이터 분석 전문가들의 기술적 역량만으로 해결할 수 없는 문제들이 포함되어 있기 때문이다. 지난 (1)편에서도 언급한 바와 같이, 데이터에서 가치를 뽑아내려면, 데이터를 생성하는 주체의 특성과 상태, 생성 환경에 대한 개별적 지식과 경험이 어떻게든 활용되어야 한다.
프로그래머이면서 IoT 에 관심이 많은 김인포씨는 시중에서 판매하는 센서 세트를 구입하여 자신이 살고 있는 집의 곳곳에 센서를 설치했다. 출입문, 냉장고 문, 화장실 문 등에는 가속도 센서를, 부엌에는 온습도 센서를, 거실과 화장실에는 조도 센서를, 그리고 창문 근처에는 먼지 센서를 설치했다. 그리고 각 센서 데이터가 서버에 저장되도록 설정까지 마쳤다. 그리고는 모니터 화면에 나타나는 그래프를 보며 완벽한 IoT 환경을 만들었다는 생각을 하며 미소를 지었다. 내친 김에 김인포씨는 금융과 주식 정보를 받아오는 스크립트를 작성해서 수치를 확인할 수 있도록 dashboard 를 구성하는 작업까지 마쳤다. 김인포씨는 이제부터 매우 지능적인 생활을 할 수 있을 거라는 생각에 친구들에게 자랑을 했다.
그런데 친구인 최지능씨가 김인포씨의 자랑을 듣고는 이런 말을 했다.
“오, 멋진데, 그럼 이제 가만히 있기만 해도 중요한 정보를 다 알 수 있게 된거야?”
김인포씨가 그렇다고 대답을 하자, 최지능씨는 또 물었다.
“그럼 밖에서 일하고 있다가도 중요한 상황이 되면 실시간으로 정보를 받아볼 수도 있겠네?”
이 질문을 받고는 김인포씨는 잠시 갸우뚱했다. 데이터를 수집할 수도 있고, 그래프로 확인하는 것도 가능한데, 정작 어느 타이밍에 어떤 상황을 파악해야 하는지는 알 수 없을 것 같았다. 김인포씨는 검색을 통해 이러한 용도로 사용할 수 있는 소프트웨어나 서비스를 찾아봤지만 쉽게 찾을 수 없었다.
데이터에서 패턴을 탐지할 수 있게
CoDIP의 가장 기본적인 기능은 지속적으로 수집되는 수치 데이터에 포함된 동적 패턴(dynamic pattern)을 탐지하는 것이다. 위의 사례에서 김인포씨가 수집한 데이터들이 CoDIP에 업로드되면, 데이터에서 특정 패턴이 탐지될 때 해당 패턴의 특성과 의미를 출력할 수 있다. 따라서 김인포씨는 자신이 집을 비운 낮시간에도 낯선 사람이 집에 출입했음을 통보받을 수 있으며, 부엌의 온도가 1분 동안 5도 이상 증가했을 때 화재의 가능성을 통보받을 수 있다. 또한 화장실의 출입 회수가 지난 주에 비해 30% 이상 늘어났을 때 혈액 검사를 받아보라는 통보를 받을 수 있게 된다. 더 나아가 1주일 동안 자신이 투자한 회사의 주가가 10% 이상 오를 경우 주식을 매수할 시기임을 통보받을 수 있게 된다. (이 상황들은 모두 만들어진 예시이며, 가상의 시나리오이다.)
자, 그렇다면 이제 의문이 생긴다. “어떠한 패턴을 탐지해야 할 지, 그리고 그 패턴은 어떤 의미인지 CoDIP 은 어떻게 알아낼 수 있는 것일까?” 여기까지 꼼꼼히 읽어온 사람이라면, 왠지 어떠한 데이터던 간에 연결만 하면 알아서 척척 중요한 패턴을 탐지해서 그 의미를 알려주는 기능이 CoDIP에 포함되어 있을 것이라고 기대할 지도 모르겠다. 그렇다면 조금은 실망스러울 수도 있겠으나, CoDIP을 사용하면 할 수록, CoDIP을 점점 지능적으로 만들어갈 수 있으며, 자신이 CoDIP을 똑똑하게 만드는 과정에 직접 참여할 수도 있다는 사실을 확인하면서 실망감을 줄일 수 있을 것이다. 그리고, 사실, 매우 똑똑한 CoDIP이 개발완료되는 것이 아주 먼 미래의 일도 아니다. (사실은 Inforience 의 최종 목표는 이것이다…)
Visual Analysis in CoDIP
그림 #1. Visual Analysis (VA) 의 개념
Visual Analysis (VA) 는 CoDIP 의 여러가지 활용 모드들 중에서 가장 기본적인 모드이다. 사용자는 과거부터 현재까지 긴 시간동안 수집된, 또는 실시간으로 수집되고 있는 수치 데이터의 그래프를 직접 눈으로 확인하면서 특정 패턴이 나타난 타이밍 또는 구간을 선택하고 해당 패턴에 대한 해석과 의견을 직접 붙일 수 있다. 이렇게 붙인 내용들은 다른 사용자들과도 공유할 수 있으며, 같은 패턴에 대해 다른 사용자가 추가한 다른 관점의 해석과 의견도 수집할 수 있다. 이러한 과정을 거치게 되면 자신의 경험과 지식을 공유할 수 있을 뿐만 아니라, 이후의 분석과정에서 주목해야 할 패턴의 존재와 타이밍, 그리고 해당 패턴의 의미나 중요도를 수집할 수 있게 된다. 예를 들어, 1900년대 초반부터 현재까지의 인구변화 그래프에서 인구가 급격하게 늘어난 구간을 설정하고 인구가 늘어나게 된 원인이나 영향에 대해 적어넣을 수 있고, 다른 사용자가 그 내용을 확인할 수 있게 되는 것이다. 또는 유리 온실에 배치된 온도 센서 데이터의 그래프에서 갑자기 온도가 급격하게 하강한 구간이 난방 시스템의 고장에 의해 나타난 패턴임을 기록할 수 있다. 이렇게 기록된 결과는 해당 구간의 데이터 패턴을 “난방 시스템의 고장”이라는 그룹으로 분류하여 탐지하도록 하는 모델을 만드는 과정에서 활용될 수 있다. (뒤에서 설명할 Query Analysis 모드 또는 Machine Learning 모드에서 활용)
Query Analysis in CoDIP
VA 과정을 통해 찾아낸 데이터 패턴이 다른 구간에서도 나타나는지 탐색하고자 하거나, 존재할 것으로 생각되는 흥미로운 패턴이 데이터 내에 실제로 존재하는지, 존재한다면 어느 타이밍에 나타났으며 그 통계적인 특성은 어떠한지를 직접 분석하고자 할 때에는 Query Analysis (QA) 모드를 활용할 수 있다. 사용자는 자신이 찾고자 하는 패턴을 설정하고 입력한 뒤 탐색 기능을 동작시키게 되는데, 이를 위해 CoDIP은 다양한 패턴 설정 방법을 제공한다. 패턴 설정 과정은 자신이 찾고자 하는 패턴을 query 로 입력하는 과정이다.
그림 #2. 데이터의 y 값의 범위 지정
그림 #2는 특정 범위의 값을 나타내는 데이터의 위치를 query 로 입력하여 탐색하는 과정을 나타낸다. 사용자가 데이터 값을 지정하거나 데이터 값의 구간을 마우스로 드래그하여 설정하면 CoDIP은 해당 값을 만족시키는 구간들을 모두 탐색하여 결과를 보여준다. 더 나아가, 그러한 구간이 나타난 전체 회수와 주기성 등과 같은 부가정보를 제공하기도 한다. 사용자는 이렇게 출력된 결과에 해석과 의견을 붙여서 다른 사용자와 공유할 수 있다. 또한 이러한 결과를 실시간 query 로 등록하게 되면, CoDIP은 새롭게 입력되는 데이터에서 이와 동일한 패턴이 나타나는지 지속적으로 모니터링하게 되며, 해당 패턴이 탐지될 경우 패턴에 대한 정보와 해석을 출력한다. 패턴에 대한 정보와 해석은 사용자들이 입력한 해석과 의견을 바탕으로 만들어진다. 이렇게 출력된 결과들은 외부 서비스에 제공될 수 있다.
그림 #3. 패턴을 그려서 지정
그림 #3은 자신이 찾고자 하는 패턴을 직접 그려서 query 로 입력하여 탐색하는 과정을 나타낸다. 사용자는 상승 또는 하강하거나 특정 값이 유지되는 패턴 등을 직접 그려서 입력할 수 있는데, query 로 입력할 패턴의 길이, 각도, 높이 등을 자유자재로 설정하여 입력할 수 있다. CoDIP은 이렇게 입력된 패턴과 유사한 패턴이 나타나는 구간을 모두 찾아낸다. 패턴 탐색 결과에 해석과 의견을 붙여 공유하거나 실시간 query 로 등록하여 활용할 수 있는 것은 앞에서 설명한 y값의 범위를 지정하는 query 의 경우와 동일하다.
그림 #4. 실제로 나타났던 패턴의 구간을 선택해서 지정
데이터를 관찰하다 보면, 흥미로운 패턴이 나타난 구간을 확인하게 되는 경우가 있는데, 눈으로 확인하고 해석과 의견을 붙이는 VA 과정에서 더 나아가, 그 패턴을 query 로 설정하여 입력할 수도 있다. 그림 #4 에서 나타낸 바와 같이, 사용자가 특정 구간을 마우스로 드래그하여 실제로 나타났던 데이터 패턴의 구간을 query 로 지정하면 전체 데이터 내에서 그와 비슷한 패턴이 나타난 구간을 모두 찾을 수 있다. 해석을 붙이고 공유하거나, 실시간 query 로 등록하여 활용하는 과정은 다른 query들과 모두 동일하다.
그림 #5. 복합 query 지정
CoDIP은 여러 개의 패턴을 동시에 query로 입력하여 탐색할 수 있게 하는 기능을 제공한다. (복합 query) 이러한 복합 query 의 개념을 활용하면, 그림 #5 에서 볼 수 있는 바와 같이, 사용자는 하나의 데이터에 여러 개의 패턴을 입력하여 패턴들의 특징을 모두 만족시키는 구간을 탐색하거나, 서로 다른 데이터에 각각 개별 패턴을 query 로 입력하여 query 들이 동시에 만족하는 구간을 탐색할 수 있다. 복합 query 역시 탐색 결과에 해석을 붙이고 공유하거나, 실시간 query 로 등록하여 활용할 수 있다.
그림 #6. 패턴 간 관련성 분석
여러 개의 패턴을 query 로 입력하는 경우에는, 각 패턴이 나타나는 타이밍 사이에 규칙적인 관련성이 존재하는 지의 여부를 확인할 필요가 있다. 예를 들자면, 데이터 A에서 급격한 상승 패턴이 나타난 후 1일 이내에 데이터 B에서 하강 패턴이 나타나는 경우가 규칙적으로 반복해서 나타날 수 있는 것이다. (이런 경우, 데이터 A와 데이터 B의 사이에는 특별한 관계가 있을 가능성이 높다.) 이러한 패턴을 찾아내는 것은 어쩌면 개별 패턴을 탐색하는 것보다 더 중요한 의미를 지닐 수도 있으므로, CoDIP 에서는 각 개별 패턴의 탐지 결과들 사이의 관련성을 찾는 기능을 제공한다. 사용자가 각 개별 패턴의 탐색 결과를 생성한 뒤, 패턴 간 관련성을 찾는 기능을 실행하면 두 패턴 간의 관련성을 찾을 수 있게 된다.
Machine Learning in CoDIP
그림 #7. Machine Learning 의 적용과 활용
지금까지 모두 읽어온 독자라면, VA와 QA 과정은 눈으로 확인하고 구분할 수 있는 패턴들을 대상으로 한다는 점을 파악했을 것이다. 그러나, 초당 샘플링 수가 매우 높거나, 고차원의 데이터이거나, 변화의 패턴을 눈으로 확인하기 어려운 데이터를 대상으로 할 경우에는 VA나 QA만으로는 충분하지 않을 수 있다. 이러한 데이터를 다루는 작업은 상당한 수준의 기술적인 역량을 필요로 하는데, 그림 #7에서 확인할 수 있는 것과 같이, CoDIP에서는 특정 데이터 구간들을 모아서 특성을 추출하여 Machine Learning 모델을 학습시키고 활용할 수 있는 인터페이스를 제공한다. (Hidden Markov Model 및 Recurrent Neural Network 계열의 모델을 활용) CoDIP의 Machine Learning 모드와 관련된 자세한 내용은 추후에 이어질 포스팅에서 계속 소개할 예정이다.
VA-QA-ML
그림 #8. VA-QA-ML 사이의 관계
그림 #8은 CoDIP 의 다양한 활용 모드 사이의 관계 및 각 모드를 활용할 사용자 그룹을 나타낸다. CoDIP 은 경험적이고 주관적인 데이터 활용에서부터 기술적이고 전문적인 데이터 핸들링까지 모두 지원하며, 다양한 기술수준과 배경지식을 가진 사람들 사이에서 협업을 할 수 있도록 한다. 또한 모든 작업의 결과가 축적되어 적절히 활용될 수 있도록 한다. 다음에 소개할 CoDIP 의 특성들은 (1)편에서 언급했던 내용인데, 본 포스팅을 여기까지 읽은 후에 다시 접하게 되면 각 의미가 새롭게 다가올 것이다.
- 일부 전문가에 의해서만 수행되어 온 데이터 마이닝 작업을 일반 사용자들도 일정 수준까지 직접 수행할 수 있도록 하여 자신들의 데이터에 어떠한 패턴이 포함되어 있을지 미리 스스로 탐색해볼 수 있게 한다.
- 전문적인 데이터 마이닝 알고리즘 뿐만 아니라 사용자가 자신의 데이터에 대해 알고 있는 경험적 지식을 분석 과정에 반영할 수 있게 한다.
- 경험적 지식의 예
- 주변 온도가 28도 이상이고, 소음이 레벨 4 이상인 상태가 30분 이상 지속되면 기계의 동작을 멈추고 상태를 점검해야 한다.
- 환율이 상승하고, 재고가 40% 이상이고, 지난 한 달간 비용이 30% 상승하면 관심 상태로 상황을 주시해야 한다.
- 가속도 센서의 변동 값이 없는 상태에서 심장 박동이 30% 이상 급상승하는 경우가 1주일에 3번 이상 발견될 경우 의사의 진찰을 받아야 한다.
- 경험적 지식의 예
- 데이터 분석 인프라나 서비스를 본격적으로 도입하기 전에 데이터에 대한 초기 단계의 분석을 사전에 수행하여 데이터 분석의 효과 및 데이터 분석에 필요한 예산 규모나 투자 규모를 미리 평가해볼 수 있다.
- 자신의 개인 데이터 분석을 직접 수행해 보고 그 결과를 활용할 수 있으며, 이 과정에서 데이터 분석에 대한 지식과 경험을 쌓을 수 있다.
- 정적인 데이터 분석 뿐만 아니라 시계열과 같은 동적 데이터 패턴에 대한 분석이 가능하다.
- 동일한 데이터에 대해 여러 사용자가 함께 분석 및 해석 과정에 참여할 수 있으므로, 협업을 통해 객관적이고 신뢰성 있는 결과를 도출할 수 있다.
- 데이터 분석 기술을 보유한 Mining expert 들과, 분석 기술은 보유하고 있지 않으나 데이터에 대한 경험적 지식을 가진 Domain expert 들의 효율적인 협업이 필요한 데이터 마이닝 과정에서, CoDIP 은 Mining expert 의 역할을 수행한다. 이를 통해, Mining expert 들이 없는 상황에서도 Domain expert 들이 최대한으로 자신만의 분석 및 해석 결과를 얻을 수 있도록 한다.
Applying CoDIP
그림 #9. 데이터에서 추출되는 지식들
그림 #9는 완성된 CoDIP이 동작하는 모습을 개념적으로 표현한 것인데, 다양한 수치 시계열 데이터가 지속적으로 입력되는 가운데, 기술적인 요소 뿐만 아니라 경험적이고 직관적인 배경지식들이 한데 어우러져서 데이터로부터 유용한 지식들이 출력되는 과정이 CoDIP 에 의해 실현될 수 있는 것이다.
CoDIP is still developing
CoDIP은 다양한 방향으로 여전히 진화하고 있다.
- 첫째, 데이터의 특정 구간에 해석을 입력하거나 query 를 입력하는 과정을 좀 더 쉽고 효율적으로 수행할 수 있게 하기 위하여 사용자 인터페이스를 계속 발전시키고 있다.
- 둘째, CoDIP 개발팀은 다양한 데이터 및 활용 케이스를 획득하고 전체적인 성능을 높이기 위한 노력을 기울이고 있다.
- 셋째, 탐지와 해석 뿐만 아니라 적절한 수준의 예측 기능을 탑재하기 위한 연구를 진행하고 있다.
- 마지막으로, 사용자의 개입이 없어도 중요한 패턴을 스스로 탐지하는 모델을 개발하기 위한 노력을 기울이고 있다. 각 방향으로의 진화의 과정과 결과는 추후의 포스팅에서 계속 소개할 예정이다.
다음의 그림들은 CoDIP 이 개발하고 있는 자동패턴 탐지 기능들의 개념을 나타낸 것인데, 사용자의 개입이 없어도 흥미로운 패턴을 스스로 찾아주는 기능이다.
그림 #10. 특이한 패턴 탐지
그림 #11. 특정 패턴의 발생 회수 및 주기성 탐지
그림 #12. 패턴의 시간적 배열 특성 탐지
그림 #13. 패턴 간 상관관계 및 인과관계 탐지 (예: 패턴 1이 발생한 후 1시간 이내에 패턴 2가 발생할 확률이 85%)
그림 #14. 데이터 간 관련성 변화 탐지 (앞에서는 두 데이터가 서로 음의 상관관계를 나타냈었는데 갑자기 바뀌는…?)