2016. 1. 13. 12:56

[기계학습, 머신러닝, 데이터마이닝] 인공지능, 그 허상을 깨자. (06)

이제 6번째 글이다. 앞선 글들은, 모두, 머신러닝의 한계를 설명하고자 하였다. 음/양이라는 세상의 이치처럼, 한계가 있다면, 그래도, 그것을 극복할 수 있는, 보다 긍정적인 내용도 있을 것이다. 최근의 언론등에서 크게 부풀러져있는 거품을 걷어내고, 한계 상황을 냉정하게 미리 습득한 다음, 그제서야 긍정적인 방향을 찾는것이 바람직할 것이다. 이제부터는, 물론 - 중간중간 한계를 설명할 수 있겠으나 - 활용할 수 있는 방안, 보다 긍정적인 내용으로 정리하고자 한다.

- 명확한 목적이 필요하다.
- 절대적인 Domain Knowledge가 필요하다.

어느 쇼핑몰 사업을 하는 업체 A가 있다고 하자. 고객/거래 DB가 이제, TB급으로 올라갈 정도로, 현업에서는 이제 중견 업체가 되었는데, 그때, CEO는 고민에 빠져 버렸는고, 다음과 같이 중얼거렸다.

요즘 뉴스를 보면, 머신러닝, 머신러닝하는데, 미래 먹거리를 위해서라도, 우리 A사는 필히 머신러닝을 이용한 '뭔가'를 터트려, 시대에 뒤쳐지지 않도록 해야 겠어.

물론 맞는 말이긴 하다. 회사 입장에서는, 지금은 성장하고 있지만, 미래에 대한 걱정을 해야 하는건 당연한 일이다. 그렇지만, "뭔가"에 대한 제대로된 접근이 없긴 하다. 그래서, CEO는 고민끝에, 사내에 전문 Data Scientist를 찾았으나, - 당연히 - 없었고, 그래서, 비용을 들여 외주 컨설팅을 받기로 했다.


이제, 다시 돌아와서, 이것이 바른 선택일지는 알수는 없다. 다만, 중요한건, 해당 CEO는 명확한 목적이 없었다는 것이고, 그리고, 외주 업체는 회사 DB에 대한, Domain 전문 지식이 없다는 점이다.


머신러닝은 앞선 글들에서도 누차 얘기했지만, 절대로 無->有를 만들어내지 못한다. 즉, 머신은 단지 Data를 처리해줄 뿐이지, 그것을 어떻게 활용하고, 어떻게 분석하는지는 철저히 사람에게 달려있다는 것이다(단순히, DB의 Attribute 추가하는것도 사람의 의지에 의해서 이다).


DB에 대한 전문 지식도 마찮가지이다. 머신러닝을 하기 위해서는, Data의 선택도 중요한데, 외주 컨설팅 업체는 물론, 자체 경험에 의해 유사한 Knowledge가 있을지 모르지만, 회사의 DB는 전적으로 회사만의 자산이며, 외주 업체에게 공유는 쉽지 않다(더군다나, 팀간 공유도 쉽지 않다). 그러한 자산을 외주 업체에 공유하고, 분석을 의뢰하는것은, 생각보단 쉽지 않을 것이다. 그래서, 외주 업체는 당연히, "매우 제한된 소수의 Data"만 접근할 것이며, 그에 따른 결과는 낮게 측정될 것 뿐만 아니라, 실 Real Data 적용시 오차율도 생각보단 높게 나타날 수 있다. 그래서, 업체 A는 괜히, 외주 업체만 비난할 수 있게 될지 모른다.


그럼, 어떻게 해야 할까?


우선 처음부터, 명확한 목적이 필요하다.
그러기 위해서는, 아래 Step을 밟아 보는것도 좋을 것이다. 이러한 Step은, 각 상황마다 바뀔수 있으니, 참고만 하시기 바란다.


- DB는 무었이 있는가? - 고객 DB, 협력 업체 DB, 상품 DB, 인사 DB, 그리고 SNS DB.


- 현재 우리가 직면해 있는 문제는 무었인가?
  ; 이익 감소
  ; IT 인프라 성능 이슈
  ; 고객 Relation 부족
  ; 명확한 마케팅 Target 설정 부족
  ; ...


