세계 보안 엑스포  전자정부 솔루션 페어  개인정보보호 페어  국제 사이버 시큐리티 컨퍼런스  세계 태양에너지 엑스포  스마트팩토리  세계 다이어트 엑스포  INFO-CON
Home > 전체기사
[주말판] 몸값 높여주는 데이터 과학? 기본기 갖추기
  |  입력 : 2017-10-14 13:40
페이스북 보내기 트위터 보내기 네이버 밴드 보내기 카카오 스토리 보내기
데이터 과학의 가장 어려운 점은 기계에게 맡긴 자동화 처리
데이터 구조 정립과 올바른 알고리즘 선택으로 분석 효율 높일 수 있어


[보안뉴스 문가용 기자] 통상 분석에 동원되는 데이터가 많으면 많을수록 결과가 정확해진다고 한다. 아이 한 명 키우면서 ‘모든 아이들은 울기부터 한다’라고 결론을 내릴 수 없고, 보안 관련 행사에서 문가용 기자를 보고 ‘보안뉴스는 기자를 외모로 뽑는구나’라고 생각하면 혹여 본사 방문할 일이 생겼을 때 다른 기자들을 보고 충격을 받을 수도 있다. 결론을 조심히 내린다는 건 더 많은 샘플을 들여다본다는 뜻과도 어느 정도 일치한다.

그래서 기업들은 저마다 더 많은 데이터를 확보하려고 애쓰고, 마침 기술의 발전은 데이터 생성(과 은밀한 수집)에 알맞게 변해가고 있어, 이제는 그 많은 데이터를 어떻게 처리하느냐가 모두의 고민인 시대가 되었다. 수년 전부터 빅 데이터라는 모호하고 비과학적인 말이 최첨단 기술인 것처럼 유행하고, 요즘 데이터 과학 분야가 떠오르는 게 돌발적인 현상은 아니다. 데이터 과학자의 몸값이 치솟는 것도 이런 연유다. 그래서 데이터 과학을 탐구해보고 싶은 이들이 반드시 알아두면 좋을 기본적인 내용들을 정리해보았다.

[이미지 = iclickart]


데이터의 종류 7가지
빅 데이터나 데이터 과학이 범접하기 어려운 분야인 것처럼 보이는 가장 큰 이유는 데이터의 양이 워낙 방대해 자동화 기술을 동원하는 게 필수가 되었기 때문이고, 대량의 데이터를 결함 없이 처리할 자동화 기술을 구현해내는 것이 어려운 기술이기 때문이다. 그래서 한 땀 한 땀 손으로 하지 않는 이상, 분석해야 할 데이터의 종류를 나누는 건 데이터 과학에서 가장 중요한 일 중 하나다.

현재까지 데이터 과학에서 말하는 데이터의 종류는 크게 7가지로 1) 구조적 데이터(structured data), 2) 비정형 데이터(unstructured data), 3) 자연어, 4) 기계 생성 데이터(machine-generated), 5) 그래프 기반 데이터(graph-based), 6) 오디오, 비디오, 이미지, 7) 스트리밍 데이터다. 하나하나 간략히 살펴보자.

1) 구조적 데이터 : 간단히 말해 분석을 편하게 하기 위해 한 번 더 가공한 데이터를 말한다. 고정된 항목으로 구성된 양식에 따라 데이터의 내용이 분류 및 정리되어 있다. 엑셀 표로 정리한 각종 문서들을 떠올려보면 된다. 하지만 일반적으로 이런 데이터가 야생에서 돌아다니지는 않는다. 그랬다면 데이터 과학 분야가 한결 쉬워졌을 것이다.

