07. 데이터 분석 방법

Humbler·2020년 4월 20일
1

들어가기 전에...
이 기록은 순전히 글쓴이 본인을 위한 것이므로 생략이 많음.
내용을 자세히 알고 싶으면 '데이터 사이언스 개론'(김화종 저)를 보세요.

7.1

데이터 분석 방법은 수학적인 모델에 기반한 방식부터 통계적 모델링, 기계학습적인 모델링 등 다양한 방법이 있다.

데이터 분석의 목적

통계적 분석

  • 모든 데이터 분석은 통계 분석(statistical analysis)에서 출발한다.
    통계학의 본질이 바로 "데이터로부터 의미를 찾는 것"이다.
    통계에서는 기본적으로 추론(inference)을 통해 샘플 데이터를 발생시킨 실제 세계를 설명한다.
  • 통계적 분석에서는 어떤 결론을 얻는데 필요한 가설을 잘 세우는 것이 중요하며 이 가설을 검증하기 위해 신뢰도와 오차범위를 설명해야 한다.
    통계적 예측에서 신뢰도와 오차범위는 측정한 샘플 데이터의 분포를 보고 판단한다.
    특히 샘플 데이터의 분산(variance)이 중요한 역할을 한다.
  • 분산은 통계에서 매우 중요한 역할을 한다.
  • 지금까지의 통계적 분석에서는 전체 데이터를 확보하기 어려운 조건에서 샘플을 통해 전체적인 상황을 예측하는 노력을 한 것이라면, 빅데이터 시대에는 샘플 데이터가 아니라 데이터 전체를 가지고 분석하는 일도 가능해졌다.

심슨 패러독스

  • 통계분석은 결과 해석방법에 따라 매우 주관적인 결과를 얻기도 한다.
    평범한 데이터 분석도 보는 시각에 따라 전혀 다른 결과가 나올 수 있는 사례가 있다.
    ex) ...
    각자의 주장에 틀린 점은 없다. 단지 데이터의 해석방법이 달랐을 뿐.
    이렇게 같은 데이터를 가지고도 분석방법에 따라 해석이 달라질 수 있는 예를 simpson paradox라고 하며 이런 일은 종종 벌어진다.

기계학습 분석

  • 기계학습(machine learning)이란 컴퓨터 프로그램이 마치 사람이 학습하듯이 점차 성능을 개선하는 방식을 말한다.
    기계학습에서는 새로 들어오는 데이터를 이용하여 프로그램이 학습을 하여 분석 모델의 성능을 개선시키게 된다.
  • 기계학습은 Artificial intelligence의 한 분야다.
    기계학습은 단순한 형태의 인공지능이라고 할 수 있다.
    기계학습에서는 비교적 단순하지만 훈련을 통해서 성능이 나아지는 기능을 수행하며 사람처럼 생각을 하거나 추론을 하는, 소위 지능을 가지는 것을 목표로 하지는 않는다.
    기계학습은 마치 공장에서 불량품을 잘 골라내는 숙련공과 같은 역할을 하는 것이다.
  • 통계적 분석에서는 모델을 만들 때 세운 가정은 합리적인지, 분석 결과를 얼마나 신뢰할 수 있는지 등을 중요시 하는데 비해, 기계학습에서는 모델을 소프트웨어로 구현해 내는 데에 더 관심이 많다.
    즉, 실제로 동작하는 분석 시스템을 우선 만들고 새로운 데이터를 이용한 학습과정을 통해서 모델의 성능을 개선하는 것에 더 가치를 둔다.

7.2

데이터 분석은 "데이터로부터 어떤 의미를 찾는 것"이다.
데이터란 자연 상태나 인위적 행동의 결과가 밖으로 표출된 것이라고 볼 수 있으며 그 본질적인 내용 또는 숨어 있는 의미를 찾아내는 작업이 데이터 분석이다.
데이터 분석 결과는 연구 대상의 본질적인 성격을 설명하거나(description), 어떤 값을 예측( prediction)하는 형태로 나타나며 이를 위해 모델링 방식을 주로 사용한다.

모델링

  • 데이터를 발생시킨 원래 시스템을 설명하기 위해 설정한 구조를 모델이라고 한다.
    모델을 표현하는 방법은 수식, 다이어그램, 알고리즘 등으로 표현할 수 있다.
    수식은 가장 명쾌한 수단이다.

    ex) 만유인력의 법칙

    만유인력의 법칙은 간결한 수식으로 잘 설명할 수 있는 모델이다. 그러나 현실 세계의 많은 현상은 수식으로 간단히 모델링하기 어려운 경우가 더 많다. 이때는 수식이 아니라 다이어그램이나 컴퓨터 알고리즘을 사용해서 모델을 만들어야 한다.

  • 모델을 이용함으로써 연구대상의 본질적인 특성을 설명하거나 미래의 어떤 값을 예측할 수 있으며, 비록 모델이 정확하진 않더라도 실전에서 유용하게 쓰일 수 있다.
    새로 들어오는 데이터를 보고 점차 정교하게 개선해 나갈 수 있다.

  • 모델이 필요한 또 다른 중요한 이유는 분석 과정에서 사람들 간의 오해를 줄이기 위해서는 객관적인 기준이 필요하기 때문이다.
    데이터 분석 결과를 객관적으로 설명하기 위해서는 공통으로 사용할 수 있는 모델이 필요하다.

