기계학습 개요


  • 본문의 내용은 Data Science from scratch(밑바닥부터 시작하는 데이터 과학)을 읽고 작성했습니다.

데이터 과학의 핵심은 비즈니스 문제를 데이터 문제로 변환시킨 뒤 데이터를 수집하고 이해해 전처리하고 형식을 바꾸는 것이다. 기계학습은 그 이후에 이뤄지는 과정으로, 데이터 과학에 있어 없어서는 안되는 기술이다.

모델링

기계학습에서 모델이란 다양한 변수 간의 수학적(확률적, 통계적) 관계를 표현한 것이다. 예를 들어 비즈니스 모델은 간단한 수학적 관계에 기반을 둔다. 매출에서 비용을 뺀 값이 이익이며, 평균 가격에 판매량을 곱한 것이 매출이라는 게 그 예시이다.

기계학습이란

기존의 프로그래밍은 explicit programming(명시적 프로그래밍)이라고 한다. 이 방법으로 스팸 필터를 만들고자 한다면 그에 맞게 엄청나게 많은 규칙을 추가해야 할 것이다. 자율주행도 마찬가지이다. Arthur Samuel은 기계학습을 “컴퓨터에게 명시적으로 프로그래밍하지 않고 학습할 수 있는 능력을 주는 연구(1959)”라고 말했습니다.

데이터를 통해 모델을 만들고 사용하는 과정. 데이터를 통해 얻은 수학적 귀납법에 알맞게 가능성이 가장 큰 수를 찾아내는 과정(?) predictive modeling 등을 기계학습이라고 볼 수 있습니다.

기계학습으로는 다음과 같은 것들을 예측해볼 수 있다.

  • 이메일이 스팸 메일인지 아닌지
  • 신용카드 사기
  • 쇼핑 고객이 클릭할 확률이 높은 광고
  • 슈퍼볼에서 우승할 미식 축구팀

기계학습은 크게 정답이 포함되어 있는 지도 학습(supervised learning)과 정답이 포함되어 있지 않은 비지도 학습(unsupervised learning), 혹은 준 지도학습(semi-unsupervised learning), 새로 들어오는 데이터를 통해 끊임없이 모델을 조정하는 online learning, 어떤 상태에서 어떤 행동을 해야 할지를 학습하는 reinforcement learning 등으로 갈래가 나뉠 수 있다. (또 계속 새로운 모델들이 등장한다.)

단순한 상황에서도 사용할 수 있는 모델은 무수히 많으며 일반적으로는 파라미터를 받는 parametric 모델을 고르고 데이터를 통해 파라미터의 최적값을 찾으려고 한다.

오버피팅과 언더피팅

기계학습의 일반적인 문제점은 오버피팅(overfitting, 과적합)으로, 오버피팅은 만들어진 모델이 학습 데이터에서는 좋지만 관측한 적 없던 새로운 데이터에서는 좋지 않은 경우를 뜻한다.

이런 현상은 데이터의 잡음(noise)이 모델에 학습되거나 원하는 결과 예측에 도움이 되지 않는 요소들이 함께 학습되어 발생한다.

반대로 언더피팅(underfitting, 미적합?)은 모델의 성능이 학습 데이터에서도 좋지 않은 경우를 뜻한다. 보통 언더피팅이 발생한 경우 모델이 데이터에 적합하지 않다는 뜻이 되며, 새로운 모델을 찾아봐야 한다.

모델이 잘 작동하는지 확인하는 방법으로 데이터를 (양적으로) 나눠 2/3으로 모델을 학습하고 1/3으로 모델의 성능을 확인하는 방법이 있다. 이렇게 하면 모델은 1/3의 데이터를 학습한 적이 없지만 한정된 데이터셋에서 학습한 적 없던 새로운 데이터로 테스트를 할 수 있다.

하지만 이런 방식에도 몇 가지 문제점이 있다. 첫 번째는 학습 데이와 평가 데이터에 동일한 패턴이 존재한다면 더 큰 데이터에서 일반적인 성능이 좋지 않다는 것이다.

더 큰 문제는 학습 데이터와 평가 데이터로 하나의 모델을 평가할 때가 아닌 여러 모델 중 하나의 모델을 고를 때 일어난다. 이 경우 각 모델들은 오버피팅되지 않았으나, 평가 데이터에서 성능이 제일 좋은 모델을 선택한다면 이는 평가 데이터를 일종의 두 번째 학습 데이터로 사용하는 메타학습의 문제가 발생한다.