2) 비정형 데이터 : 보통 제일 처음 추출한 데이터 샘플은 비정형 데이터다. 구조적 데이터로 변환시킬 수도 있지만, 매번 그게 가능한 건 아니다. 특별한 맥락에 따라 해석이 달리 될 수 있는 데이터나 내용 자체에 일관된 패턴이 없을 때는 구조화시키는 게 상당히 까다로워진다. 가장 좋은 예는 이메일이다. 물론 제목, 주소, 본문 등의 양식은 정해져 있지만, 이메일을 작성하는 사람마다 사용하는 표현이나 뉘앙스가 달라 이메일 내용을 정확하게 ‘엑셀표’로 정리한다는 건 불가능에 가까운 일이 된다.

3) 자연어 : 자연어 역시 비정형 데이터에 속한다고 볼 수 있는데, 비정형 데이터 중에서도 특수한 예다. 자연어를 분석하려면 데이터 과학에 대한 전문적인 지식도 필요하지만 무엇보다 언어에 대한 지식도 풍부히 갖추고 있어야 하기 때문이다. 한 언어를 가지고 데이터 과학적인 성과를 이뤄냈다고 하더라도, 다른 언어에 그대로 적용될 수 없다는 것도 자연어 처리 분야의 커다란 장애물이다. 사실 인간인 우리도 외국어 공부하는 게 얼마나 어려운지를 떠올려보면, 이걸 자동화 기술로 분석해낸다는 것의 난이도를 가늠해볼 수 있다.

4) 기계가 생성한 데이터 : 컴퓨터, 기기 프로세스, 애플리케이션 등이 자동으로 생성한 데이터를 말한다. 서버 로그, 통화 목록, 이벤트 로그 등이 좋은 예다. 인간의 개입이 일절 없이 만들어진다는 것이 주요한 특징이다. 현재 점점 더 중요도와 비중이 높아지고 있고, 이러한 현상은 당분간 지속될 전망이다. 기계가 생성한 데이터는 데이터 과학을 어떻게 어렵게 만들까? 생성되는 속도와 양이 도저히 감당 안 되는 수준이기 때문이다.

5) 그래프 기반 데이터 : 그래프 기반 데이터는 네트워크 데이터라고도 불리는데, 쉽게 말해 객체들 간의 관계성과 근접성에 대한 데이터다. 소셜 미디어와 같은 서비스에서 많이 볼 수 있다. 페이스북이나 트위터의 친구 및 팔로워 목록을 통해 우린 특정 인물과 인물 사이의 거리와 친밀도를 가늠해볼 수 있고, 비슷하게는 기업과 소비자 간의 거리도 확인해볼 수 있다. 이런 수많은 네트워크가 서로 서로 겹치고 중복될 때, 흥미로운 통찰과 보지 못했던 사안을 파악할 수 있게 된다. 이런 통찰은 컴퓨터가 아직 쉽게 찾아낼 수 없다.

6) 오디오, 비디오, 이미지 : 이런 유형의 데이터를 다루고 분석하는 게 인간에게는 큰 어려움이 아니다. 그런데 컴퓨터에겐 절대로 쉬운 일이 아니라는 결론이 내려졌다. 간단하고 유명한 예가 개와 고양이 사진을 컴퓨터에게 구분시키는 것이다. 인간은 아이들도 금방 해낼 수 있는 것이지만, 컴퓨터에게는 최첨단 알고리즘까지 동원되어야 한다. 게다가 이런 포맷의 데이터는 용량도 커서 스토리지와 전송 문제까지도 부수적으로 발생시킨다.

7) 스트리밍 데이터 : 위의 여섯 가지 형태 모두 스트리밍 될 수 있다. 따라서 ‘스트리밍 데이터’는 데이터의 한 종류라기보다 데이터 처리 방식에 가깝다. 데이터 스트리밍의 가장 큰 특징은 데이터가 배치 형태로 데이터 저장소로 로딩되는 것이 아니라, 이벤트가 발생할 때 시스템으로 흘러들어간다는 것이다. 이는 데이터 분석 프로세스 자체를 바꿔놓는 특징이다.

