POSTECHIAN 기사 보기

[2020 여름호] 2 - 빅데이터 분석 알고리즘

  • 임창현
  • 2020-07-31 17:01:06

2020 SUMMER 기획특집 2
빅데이터 분석 알고리즘
Big Data Technology


앞서 빅데이터의 정의, 빅데이터를 구분하는 방법, 빅데이터의 생성과 수집에 대해 알아보았는데요. 지금부터는 다양한 형태의 빅데이터를 분석하고 이 안에서 의미를 추출하는 원리를 알아보겠습니다. 발전하는 정보화 기기로 빅데이터가 기하급수적으로 많아짐에 따라 이를 처리하는 방식은 훨씬 더 정교해 지고 정확해 졌다고 합니다. AI의 핵심기술로까지 자리매김한 빅데이터 처리 알고리즘, 지금부터 알아볼까요?


비정형 데이터 분석 알고리즘

빅데이터를 분석하기 위해선 기본적으로 빅데이터 분석 인프라 기술을 기반으로 그 위에 다양한 분석 방법 및 기계학습, 인공지능 기법을 적용해야 합니다. 이 중에서 먼저 비정형 데이터를 처리하기 위한 기술과 알고리즘을 알아봅시다. 비정형 데이터는 영상이나 그림, 음성, 문서처럼 구조화되지 않은 데이터로 일정한 규격과 형태를 지니지 않은 데이터를 말합니다. 이런 비정형 데이터를 처리하기 위한 대표적인 분석 기술에는 텍스트 마이닝 Text Mining이 있습니다. 텍스트 마이닝은 데이터 수집 및 저장, 자연어 처리 및 텍스트 마이닝, 결과를 통한 의미 추출의 순서로 진행됩니다. 데이터 수집 및 저장 단계에서는 앞서 설명한 웹 크롤러나 로그 수집기를 이용해 비정형 데이터를 HBase와 같은 데이터베이스에 저장합니다. 이렇게 수집된 데이터는 형태소 분석, 단어 청킹 Text Chunking의 자연어 처리 과정을 거치게 됩니다. 예를 들어,

'아버지가방에들어가신다.'

라는 데이터는 형태소 분리에 따라

'아버지가 방에 들어가신다.' 혹은 '아버지 가방에 들어가신다.'

로 의미가 달라집니다. 형태소 분석은 Hannanum, KKma, Komora, Mecab 등의 형태소 분석기 함수를 통해 이루어지고 데이터의 빈도수를 기준으로 의미를 파악합니다. 빈도수는 “아버지” 같이 각 단어에 대해 계산하는 것이 아니라 “아버지”와 “가방”, “아버지”와 “방” 같은 핵심 단어를 묶어 빈도수를 알아냅니다.


이 과정은 단어 청킹 단계로 단어 중요도 알고리즘인 Word2Vec를 통해 이루어집니다.

Word2Vec 알아보기 (GOOGLE)


Word2Vec에는 주변 단어들을 기준으로 중심 단어를 찾는 CBOW Continuous Bag of Words와 중심에 있는 단어로 주변 단어를 찾는 SkipGram 방식이 있습니다. 이때 Word2Vec는 다음 식의 값을 최대화하는 알고리즘입니다.

$$p(0|c) = {\exp(u_0^Tv_c) \over \sum_{w=1}^{W} \exp(u_w^Tv_c)}$$
$p(0|c)$ : 중심단어($c$)가 주어졌을 때 주변단어($0$)가 등장할 조건부 확률
$u$, $v$ : 단어 벡터
$\exp(u_0^Tv_c)$ : 중심단어벡터($v_c$)와 주변단어벡터($u_0$) 사이의 내적값을 $\exp$ 함수의 지수에 넣은 값