모델의 특징

  • 모델은 학습을 통해서 성능이 개선되고 일반화될 수 있어야 가치가 있다.
    성능이 개선된다는 것은 예측의 정확도가 올라가는 것을 말한다.
    주어진 샘플 데이터를 사용해 모델을 완성해나가는 과정을 훈련(training)이라고 한다.
    훈련을 통해 모델을 만든 후에 예측이나 분류에 사용하는 것이다.
    모델의 일반화(generalization)란 만들어진 모델이 앞으로 발생하는 새로운 입력 데이터에 대해서도 정확하게 잘 동작해야 하는 것을 말한다.

  • 데이터에 기반하여 모델을 만들 때 방해가 되는 데이터를 noise라고 한다.
    noise는 모델을 만드는데 사용하면 안 된다.
    실수로 noise data를 포함하여 모델을 만들려고 노력하는데 이 때 모델의 과도한 적용(overfitting)이 발생한다.
    overfitting을 하면 모델을 일반화 할 때, 즉 임의의 데이터에 대해 모델을 적용할 때 모델이 잘 작동하지 않는다.

  • 모델을 만드는 과정에선 항상 가정이 필요하다.
    모델이란 실제 현상을 단순하게 만든 것이므로 이 단순하게 만드는 과정에서 가정이 필요한 것.
    이 때 필요한 목적에 따라 적절한 수의 성격 유형을 사용해야 할 것.

  • 분석에서는 적절한 모델을 선택하는 것이 매우 중요한데, 적절한 모델이란 데이터 분석의 목적에 따라 다르다.
    모델이 세분화될수록 항상 좋다고 말할 수 없다.
    때로는 정교한 모델이 좋을 수도 있지만 정확하지는 않더라도 분석 결과가 빨리 나오는 것이 더 필요한 경우도 있다.

  • 모델을 만들 떄 처음부터 가정을 잘못 세우는 경우도 있다.
    가정이 실제 상황과 너무 틀리면 분석 결과가 맞지 않는다.
    정확한 분석을 하려면 정확한 모델을 선택해야 하고 타당한 가정을 해야 한다.
    데이터 분석의 성공 여부는 어떤 모델을 사용할지, 그리고 어떤 가정을 사용할지에 크게 의존한다.
    이를 위해서는 분석 대상에 대한 이해가 필요하다.

기계학습
데이터 과학에서는 여러 가지 데이터 분석 기술을 사용한다.
기초통계 분석, 회귀분석, 기계학습, 데이터 시각화 기술 등을 사용하는데 그 중 가장 핵심이 되는 개념은 기계학습이다.
기계학습을 구성하는 내용을 크게 나누면 서술(description)형과 예측(prediction)형 모델이 있다.

기계학습 유형

  • 서술형 모델이란 데이터를 분석하여 어떤 현상을 설명하는 모델을 말한다.
    즉, 주어진 데이터의 속성을 파악하게 해주는 모델이다.
    예를 들면 슈퍼마켓에서 어떤 두 가지 품목이 같이 자주 판매되는지의 패턴을 찾아내는 것은 일종의 서술형 모델이다.
    유사한 특성을 가진 항목들을 그루핑하는 것을 클러스터링이라고 하는데 클러스터링도 서술형 모델.

  • 예측형 모델이란 미래에 발생할 데이터의 값을 예측하는 것을 말함.
    예측에는 분류(classification) 예측과 수치 예측이 있다.
    분류 예측의 예는 수신한 메일이 스팸인지 아닌지를 구분하는 것 등이 있다.
    수치 예측의 예는 병에 걸릴 확률이 얼마일지 등이 있다.
    수치 예측에는 변수들 간의 상관관계를 이용한 linear regression분석이 가장 널리 사용.

  • 예측 모델은 예측하려는 변수의 정답을 나중에 알 수 있으므로 지도학습(supervised learning)이라고 한다.
    즉, 예측한 결과를 나중에 맞추어보고 기계학습의 모델을 개선해나갈 수 있다.
    반면 앞에서 설명한 서술형 모델은 정답이 있지 않으므로 나중에 정답을 맞추어볼 수 없다.
    서술형 모델은 비지도 학습(unsupervised learning)이라고 한다.

Clustering

  • clustering이란 성격이 비슷한 항목들을 그룹으로 묶는 것을 말함.
    클러스터링이 분류와 다른 점은, 분류는 나눌 그룹의 개수와 명칭이 미리 정해진 반면, 클러스터링에서는 항목들을 몇 개의 그룹으로 나눌지 미리 정하지 않는다.
    클러스터링 분석을 하는 이유는 전체적으로 고객의 유형이 몇 종류인지를 먼저 파악하기 위해서다.
    즉, 매출액수에 따라 적절한 고객 그룹의 수를 파악하고 각 그룹의 고객에게 다른 선물을 하려고 한다면 선물을 몇 종류나 준비할지를 정하기 위해 필요하다.
    클러스터링에 자주 사용되는 알고리즘으로 k-means가 있다.
    이 방식은 특정 샘플의 주변에 있는 k개의 다른 샘플의 평균치를 구해서 이 샘플의 속성이 무엇일지를 정하는 방법이다.

연관분석
연관분석(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

  • 데이터 사이언스에서는 데이터에 대한 전반적인 이해, 데이터 처리, 분석, 활용에 대한 전체 과정을 파악하는 것이 더 중요하므로 가능하면 세부적인 프로그래밍의 부담을 최소화 할 수 있는 R을 쓸 수 있다.
    그러나 데이터를 보다 상세하게 다루거나 복잡한 기능을 구현하려면 파이썬이나 자바, C와 같은 범용 프로그래밍 언어를 사용해야 한다.

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을 사용하면 간단하게 수식 계산, 기초통계 분석을 할 수 있으며, 그래픽과 차트, 데이터베이스, 응용프로그램도 작성할 수 있다.

profile
무엇을 모르는지 모르는 상태에서 무엇을 모르는지 아는 상태가 되어가는.

0개의 댓글