말 나온 김에, 데이터 분석 프로세스
데이터 과학에서 말하는 ‘데이터 분석’에는 크게 여섯 가지 절차가 존재하며, 이는 1) 목표 정하기, 2) 데이터 검색(data retrieval), 3) 데이터 준비(data preparation), 4) 데이터 탐색(data exploration), 5) 데이터 모델링(data modeling), 6) 발표, 제시 및 자동화다. 역시 하나 하나 살펴보자.

1) 목표 정하기 : 데이터 과학은 그 자체로 독립된 분야라기보다 기관이나 기업에 종속돼 커다란 목표와 흐름 아래 기능을 발휘하는 것이 보통이다. 즉 ‘데이터 과학 기술을 발휘해 연구 조사를 실시하라’는 임무가 주어지면 어떤 연구를 진행할 것인지, 그 연구를 통해 기업/기관은 어떤 도움을 받을 수 있는지, 어떤 자원/투자를 필요로 하는지, 마감일은 무엇인지를 먼저 생각해야 한다. 특수한 경우를 제외하고는, 순수 ‘연구를 위한 연구’는 데이터 과학이 지향해야 할 바가 아직 아니다. 매우 상업적인 분야라는 걸 잊지 말아야 한다.

2) 데이터 검색 : 두 번째로는 데이터를 찾아서 모아야 한다. 위 1)번 단계에서 ‘필요한 자원이 무엇인지’ 파악하고 정해야 한다고 했는데, 이 범위 내에서 충분한 자료를 구하면 된다. 물론 구하는 과정 중에 데이터의 양이 충분치 못하거나 질이 현저히 떨어져 의미 있는 분석이 어렵겠다고 판단된다면 다시 1)번으로 돌아가 데이터를 구할 수 있는 다른 곳을 논의하고 결정해야 한다.

3) 데이터 준비 : 어쩌면 데이터 분석 과정에 있어서 가장 어려운 부분이기도 하다. 왜냐하면 데이터 준비 과정에 오류가 일어날 가능성이 다분하기 때문이다. 마치 살얼음 위를 지나듯 이 과정을 통과해야 한다. ‘데이터 준비’는 크게 세 가지 단계로 구성되어 있는데, a) 오류나 잘못된 값들을 삭제해내는 데이터 정화(data cleansing), b) 관계성 높은 정보들을 합치고 짜깁기해 더 풍부한 내용을 이끌어내는 데이터 통합(data integration), c) 데이터 모델링에 적합한 포맷으로 변환시키는 데이터 변환(data transformation)이다.

4) 데이터 탐색 : 준비된 데이터를 한 층 더 깊게 살피고 분석하는 걸 말한다. 가지고 있는 데이터에 또 다른 변수를 대입해보고 어떤 결과가 나오는지 관찰한다든가, 데이터의 배열과 분포 패턴을 변형시키는 등의 기법들이 활용된다. 탐구적 자료분석(Exploratory Data Analysis)이라고도 불린다. 줄여서 EDA.

5) 데이터 모델링 : 위 네 가지 과정을 거치면서 알아낸 것들과 쌓인 지식을 활용해 제일 처음 데이터 분석을 시작하게 한 조직의 필요 사항 및 질문들에 답을 내놓는 과정이다. 다시 1)번으로 돌아가 처음 연구 목적에 맞게 결과를 정돈하는 과정이라고도 볼 수 있다. 답을 조작하는 게 아니라, 통계학, 머신러닝, 오퍼레이션 리서치(operations research) 등의 기법을 활용해, 연구를 의뢰한 자가 납득할만한 결론을 내는 것이다.

6) 발표, 제시 및 자동화 : 답을 내렸으면 그걸 이제 조직 전체에 알려줘야 할 차례다. 사안에 따라 전 임원을 소집해 발표해야 할 수도 있지만, 앞으로 데이터 분석 사례가 빈번해지면서 이런 결과들이 좀 더 빠르고 가볍고 편리하게 공유되는 방향으로 갈 것으로 보인다. 5)번 과정에서 모델링한 결과를 전 직원 혹은 특정인 누군가가 볼 수 있도록 변환시켜 배포하는 과정을 자동화하는 것이 최근의 트렌드다.