이런 경우 데이터를 세 종류로 나눠서 학습 / 검증 / 평가에 쓰는 방법이 있다.

정확도

예를 들어 이메일이 스팸인지 확인하는 (경우의 수는 스팸이다/아니다) 모델이 있다면 모든 데이터는 다음 네 가지 분류 중 하나에 속하게 된다.

  • True positive(TP; 진양성): 이메일이 실제로 스팸 메일이고 스팸으로 분류됐다.
  • False positive(FP; 가양성): 이메일은 스팸이 아니지만 스팸으로 분류됐다.
  • True negative(TN; 진음성): 이메일은 실제로 스팸이 아니고 스팸이 아니라고 분류됐다.
  • False negative(FN; 가음성): 이메일은 스팸이지만 스팸이 아니라고 분류됐다.

이런 정보는 보통 혼동행렬(confusion matrix)을 사용해 표현한다.

  실제로 스팸 메일인 경우 실제로 스팸 메일이 아닌 경우
스팸 메일로 분류 True positive False positive
스팸 메일이 아닌 것으로 분류 False negative True negative

만약 100만개의 스팸메일을 판독했다면, 다음과 같은 혼동행렬로 결과를 확인할 수 있다.

  실제로 스팸 메일인 경우 실제로 스팸 메일이 아닌 경우 합계
스팸 메일로 분류 70 4930 5000
스팸 메일이 아닌 것으로 분류 13930 981070 995000
합계 14000 986000 1000000

이제 이 혼동행렬을 이용해서 다양한 지표를 계산해보자. 정확한 예측의 비율을 의미하는 정확도는 다음과 같이 계산된다.

def accuracy(tp, fp, fn, tn):
    correct = tp + tn
    total = tp + fp + fn + tn
    return correct / total
print(accuracy(70,4930,13930,981070))
>>0.98114

모델의 정확도가 상당히 높다. 하지만 이 판독 방법은 좋은 방법이 아니므로 계산 결과에 크게 신경쓰지 않아도 좋다.
보통 모델의 성능을 평가할 때는 정밀도와 재현율을 사용한다. 정밀도는 양성으로 예측된 결과의 정확도를 의미한다.

def precision(tp, fp, fn, tn):
    return tp / (tp+fp)
print(precision(70,4930,13930,981070))
>>0.014

재현율은 실제 양성 모델이 정확하게 양성으로 예측한 비율을 뜻한다.

def recall(tp, fp, fn, tn):
    return tp / (tp+fn)
print(recall(70,4930,13930,981070))
>>0.005

F1점수는 정밀도와 재현율은 조화평균(주어진 수의 곱*n/주어진 수의 합)이며, 항상 정밀도와 재현율 사이의 값을 갖는다.

def f1_score(tp, fp, fn, tn):
    p = precision(tp,fp,fn,tn)
    r = recall(tp,fp,fn,tn)
    return 2 * p * r / (p+r)

모델을 선택하기 위해서는 정밀도와 재현율의 트레이드오프(Trade-off)를 고려해야 한다. 특정 데이터 포인트가 조금이라도 양성일 것 같을 때 그를 양성이라고 판단한다면 재현율은 높겠지만 정밀도가 떨어진다. 반대로 데이터가 확실히 양성일 때만 해당 데이터를 양성이라고 판단하면 재현율은 낮겠지만 정밀도는 올라간다.

Bias-Variance 트레이드오프

오버피팅 문제는 bias(편향)와 variance(분산)의 트레이드오프라고 볼 수도 있다. 오버피팅과 언더피팅에서 언더피팅이 심한 모델은 상당히 bias되었다고 볼 수 있다. bias가 높고 variance가 낮으면 언더피팅을 의미한다.

반대로 bias는 낮지만 variance는 높은 모델은 오버피팅을 의미한다.

만약 모델의 bias가 매우 심하다면 새로운 변수를 추가하는 것도 하나의 해결책일 것이다. 반대로 모델의 variance가 너무 높다면, 모델의 변수를 줄이거나 더 많은 데이터를 구해서 모델을 다시 학습시키면 된다.