중심단어벡터($v_c$)와 주변단어벡터($u_0$) 사이의 내적값($u_0^Tv_c$)이 크다는 것은 중심단어와 주변단어 간의 유사도가 높다는 것입니다. 이를 ‘코사인 유사도’라고 합니다. 또 분모는 중심단어($c$)와 문장 내 모든 단어를 각각 내적한 것의 총합을 지수로 넣은 값입니다. 따라서 전체값을 크게 하기 위해 분모를 줄이려면 중심단어 근처에 없는 단어와 중심단어 사이의 연관성은 낮아야 하죠. 이런 원리로 자연어들을 추출한 뒤 키워드 데이터로 저장하고 상관관계 알고리즘을 통해 키워드 간의 의미를 추출합니다. 또 감정 분석을 이용해 텍스트 작성자의 감탄사나 감정을 나타내는 단어를 기반으로 작성자의 선호도를 분석하여 상품의 마케팅이나 여론 분석에 이용하기도 한답니다.

데이터마이닝/머신러닝/딥러닝이란?

지금부터는 빅데이터를 처리하는 기계학습과 인공지능 기법에 대해 알아보겠습니다. 먼저 데이터 마이닝 Data Mining은 대규모의 데이터 안에서 체계적으로 통계적 규칙이나 패턴 같은 의미 있는 정보를 캐내는 기술입니다. 머신러닝 Machine Learning은 훈련 데이터를 통해 학습된 속성을 기반으로 예측 및 분류하는 알고리즘 분야입니다. 마지막으로 딥러닝 Deep Learning은 빅데이터에 인공신경망인 ANN Artificial Neural Network을 결합하여 머신러닝보다 더 깊은 학습을 할 수 있도록 만든 기술입니다.

데이터마이닝, 머신러닝, 딥러닝의 개념 구조도

이 3개의 개념은 그림처럼 서로 교집합의 영역이 많듯 본질적인 것은 비슷하지만 강조하고 싶은 특징에 따라 용어가 나뉜 것입니다. 데이터 마이닝현재 데이터의 특징을 알아내는 데 중점을 두는 반면 머신 러닝은 현재 데이터를 가지고 학습한 뒤 미래에 예측하는 데 중점을 두고 있습니다. 또한, 머신러닝에 속하는 딥러닝은 인간이 가르치지 않아도 ‘스스로’ 학습한 뒤 예측한다는 데 중점을 두고 있습니다. 지금부터는 앞의 3개 개념 중 딥러닝에 대해 더 자세히 다뤄보겠습니다. 딥러닝은 신경망 알고리즘 Neural Network Algorithm이 기반이 됩니다. 인공신경망은 두뇌의 뉴런이 전기신호를 전달하는 모습에서 착안한 것으로 입력값이 들어가는 입력층, 입력값을 변환하는 중간층(은닉층), 출력값이 나오는 출력층으로 나뉩니다. 또 층과 층 사이에는 가중치가 부여됩니다.

신경망 알고리즘

그림에서 주황색 원은 노드 Node 혹은 변환 함수로 신경망의 중간층에는 노드가 2개 이상이라는 점이 특징적입니다. 딥러닝의 경우 이런 중간층(은닉층) 자체를 여러 단계로 만들어 학습 수준과 정확도를 높였습니다. 이를 응용한 알고리즘에는 합성곱 신경망 CNN Convolutional Neural Network이 있는데요, 합성곱 신경망은 이미지 데이터를 인식하는 데 특화된 알고리즘입니다. 이미지의 각 픽셀에는 색의 정보가 숫자로 기록되어 있는데 이것을 그대로 신경망에 입력하기에는 픽셀의 양이 너무 많아 데이터의 크기를 줄여야 합니다. 이에 커널 Kernel이라는 필터를 이용해 일정 구역을 대표하는 하나의 값으로 치환하는 과정을 거치게 됩니다. 이를 합성곱 Convolution 연산이라고 합니다.

합성곱 연산 예시

간단한 예로 입력의 첫 3 x 3 행렬은,

$(1×1)+(2×0)+(3×1)$ (첫번째 줄)

$+(2×1)+(1×0)+(0×1)$ (두번째 줄)

$+(3×0)+(0×1)+(1×0)$ (세번째 줄)

$= 6$


이라는 계산을 통해 6으로 치환됩니다. 입력 정보와 커널을 겹쳤을 때 겹쳐진 두 수를 곱한뒤 만들어지는 9개의 수를 모두 더하면 출력값이 나옴을 알 수 있습니다. 이런 방식으로 합성곱 신경망을 통해 데이터의 크기도 줄이면서 이미지의 특징도 추출할 수 있습니다.