데이터는 큰데 컴퓨터는 딱 한 대일 때
데이터 과학에 제대로 된 투자를 하는 곳이 아니라면 컴퓨터 용량보다 더 많은 데이터를 처리해야 하는 난관에 부딪힐 때가 있을지도 모른다. 컴퓨터는 RAM의 한계, 하드드라이브의 한계가 명확한 기계다. 여기에 데이터를 부으면 부을수록 OS가 메모리 블록을 디스크 공간으로 대체하는데, 이는 매우 비효율적인 방식이다.

게다가 대용량 데이터를 다룰 수 있는 알고리즘은 얼마 되지 않고, 이들 대부분은 데이터셋 전체를 메모리에 한 번에 로딩시킨다. 심지어 데이터셋을 여러 번 복제해 전부 보관하는 알고리즘도 있다. 컴퓨터에서 증기가 나도 이상하지 않은 일이 내부에서 벌어지고 있는 것이다. 이런 자원적인 한계 역시 데이터 과학의 난이도를 올려놓는 부분이다. 컴퓨터가 충분치 않을 때 대용량 데이터를 분석하는 일반적인 방법론에 대해 알아보자.

1) 올바른 알고리즘 선택하기 : 데이터는 많으면 많을수록 좋지만 알고리즘은 그렇지 않다. 알고리즘을 제대로 고르면, 하드웨어를 추가하는 것보다 효율성을 높이는 것보다 효율이 높아질 수도 있다. 자원 효율을 높여주는 알고리즘에는 크게 세 가지가 있는데, 온라인 알고리즘(online algorithm), 블록 알고리즘(block algorithm), 맵리듀스 알고리즘(MapReduce algorithm)이 바로 그것이다.

온라인 알고리즘은 뭔가가 입력이 될 때마다 수행되고, 수행이 끝난 후에는 입력된 값이 휘발되는 형태의 알고리즘이다. 즉 그때그때의 일을 처리해주는, 뒤끝이 없어도 너무 없는 알고리즘으로 메모리 리소스가 적은 상황에 알맞다. 블록 알고리즘은 엄청난 길이의 수식을 블록 단위로 잘게 쪼개서 개별적으로 수행하는 알고리즘이다.

맵리듀스 알고리즘은 블록 알고리즘과 비슷한데, 전문가들은 이해를 돕기 위해 대통령 선거 개표 상황에 비유하기도 한다. 선거 후 개표할 때 한 사람이 모든 표를 전국에서부터 수거해 하나하나 밤을 세워가며 집계하는 것이 아니라 각 투표소나 지정된 장소에서 사람들이 맡은 분량만 빠르게 처리해서 그 결과를 중앙에 통보하면, 중앙에서는 보고된 숫자만 합치는 것과 비슷하다고 한다.

2) 올바른 데이터 구조 선택하기 : 알고리즘만큼 중요한 게 데이터 저장 방식, 즉 데이터 구조다. 파일 저장 구조에 따라 CRUD(create, read, update, delete)의 기능성이 결정되기도 한다. 알고리즘만큼 데이터 구조에도 여러 가지 종류가 있어, 가장 적합한 것을 선택하는 것이 자원 사용의 효율을 높여준다. 몇 가지 대표적인 것을 살펴보면 다음과 같다.

먼저 스파스 데이터(sparse data)라는 게 있다. 소량의 데이터를 뜻한다. 정보가 거의 들어있지 않은 데이터라고 하면, 물음표가 떠오르기 십상인데, 텍스트 데이터를 바이너리 데이터로 변환할 때 이러한 데이터가 자주 생성된다. 예를 들어 분석 목적과 크게 상관없는 트위터 텍스트 10만개를 상상해보자. 이 텍스트를 전부 저장하는 건 비효율적이다. 상관성이 높은 단어가 있으면 1, 없으면 0으로 변환시켜 저장하면 용량을 크게 줄일 수 있다.

