데이터실무

DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!

기계학습과 데이터 마이닝

데이터 분석
기계학습
기계학습과 데이터 마이닝
작성자
admin
작성일
2021-02-15 14:18
조회
2830

본격적으로 빅데이터 분석을 위한 기계학습 알고리즘을 설명하기 전에 우선 기계학습과 데이터 마이닝에 대해 간단히 알아 보자. 이번 절에서 언급하는 이론적인 내용은 모두 한국데이터베이스진흥원에서 발간한 「데이터 분석 전문가 가이드」 에서 발췌한 내용이다. 알고리즘에 대한 자세한 내용이나 R을 이용한 구체적인 활용법을 알고싶다면 이 책을 참고하기 바란다.


기계학습

기계학습은 인공 지능의 한 분야로, 시스템이 데이터로부터 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야를 말한다. 일찍이 1959년 아서 사무엘(Arthur Samuel)은 기계학습을 ‘컴퓨터에게 배울 수 있는 능력, 즉 코드로 정의하지 않은 동작을 실행하는 능력에 대한 연구 분야’라고 정의했다. 이후 톰 미첼(Tom M. Mitchell)이 좀 더 형식화한 정의를 하여 많이 인용되고 있다. 그는 기계학습을 ‘성능 척도 P에 의해 측정되는 태스크 T의 성능이 경험 E로부터 개선된다고 할 때, 컴퓨터 프로그램은 태스크 T에 대한 경험 E로부터 학습한다고 한다’라고 했다.
톰 미첼의 정의를 따르면 이메일 프로그램이 사용자가 어떤 이메일을 스팸으로 체크하는지에 대한 정보를 기반으로 스팸 필터링을 학습한다고 했을 때, 태스크 T는 이메일을 스팸 또는 일반 메일로 분류한다. 이메일을 스팸 또는 일반 메일로 라벨링하는 사용자의 행위를 관찰하는 것으로, 성능 척도 P는 스팸 또는 일반 메일로 정확하게 분류된 이메일의 비율이라고 말할 수 있다.




생각해 봅시다

기계학습과 데이터 마이닝, 데이터 분석의 차이점은 무엇일까? 일단은 서로 많은 부분에서 중첩되는 면이 있으므로 이 세 가지를 무 자르듯이 나누기는 힘들다. 하지만 기계학습은 데이터부터 학습한 알려진 특성(known properties)을 통해 어떤 ‘예측’을 하는 데 초점을 맞춘다. 반면 데이터 마이닝은 데이터로부터 알려지지 않은 특성(unknown properties)을 ‘발견’하는 데 집중한다. 기계학습에서는 알려진 특성을 재생산(reproduce)하는 능력으로 성능을 평가할 수 있으므로 성능을 개선하기 위해 예측 결과로부터 예측 모델을 개선하는 데 집중하는 과정도 포함된다고 할 수 있다. 데이터 마이닝에서는 종종 기계학습 방법론을 약간 다른 목적으로 차용하기도 하며, 기계학습에서는 데이터 마이닝 방법론을 무감독학습이나 데이터 전처리에서 많이 활용하고 있다. 반면 데이터 분석은 데이터를 다양한 형태로 가공해 데이터 자체에서는 쉽게 드러나지 않는 유용한 정보를 찾아내고, 이로부터 의사결정이나 결론을 도출하는데 도움을 주는 활동을 말한다.


기계학습의 분류

기계학습 알고리즘은 크게 감독학습(Supervised Learning)과 무감독학습(Unsupervised Learning)알고리즘으로 구분할 수 있다. 감독학습은 훈련 데이터(training data)로부터 어떤 모델을 추론하는 기계학습 태스크라고 할 수 있다. 여기서 사용하는 훈련 데이터가 입력으로 주어진 변수들과 그 입력에 대해 요구되는 결과 변수(또는 supervisory signal)의 쌍으로 이뤄져 있기 때문에 감독학습이라는 이름을 가진다.
감독학습은 입력 변수 X와 그 입력에 대한 올바른 결과 d(desired output)가 훈련 데이터 D={(X, d)}로 주어졌다고 하자. 이 훈련 데이터를 이용해 X로부터 d를 추론하는 모델을 생성하고, 이 모델을 이용해 올바른 해답 d'를 알 수 없는 새로운 문제 X'가 검사 데이터(test data)로 주어졌을 때 이로부터 d'를 추론하는 방식으로 동작한다. 분류(Classification)와 회귀(Regression)가 여기에 해당한다. 결과 변수 d가 범주형 변수일 때의 감독학습 알고리즘을 분류라고 하며, d가 숫자형 변수일 때는 회귀라고 한다.
무감독학습은 감독학습과 달리, 학습 데이터에 결과 변수가 주어지지 않은 입력 변수만으로 이뤄진 학습 데이터 D={(X)}를 입력으로 하여, 데이터가 어떻게 구성됐는지를 파악한다. 데이터에 대해 알려지지 않은 구조를 발견하려고 시도한다. 군집화(Clustering), 차원 축소(Dimension Reduction)등이 여기에 속한다. 이외에도 준지도학습(Semi-Supervised Learning), 강화학습(Reinforcement Learning) 등으로 분류되는 알고리즘들도 있다.