모델의 복잡성이 동일한 상태에서 데이터가 더욱 많아진다면 모델은 오버피팅되기 힘들다. 반대로 데이터의 수가 늘어나더라도 bias는 줄어들지 않는다. 데이터의 패턴을 잡아내기에 모델의 특징이 부족하면 아무리 많은 데이터를 추가해도 도움이 되지 않는다.

특성 추출 및 선택

데이터의 특성을 나타내는 모델의 변수가 부족하다면 언더피팅이 생길 것이고 변수가 너무 많으면 오버피팅이 생길 것이다.

데이터의 특성(feature)이란 모델의 모든 입력 변수를 의미한다.
간단한 경우 이런 특성이 주어진다 예컨데 사람의 경력으로 연봉을 찾고 싶다면 경력은 특성이다.

데이터가 복잡해질수록 신기한 일이 일어난다. 예컨데 이메일이 스팸인지 아닌지 예측하는 필터를 만들고 있다고 하면, 대부분의 모델은 수많은 글자로 구성된 이메일 원본을 처리할지 모를 것이다. 필터를 만들기 위해 특징을 추출해야 한다.

  • 이메일에 ‘광고’라는 단어가 포함되어 있는가?
  • ‘d’가 몇 번 나왔는가?
  • 보낸 사람의 이메일 도메인은 무엇인가?

첫 특징은 예 혹은 아니오(boolean)로 답할 수 있고 두 번째 특징은 정수로 표현된다. 세 번째 특징은 별도로 선택하면 된다. 대부분의 특징은 위의 세 가지로 구분할 수 있다. 특징의 종류에 따라 사용할 수 있는 모델이 제한된다.

나이브 베이즈 분류기는 첫 특징(boolean)에 적합하며, 회귀 모델은 정수형 특징에 적합하다. 의사결정나무는 숫자나 범주로 표현되는 데이터에 적용할 수 있다.

여기서는 데이터의 특성을 생성했지만, 가끔은 특성을 제거할 경우도 있다. 예컨데 입력 변수로 수백 차원의 벡터가 주어졌다면 차원 축소를 통해 입력 변소를 축소시키고 적은 수의 변수로 데이터의 특성을 나타낼 수도 있다. regularization(정규화)같은 기법을 사용할 수도 있다.

만약 많은 이메일을 받아 봤다면 스팸 메일은 대게 특정 단어를 포함한다는 걸 알고 있을 것이다. 또한 ‘d’가 나온 횟수는 별로 중요하지 않다는 것도 알고 있을 것이다. 하지만 다양한 특성을 나타내는 모델을 직접 만들어 봐야 한다.

참고

Examples :

Predicting final exam score based on time spent

  • regression

Pass/non-pass based on time spent

  • binary classification

Letter grade (A, B, C, E and F) based on time spent

  • multi-label classification

Supervised learning Approaches and algorithms

  • Artificial neural network
  • Analytical learning
  • Backpropagation
  • Boosting (meta-algorithm)
  • Bayesian statistics
  • Case-based reasoning
  • Decision tree learning
  • Inductive logic programming
  • Gaussian process regression
  • Group method of data handling
  • Kernel estimators
  • Learning Automata
  • Learning Classifier Systems
  • Minimum message length (decision trees, decision graphs, etc.)
  • Multilinear subspace learning
  • Naive bayes classifier
  • Maximum entropy classifier
  • Conditional random field
  • Nearest Neighbor Algorithm
  • Probably approximately correct learning (PAC) learning
  • Ripple down rules, a knowledge acquisition methodology
  • Symbolic machine learning algorithms
  • Subsymbolic machine learning algorithms
  • Support vector machines
  • Minimum Complexity Machines (MCM)
  • Random Forests
  • Ensembles of Classifiers
  • Ordinal classification
  • Data Pre-processing
  • Handling imbalanced datasets
  • Statistical relational learning
  • Proaftn, a multicriteria classification algorithm

Unsupervised learning Approaches

  • clustering
  • k-means
  • mixture models
  • hierarchical clustering
  • anomaly detection
  • Neural Networks
  • Hebbian Learning
  • Generative Adversarial Networks
  • Approaches for learning latent variable models such as
  • Expectation–maximization algorithm (EM)
  • Method of moments
  • Blind signal separation techniques, e.g.,
  • Principal component analysis,
  • Independent component analysis,
  • Non-negative matrix factorization,
  • Singular value decomposition.