트리 구조(tree structure)도 흔히 사용된다. 이는 데이터들 간의 관계까지도 한 번에 나타낼 수 있다는 점에서 효율적인 구조로 평가된다. 또한 데이터베이스를 구축할 때도 트리 구조가 애용된다. 해시 테이블(hash table)은 데이터 내의 모든 값에 대한 키(key)를 계산하고, 그 키를 버킷(bucket) 안에 넣어두는 방식의 데이터 구조다. 원하는 정보를 빠르게 검색할 수 있다는 장점이 있다.

3) 올바른 툴 선택하기 : 알고리즘과 데이터 구조를 결정했다면 ‘진짜 일’을 시작할 채비가 되었다는 뜻이다. 이 ‘진짜 일’을 하려면 도구가 필요한데, 컴퓨터라는 자원에 한계가 있는 상황이므로 도구도 함부로 정할 수 없다. 데이터 분석과 과학에 사용되는 도구가 한두 가지는 아니지만 현 시점에서 가장 널리 사용되는 건 파이선이다. 파이선에는 대용량 데이터를 처리하도록 도와주는 다양한 라이브러리들이 존재한다.

컴퓨터에게 있어 1+1과 1.0+1.0은 전혀 다른 계산이다. 하나는 integer라는 데이터 유형의 계산이고 다른 하나는 float라는 유형의 계산식이기 때문이다. integer와 float 계산은 CPU 내 다른 부분에서 처리된다. 그래서 프로그래머들은 데이터 종류를 미리 규정해둔다. 그러나 파이선은 데이터 종류 규정을 필요로 하지 않아 편리성은 높여주지만, 속도나 효율성은 떨어진다. 이 문제를 해결해주는 게 a) 카이선(Cython)이다.

그밖에 NumPy의 수식 평가자인 b) Numexpr도 NumPy보다 훨씬 빠르다고 알려져 있고, NumPy를 사용하다가 out of memory 오류가 발생하면 c) Bcolz를 사용하면 해결이 가능하다. d) Numba는 실행 직전에 컴파일을 함으로써 역시 처리 속도를 대폭 높인다. 파이선 코드를 SQL로 변환시키는 d) Blaze는 관계형 데이터베이스보다 데이터 처리 범위가 넓다고 알려져 있으나 아직 개발 중에 있다. e) Theano는 GPU로 직접 접근할 수 있도록 해주며, f) Dask는 계산과 실행으로의 절차를 효율 높게 만들어준다.

이 파이선 라이브러리에 대한 보다 자세한 설명과 소식은 여러 웹사이트를 통해 계속해서 접할 수 있다.
- 카이선 : http://cython.org/
- Numexpr : https://github.com/pydata/numexpr
- Bcolz : http://bcolz.blosc.org
- Numba : http://numba.pydata.org
- Blaze : http://blaze.readthedocs.org/en/lastest/index.html(아직 준비중)
- Theano : http://deeplearning.net/software/theano
- Dask : http://dask.pydata.org/en/latest
[국제부 문가용 기자(globoan@boannews.com)]

<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>

  •  
  • 9
  • 페이스북 보내기 트위터 보내기 네이버 밴드 보내기 카카오 스토리 보내기


  •  SNS에서도 보안뉴스를 받아보세요!! 
모니터랩 파워비즈 배너 시작 18년9월12일위즈디엔에스 2018WD 파워비즈 2017-0305 시작
설문조사
국내 정보보호 분야 주요 사건·이슈 가운데 정보보호산업에 가장 큰 영향을 미친 것은 무엇이라고 생각하시나요?
2001년 정보보호 규정 포함된 정보통신망법 개정
2003년 1.25 인터넷 대란
2009년 7.7 디도스 대란
2011년 개인정보보호법 제정
2013년 3.20 및 6.25 사이버테러
2014년 카드3사 개인정보 유출사고
2014년 한수원 해킹 사건
2017년 블록체인/암호화폐의 등장
기타(댓글로)