다양한 기계학습 알고리즘
  • 연관규칙(Association rule) - Apriori algorithm
  • 의사결정트리(Decision Trees)
  • 랜덤 포리스트(Random Forest)
  • 단순선형회귀분석(Simple Linear Regression)
  • 로지스틱회귀분석(Logistic Regression)
  • K-최근접 이웃(K-Nearest Neighbor) 알고리즘
  • 나이브 베이즈 분류기(Naive Bayes Classifier)
  • 지지벡터머신(Support Vector Machines)
  • 인공신경망(Artificial Neural Networks)
  • K-Means 군집화(K-Means Clustering)
  • 퍼지 K-Means 군집화(fuzzy K-Means Clustering)
  • 계층적 군집화(Hierarchical clustering)
  • 주성분분석(Principal Components Analysis)
  • 추천시스템(Recommender Systems)
기계학습 도구

앞서 살펴 본 여러 알고리즘을 활용하기 위해 사용할 수 있는 여러 가지 도구가 있다.


마이크로소프트 엑셀

엑셀을 단순히 문서 도구로 생각할 수 있지만, 엑셀에서도 데이터 분석 등을 위한 프로그래밍이 가능하도록 지원한다. 다양한 통계, 마이닝 기법들을 사용할 수 있는 방법을 제공하는데, 실제로 금융공학 분야에서는 엑셀을 주요 도구로 많이들 사용하고 있다.


SAS, SPSS, Oracle 솔루션

벤더들이 제공하는 각종 마이닝ㆍ분석 솔루션을 사용하면 어느 정도 대용량 데이터에 대해서도 신뢰성 있는 분석을 할 수 있다. 하지만 도입을 위해 많은 비용이 들기 때문에 규모가 작은 회사나 개인이 사용하기에는 무리가 있다.


R, Weka

무료로 사용할 수 있는 오픈소스 마이닝 도구도 많다. 그 중 자바 기반의 오픈소스 데이터 마이닝 프로그램인 Weka가 유명하다. 특히 R은 최근 빅데이터 분석 바람을 타고 데이터 분석 도구로서 각광받고 있다.


lens-kit, OpenCV

이외에도 추천 시스템을 위한 lens-kit 라이브러리나, 이미지 프로세싱 또는 패턴인식에 특화된 OpenCV 같은 라이브러리가 있다.
이런 도구들이 이미 다양한 알고리즘을 제공하지만, 대부분은 분석을 위해 모든 데이터를 메모리에 올려야 하는 등 분산ㆍ병렬 처리에 대한 지원이 미미하다. 따라서 적절한 비용으로 대용량 데이터에 대해 신뢰성 있는 기계학습, 데이터 마이닝 알고리즘을 수행하기에는 어려운 점이 많다. 바로 이런 이유 때문에 다음 절에서 배우게 될 머하웃이 주목을 받게 됐다.


데이터 마이닝의 분석기법

분류분석

분류분석(Classification Analysis)이란 데이터의 실체가 어떤 그룹에 속하는지 예측하는데 사용하는 데이터 마이닝 기법이다. 고객 기록을 특정한 등급으로 나눈다는 점에서 클러스터링과 유사하지만, 분류분석은 군집분석과 달리 각 계급이 어떻게 정의되는지 미리 알아야 한다. 분류(classification)는 어떤 객체가 불량인지 우량인지 또는 생존하느냐 못하느냐와 같이 0과 1로 구분하는데 활용되거나 AㆍBㆍCㆍD 중에서 어느 범주에 속하는지 또는 1ㆍ2ㆍ3ㆍ4ㆍ5등급 중에서 어느 등급에 속하는지 등과 같이 객체를 정해놓은 범주로 분류하는 데 목적이 있다.
분류를 위해 사용되는 데이터 마이닝 기법은 K-최근접 이웃(K-Nearest Neighborhood), 의사결정 나무(Decision Tree), 베이지안 정리(Bayesian Theorem)를 이용한 분류, 인공신경망(Artificial Neural Network), 지지벡터기계(Support Vector Machine) 등이 있다.