머신러닝의 학습법 알고리즘

머신러닝의 학습은 크게 지도 학습 Supervised Learning비지도 학습 Unsupervised Learning으로 나눌 수 있습니다.
AI에게 강아지와 고양이 사진을 구분하도록 학습하는 경우를 생각해 봅시다. 지도 학습은 강아지와 고양이 사진을 넣어주되 어떤 것이 강아지이고 어떤 것이 고양이인지 답을 알려준 뒤, 이를 기반으로 학습하는 방식을 말합니다. 이렇게 훈련 데이터에 답을 다는 것을 '레이블링' Labeling이라고 합니다. 지도 학습의 결과 AI는 들어오는 사진을 개와 고양이로 구분할 수 있게 됩니다. 반면 비지도 학습은 강아지, 고양이 사진을 주되 어느 것이 강아지고 어느 사진이 고양이인지 알려주지 않고 AI 스스로 비슷한 특징을 찾아 2개의 그룹으로 분류하게 합니다. 분류가 끝난 2개의 그룹을 강아지와 고양이로 결정하는 것은 사람이 하게 됩니다.
지도 학습에서 레이블링 된 답이 어떤 형태인지에 따라 모델은 분류 Classification회귀 Regression의 방법으로 답을 예측합니다. 개와 고양이같이 레이블링 된 값이 완전히 구분되면 분류를, 임의의 숫자와 같이 구분되지 않으면 회귀를 사용합니다. 이 분류와 회귀 분석을 위한 알고리즘에는 서포트 벡터 머신 Support Vector Machine, SVM이 있습니다. 이 알고리즘은 출력값들을 구분할 수 있는 평면이나 선을 긋되 출력값들과 가장 큰 폭으로 차이가 나도록 긋는 것을 기본으로 합니다. 이때 구분하는 평면이나 선을 초평면 Hyperplane이라고 하고 초평면과 출력값들의 거리 차이를 마진 Marging이라고 합니다. 서포트 벡터 머신으로 마진을 최대로 하다 보면 초평면이 휘어질 때가 있는데 이를 직선 함수로 바꾸기 위해 커널 함수 Kernel Function라는 변환 함수를 사용하기도 합니다.

서포트 벡터 머신(support vector machine, SVM)

비지도 학습은 대표적으로 군집 분석 Clustering Analysis를 이용합니다. 여기에는 한 군집이 다른 군집을 포함하는 계층적 군집 분석과 군집끼리 독립적인 비계층적 군집 분석이 있습니다. 또 비계층적 군집 분석은 K-means 등 거리를 기반으로 군집화하는 방법과 DB-SCAN 등 밀도를 기반으로 군집화하는 방법 으로 나눠집니다. 군집 분석을 할 때도 다양한 통계적 계산법이 있으니 관심이 있다면 더 찾아보시는 걸 추천합니다!

  • 머신러닝
    • 지도 학습
      • 분류
        • SVM
      • 회귀
        • SVM
    • 비지도 학습
      • 군집 분석
        • 계층적
        • 비계층적
          • 거리 기반
            • K-means
          • 밀도 기반
            • DB-SCAN

빅데이터를 분석하기 위해 정말 다양한 알고리즘이 존재한다는 사실, 놀랍지 않나요? 위에서 언급한 것은 극히 일부일 뿐 정말 많은 분석 방법과 그 안에 숨은 수학적, 과학적 메커니즘이 존재한답니다. 또 이런 원리들이 유기적으로 연결되어 음성 인식, 무인 자동차, AI와 같은 거대 기술이 만들어지는 것이랍니다. 이제부터는 선거와 관련된 빅데이터를 분석하는 방법을 알아볼까요?


기획특집 ③ - 선거 빅데이터 기술 편으로 이어집니다.

기획특집 ③ 보기


ALIMI 25기 화학공학과 임창현

포항공대와 알리미를 사랑하는 마음으로!

기사 모아 보기