- 그렇다면, 위의 문제를 해결하기 위해, DB는 무었을 제공할 수 있는가?
  ; 이익 감소 ==> DB를 통해 어떻게 하면, 비용을 줄이거나 매출을 올릴수 있을까?
  ; IT 인프라 성능 이슈 ==> DB를 통해 어떻게 하면, Query Response를 늘릴수 있을까?
  ; 고객 Relation 부족 ==> DB를 통해 어떻게 하면, 고객 Relation을 좋게할 수 있을까?
  ; 명확한 마케팅 Target 설정 부족 ==> DB를 통해 어떻게 하면, Target을 설정할 수 있을까?


- 해당 문제의 답을 찾기 위해, "외주" 보다는 "내부"의 DB 전문가와 Domain 전문가 집단과 토의를 한다.


- 회사내, TF를 만들어, 해당 TF는 DB의 접근 권한을 부여하고, 단기간으로 머신러닝에 대한 기초 지식을 습득한다.


- 습득된 내용을 기반으로, 연구하여, 새로운 Knowledge를 생산하도록 한다.


- 만일, 새로운 Knowledge 생산에 어려움이 발생하였다면, 문제를 재정의하고, DB관련자들 혹은 해당 Domain 전문가의 도움을 받아, 튜닝된 DB를 사용하여 다시 연구한다.


- 새로운 Knowledge가 생산되었다면, TF를 연구팀으로 승격하여, 지속적으로 연구할 수 있도록 지원한다.

대략 이런 시나리오가 가능한데, 이는 매우 추상적이라 실제로 와닫지는 않을 수 있다.


그럼 예를 들어 본다면,... 아래와 같을 것이다.


- 문제 : 이익 감소


이 문제를 풀기 위해, "비용" 감소 혹은 "매출" 증대를 고려해야 하는데, 일단 "비용" 감소로 생각해보자.
만일, A사는 쇼핑몰 유지를 위해, 사내 인력이 2일 3교대라고 가정하자. 이런 경우, 업무 간트 차트 DB가 있을 수 있다.

즉, A가 끝나야 B가 시작되고, B가 끝나야 C가 시작되고,... 뭐 이런 것들이다. 문제는, 충분히 병렬, 즉, 동시에 처리해도 무방한 일인데도 불구하고, "끝나야 시작"과 같이 직렬로 되버리면, 한줄로 작업이 구성되고, 결국, 전체 처리 시간은 늘어가기 마련이다. 만일, 이러한 업무 의존성등이 복잡하다면, 이것을 통해, AI에서는 "최적화"를 통해 최소 시간의 업무 간트 차트를 산출한다. 같은 업무인데, 순서를 변경하였더니, 훨씬 일을 빨리 끝낼수 있다는 것이다. 이런 최적화 문제는, 비록, 머신러닝하고는 관련이 없는 내용이지만, 어떻게 보면, 기업에서 비용을 줄일수 있는 가장 쉬운 방법중 하나일 것이다.


- 문제 : 명확한 Target 설정 부족


머신 러닝에는 Classification과 Clustering이라는 큰 두개의 줄기가 있다. Classification은 주어진 데이터가 어떻게 분류될 수 있는가의 문제, 즉, "물건을 사겠느냐? 안사겠느냐?" 혹은 "회원 탈퇴할거냐? 안할거냐?"와 같은 예측까지 포함될 수 있는, 어떻게 보면, 매우 중요한 분야이다. 이에 반해, Clustering은 주어진 수만은 데이터를 집단으로 분류하여, 해당 집단이 어떤 특징이 있는지를 분석할 수 있도록 도와주는 일을 해준다. 위 문제를 풀기 위해서는, 일단, 고객 DB를 바탕으로 고객들을 n개의 group으로 clustering해 본다. 그러면, 고객들은, 몇몇의 group으로 나뉘게 되는데, 각 group별로, 매출의 평균을 내볼수 있을 것이다. 그리고, 각 group 별로 마케팅 비용을 계산할 수 있을 것이다(이는, group이 적당한 수준으로 뭉칠수 있다는 가정이다). 그럼, 매출과 마케팅 비용을 반영한 결과, 가장 작은 집단 G에 대해 마케팅을 동원하도록 의사 결정한다.

(과거에는, 가장 큰 Group이 큰 주목을 받았으나, 이제, Outstanding, 즉, 왕따 Data에 대한 마케팅이 훌륭할 수 있다)


이상으로 몇가지 예를 들어서 설명했는데, 유사한 방식으로 몇가지더 설명할 예정이다.