회귀분석

분류와 회귀는 각각 불연속적인 값과 연속적인 값을 목표 값으로 한다는 점에서 차이가 있다. 원인이 되는 변수(독립 변수)와 결과로 간주되는 변수(종속 변수) 관계가 성립될 때, 하나 또는 여러 개의 독립변수와 종속변수 간의 관계를 분석하는 통계 기법을 회귀분석(Regression Analysis)이라고 한다. 회귀분석은 입력 데이터에서 변수간의 관계를 가장 잘 설명할 수 있는 y = a + bx 형태의 선형방정식(linear equation)을 찾아내고, 이를 통해 주어진 독립변수에 대해 종속 변수의 값을 예측하는 분석 방법이다.
독립변수의 개수에 따라 단순선형회귀와 다중회귀모형으로 나눌 수 있다. 하지만 실세계에서는 어떤 변수가 단 하나의 요인에 의해 결정되는 일은 드물어 보통 다중회귀모형을 많이 사용한다.


군집분석

군집분석(Clustering Analysis)은 특성에 따라 객체를 여러 개의 배타적인 집단으로 나누는 것이다. 결과는 구체적인 군집분석 방법에 따라 차이가 나타날 수 있다. 군집의 개수나 구조에 대한 가정 없이, 데이터로부터 거리 기준에 의해 자발적인 군집화를 유도한다. 군집분석의 첫 번째 목적은 적절한 군집으로 나누는 것이고, 두 번째 목적은 각 군집의 특성과 군집간의 차이 등에 대해 분석하는 것이다.
군집분석 방법에는 계층적 군집(Hierarchical Clustering) 방법과 비계층적 군집(Nonhierarchical Clustering) 방법이 있다. 계층적 군집 방법은 n개의 군집으로 시작해 점차 군집의 개수를 줄여나가는 방법이다. 예를 들어, n개의 객체로 이루어진 데이터가 있을 때 거리가 가장 가까운 데이터가 p1과 p2라면 먼저 두 객체를 묶어서 군집(C1)을 형성한다. 다음 단계는 군집 C1과 나머지 (n-2)개의 다른 데이터 또는 군집과의 거리를 계산해 가장 가까운 데이터를 묶어주는 작업을 반복한다. 거리를 정의하는 방법에 따라 최단연결법, 최장연결법, 평균연결법, 중앙값연결법, 중심연결법, 와드연결법 등 여러가지로 나눌 수 있다.
계층적 군집 방법 외에 비계층적인 방법으로 군집을 형성할 수 있다. 그 원리는 n개의 개체를 g개의 군집으로 나눌 수 있는 모든 방법을 점검해 최적화한 군집을 형성하는 것이다. 대표적인 방법으로 K-Means 알고리즘이 있다. K-Means 군집화는 주어진 데이터의 내부구조에 대한 사전정보 없이 의미 있는 구조를 찾을 수 있으며, 객체간의 거리를 데이터 형태에 맞게 정의하면 모든 형태의 데이터에 대해 적용 가능하다는 장점이 있다. 반면, 가중치와 거리 정의가 어려우며 초기 군집수를 결정하기 어렵다는 단점이 있다.


연관분석

연관성분석(Association Analysis)은 흔히 장바구니분석(Market Basket Analysis), 서열분석(Sequence Analysis)이라 불린다. 예를 들어, 대형 할인점의 계산대에서 매일 수집되는 구매 트랜잭션 데이터는 유니크한 트랜잭션 ID로 구별되며, 주어진 고객이 구매한 아이템 항목의 집합으로 이루어진다. 이 거대한 데이터에서 유용한 정보를 얻기 위해 연관 분석을 활용할 수 있다.
연관 분석에서 주요하게 다루는 개념은 연관 규칙과 빈발 항목 집합 두 가지다. 빵을 구매하는 많은 고객이 버터를 동시에 구매하는 경우 {빵} → {버터}라는 연관 규칙을 얻을 수 있다. 이 규칙은 빵과 버터 구매 사이에 강한 관계가 있음을 말해준다. 빵과 버터가 빈발 항목 집합이고 {빵} → {버터} 연관 규칙이 발견되더라도 항상 {버터} → {빵} 연관 규칙을 도출하지는 않는다. 이는 지지도와 신뢰도에 따라서 결정된다.