들어가기 전에...
이 기록은 순전히 글쓴이 본인을 위한 것이므로 생략이 많음.
내용을 자세히 알고 싶으면 '데이터 사이언스 개론'(김화종 저)를 보세요.
7.1
데이터 분석 방법은 수학적인 모델에 기반한 방식부터 통계적 모델링, 기계학습적인 모델링 등 다양한 방법이 있다.
데이터 분석의 목적
통계적 분석
심슨 패러독스
기계학습 분석
7.2
데이터 분석은 "데이터로부터 어떤 의미를 찾는 것"이다.
데이터란 자연 상태나 인위적 행동의 결과가 밖으로 표출된 것이라고 볼 수 있으며 그 본질적인 내용 또는 숨어 있는 의미를 찾아내는 작업이 데이터 분석이다.
데이터 분석 결과는 연구 대상의 본질적인 성격을 설명하거나(description), 어떤 값을 예측( prediction)하는 형태로 나타나며 이를 위해 모델링 방식을 주로 사용한다.
모델링
데이터를 발생시킨 원래 시스템을 설명하기 위해 설정한 구조를 모델이라고 한다.
모델을 표현하는 방법은 수식, 다이어그램, 알고리즘 등으로 표현할 수 있다.
수식은 가장 명쾌한 수단이다.
ex) 만유인력의 법칙
만유인력의 법칙은 간결한 수식으로 잘 설명할 수 있는 모델이다. 그러나 현실 세계의 많은 현상은 수식으로 간단히 모델링하기 어려운 경우가 더 많다. 이때는 수식이 아니라 다이어그램이나 컴퓨터 알고리즘을 사용해서 모델을 만들어야 한다.
모델을 이용함으로써 연구대상의 본질적인 특성을 설명하거나 미래의 어떤 값을 예측할 수 있으며, 비록 모델이 정확하진 않더라도 실전에서 유용하게 쓰일 수 있다.
새로 들어오는 데이터를 보고 점차 정교하게 개선해 나갈 수 있다.
모델이 필요한 또 다른 중요한 이유는 분석 과정에서 사람들 간의 오해를 줄이기 위해서는 객관적인 기준이 필요하기 때문이다.
데이터 분석 결과를 객관적으로 설명하기 위해서는 공통으로 사용할 수 있는 모델이 필요하다.
모델의 특징
모델은 학습을 통해서 성능이 개선되고 일반화될 수 있어야 가치가 있다.
성능이 개선된다는 것은 예측의 정확도가 올라가는 것을 말한다.
주어진 샘플 데이터를 사용해 모델을 완성해나가는 과정을 훈련(training)이라고 한다.
훈련을 통해 모델을 만든 후에 예측이나 분류에 사용하는 것이다.
모델의 일반화(generalization)란 만들어진 모델이 앞으로 발생하는 새로운 입력 데이터에 대해서도 정확하게 잘 동작해야 하는 것을 말한다.
데이터에 기반하여 모델을 만들 때 방해가 되는 데이터를 noise라고 한다.
noise는 모델을 만드는데 사용하면 안 된다.
실수로 noise data를 포함하여 모델을 만들려고 노력하는데 이 때 모델의 과도한 적용(overfitting)이 발생한다.
overfitting을 하면 모델을 일반화 할 때, 즉 임의의 데이터에 대해 모델을 적용할 때 모델이 잘 작동하지 않는다.
모델을 만드는 과정에선 항상 가정이 필요하다.
모델이란 실제 현상을 단순하게 만든 것이므로 이 단순하게 만드는 과정에서 가정이 필요한 것.
이 때 필요한 목적에 따라 적절한 수의 성격 유형을 사용해야 할 것.
분석에서는 적절한 모델을 선택하는 것이 매우 중요한데, 적절한 모델이란 데이터 분석의 목적에 따라 다르다.
모델이 세분화될수록 항상 좋다고 말할 수 없다.
때로는 정교한 모델이 좋을 수도 있지만 정확하지는 않더라도 분석 결과가 빨리 나오는 것이 더 필요한 경우도 있다.
모델을 만들 떄 처음부터 가정을 잘못 세우는 경우도 있다.
가정이 실제 상황과 너무 틀리면 분석 결과가 맞지 않는다.
정확한 분석을 하려면 정확한 모델을 선택해야 하고 타당한 가정을 해야 한다.
데이터 분석의 성공 여부는 어떤 모델을 사용할지, 그리고 어떤 가정을 사용할지에 크게 의존한다.
이를 위해서는 분석 대상에 대한 이해가 필요하다.
기계학습
데이터 과학에서는 여러 가지 데이터 분석 기술을 사용한다.
기초통계 분석, 회귀분석, 기계학습, 데이터 시각화 기술 등을 사용하는데 그 중 가장 핵심이 되는 개념은 기계학습이다.
기계학습을 구성하는 내용을 크게 나누면 서술(description)형과 예측(prediction)형 모델이 있다.
기계학습 유형
서술형 모델이란 데이터를 분석하여 어떤 현상을 설명하는 모델을 말한다.
즉, 주어진 데이터의 속성을 파악하게 해주는 모델이다.
예를 들면 슈퍼마켓에서 어떤 두 가지 품목이 같이 자주 판매되는지의 패턴을 찾아내는 것은 일종의 서술형 모델이다.
유사한 특성을 가진 항목들을 그루핑하는 것을 클러스터링이라고 하는데 클러스터링도 서술형 모델.
예측형 모델이란 미래에 발생할 데이터의 값을 예측하는 것을 말함.
예측에는 분류(classification) 예측과 수치 예측이 있다.
분류 예측의 예는 수신한 메일이 스팸인지 아닌지를 구분하는 것 등이 있다.
수치 예측의 예는 병에 걸릴 확률이 얼마일지 등이 있다.
수치 예측에는 변수들 간의 상관관계를 이용한 linear regression분석이 가장 널리 사용.
예측 모델은 예측하려는 변수의 정답을 나중에 알 수 있으므로 지도학습(supervised learning)이라고 한다.
즉, 예측한 결과를 나중에 맞추어보고 기계학습의 모델을 개선해나갈 수 있다.
반면 앞에서 설명한 서술형 모델은 정답이 있지 않으므로 나중에 정답을 맞추어볼 수 없다.
서술형 모델은 비지도 학습(unsupervised learning)이라고 한다.
Clustering
연관분석
연관분석(association analysis)란 어떤 사건이 다른 사건과 얼마나 자주 동시에 발생하는지를 파악하는 것을 말한다.
연관분석은 사람들이 슈퍼마켓에서 어떤 제품을 같이 구매했는지 등을 분석하는 소위 장바구니 분석에 사용된다.
분류
분류(classification)이란 어떤 아이템이 어떤 클래스에 속할지를 구분하는 작업으로 예측 알고리즘에 해당한다.
ex) 새로 도착한 메일이 스팸 메일인지 아닌지를 구분하는 것은 분류에 속한다.
분류에 사용되는 대표적인 알고리즘으로 확률적인 모델을 이용하는 베이지안 알고리즘이 널리 사용된다.
베이지안 모델은 사건들이 서로 어떤 영향을 주는지를 분석한다.
분류에서 가장 널리 사용되는 방식은 의사결정 트리(decision tree) 알고리즘이다.
이 방식은 입력변수와 출력변수가 if-then의 관계로 기술되는 경우에 사용된다.
영화를 추천하기 위해서 특정 고객과 성향이 비슷한 사람들을 분류할 때 k-NN(k-nearest neighbors) 알고리즘이 사용된다.
k-NN이란 특정 고객과 유사한 사람 k명의 인접한 사람을 찾아낸다는 의미다.
유사한 사람을 찾기 위해서는 과거의 영화 대여기록이나 영화 평점 데이터를 사용한다.
예측
예측(prediction)이란 과거의 데이터를 보고 미래에 어떤 값이 나타날지를 예상하는 것을 말한다.
예측에서 가장 널리 사용되는 알고리즘은 선형 회귀분석이다.
특히 수치를 예측하는데 유용하며 통계 분석의 가장 기본적인 도구다.
예측하려는 목적 변수의 변화에 여러 가지 독립 변수들이 각각 얼마나 기여하는지, 즉 독립 변수들의 상대적인 중요도를 파악하는데 도움이 된다.
예측 모델로는 신경망(neural network)도 널리 사용된다.
linear regression이 비교적 간단한 모델인데 비해 신경망 구조는 마치 뇌를 구성하는 뉴런들의 집합체를 모델링하듯이 입력 값의 가중치 합의 형태로 복잡한 그물망 구조를 가진다.
최근 신경망의 규모를 더 키움으로써 계산량이 늘어나는 대신 예측도가 많이 향상되었다.
그러나 신경망 모델은 선형 회귀분석과 달리 각 변수가 결과 예측에 얼마나 많은 영향을 주었는지, 그리고 변수간의 영향은 파악하기 어렵다는 단점이 있다.
회귀분석에서는 각 변수가 얼마나 기여하는지를 파악하기가 쉬웠다.
7.4 분석 모델 선택
데이터 분석에서 가장 어려운 것은 주어진 문제를 해결하기 위해서 어떤 모델을 사용할 것인지를 정하는 것이다.
주어진 문제가 분류를 통해 해결할 수 있는 문제인지, 클러스터링을 먼저해서 그룹을 만들어봐야 하는 것인지, 예측을 해야하는 문제인지를 파악해야 한다.
모델의 성능
성능을 객관적으로 비교 평가하려면 수치화된 기준이 있어야 한다.
분석 모델 성능의 최저 기준은 아무런 모델도 사용하지 않는 경우다.
이를 널(null) 모델이라고 한다.
고려사항
데이터 분석 문제는 수학 문제처럼 정답이 하나만 있는 게 아니다.
같은 문제를 해결하는 데에도 여러 분석 알고리즘을 사용할 수 있으며, 각각의 성능, 편리성, 해석의 용이성 측면에서 장단점이 있다.
데이터 분석 알고리즘에서 중요한 기능 중 하나는 선택한 모델이 어떤 원리로 동작하는지를 고객에게 쉽게 설명할 수 있어야 한다.
처음에 선택한 분석 모델만 사용하여 데이터 분석을 마치는 경우는 거의 없다.
최초의 모델을 실제 상황에 적용해 보면서 이 모델이 문제를 잘 해결하고 있는지 점검하고 이를 개선하면서 문제해결 방법을 근본적으로 변경하기도 한다.
이 과정에서 새로운 모델을 재시도하거나 다른 데이터를 분석에 추가로 활용하거나 문제 자체를 다시 정의하기도 한다.
알고리즘의 동작 속도
알고리즘의 성능을 나타내는 데는 모델의 정확도, 즉 모델이 얼마나 오류없이 입력 데이터를 잘 분류 또는 예측하는지가 가장 중요하다.
모델의 정확도 외에도 모델을 구현한 알고리즘의 처리 속도도 중요하다.
알고리즘의 속도에는 두 가지가 있는데, 모델을 만드는 데 걸리는 시간과 모델을 만든 후에 이 모델을 사용하여 실제로 데이터를 분류 또는 예측할 때의 시간이다.
무작위 추출 모델
데이터 분석의 구체적인 알고리즘은 아니지만 분석 방법론으로 중요한 개념이 무작위 추출 모델이다.
무작위 추출 모델이란 데이터를 수집하는 단계 처음부터 데이터를 랜덤하게 구분하는 방식이다.
A/B 테스트라고도 한다.
A/B 테스트는 실험군을 랜덤하게 나눔으로써 다른 조건들을 크게 신경쓰지 않고도 두 방식의 차이점을 순수하게 비교할 수 있다는 장점이 있다.
7.5 데이터 분석 도구
데이터 분석은 Java, C, R, Python 같은 프로그래밍 언어를 사용할 수도 있고, 간단히 엑셀을 사용할 수도 있다.
통계처리 패키지인 SAS, SPSS, STATA를 사용할 수도 있고 수치해석 도구인 Matlab도 사용할 수 있다.
R
Python
python은 C, Java와 같이 세밀한 동작을 수행할 수 있으면서 스크립트형 언어로써 모든 코드를 한 번에 실행하지 않고 실행하고자 하는 영역만 실행하여 결과를 살펴볼 수 있어 중간 중간에 데이터를 분석하여 결과를 볼 수 있다는 장점이 있다.
예전에는 R이나 Matlab으로 분석에 대한 아이디어를 검증해 보고 실행 속도를 높이기 위해 C, Java와 같은 범용 언어로 다시 알고리즘을 구현하기도 했으나 python을 사용하면 R처럼 쉽게 알고리즘을 개발하고 통합할 수 있다는 장점이 있다.
파이썬은 NumPy, Pandas, Matplotlib, IPython, SciPy 등 매우 편리한 라이브러리를 제공하는데 NumPy는 데이터 분석에 사용할 데이터 컨테이너의 역할을 한다.
Pandas는 데이터를 가공할 수 있는 함수를 제공하고, Matplotlib은 데이터를 시각화하는데 사용된다.
IPython은 계산용 라이브러리이며 SciPy는 계산 컴퓨팅 영역에 대한 라이브러리다.
SAS
SAS(Statistical Analysis System)은 기업이나 대형 기관에서 가장 널리 사용되는 통계 분석 도구다.
SPSS
SPSS(Statistical Package for the Social Sciences)는 가장 많이 사용되는 통계처리 패키지 중 하나다.
Matlab
Matlab(Matrix Laboratory)는 수치해석, 행렬 연산, 신호처리의 수치계산을 편리하게 수행하고 다양한 그래픽 기능을 제공한다.
Microsoft Excel
Excel을 사용하면 간단하게 수식 계산, 기초통계 분석을 할 수 있으며, 그래픽과 차트, 데이터베이스, 응용프로그램도 작성할 수 있다.