안내 사항

이 시리즈는 더 이상 업데이트 되지 않습니다. 대신 새롭게 제 github 레포에 jupyter notebook을 기반으로 다시 정리하고 있습니다. 이 작업이 다 끝나고 스스로 이해한 것을 한글로 정리하게 될 때가 오기를 바랍니다.



주의

이 글의 내용은 Hastie, Tibshirani 등이 쓴 책 "The Elements of Statistical Learning"의 순서와 내용을 기반으로 정리한 글입니다. 따라서 잘못된 내용이 있을 수도 있으니 그럴 경우 제보해주시면 감사드리겠습니다.

Machine Learning, Supervised Learning이란?

Machine learning을 아-주 간단하게 축약하자면, 주어진 데이터를 기반으로 판단을 내릴 수 있는 규칙을 만들고 이를 토대로 주어진 데이터 밖에서 예측을 하는 방법이라고 할 수 있다. 이미 잘 분류되어있는 메일들(스팸 vs. 정상)을 가지고 스팸 분류 규칙을 만들고, 새로 메일이 왔을 때 이 메일이 스팸인지 아닌지에 대한 예측을 하고, 그 예측률을 높이고자 하는 노력이 machine learning의 대표적인 예이다. 그 중에서도 확실하게 input과 output의 개념이 정해져 있고, 이러한 input/output 데이터를 바탕으로 output을 예측하고자 하는 분석을 supervised learning 이라고 한다. 방금 예시를 든 스팸 분류 역시 supervised learning이라고 할 수 있다. 앞으로 supervised learning 기법들을 중점적으로 다룰 것이다.

여기서는 간단하지만 강력한 두 가지 예측 기법들을 소개한다. 하나는 Least squares를 통한 선형 모델(linear model)이고 또 다른 하나는 k-nearest-neighbor (이하 kNN)이다. 선형 모델이라는 이름에서 알 수 있듯이, 우리는 이미 데이터가 선형 구조(linearity)를 가지고 있다는 어마어마한 가정을 두고 시작한다. 이 선형성의 가정은 안정적인 예측을 주기도 하지만, 모델 자체가 부정확할 가능성을 갖게 된다. 반대로 kNN은 이러한 선입견을 최대한 배제하고, 있는 그대로의 데이터에 집중한다. kNN이라는 이름을 통해서도 이게 얼마나 단순한 방법인지 알 수 있다. (하지만 중요하다) least squares와 반대로 kNN은 정확하지만, 불안정하다. (예측이 안정적(stable)이라는 것은, 미적분학에서의 연속적(continuous)이다는 것과 비슷한 느낌으로 받아들이면 될 것이다. 느낌만...)

Linear Models and Least Squares

input: \(X_1, X_2, \cdots, X_p\in\mathbb{R}\)

output: \(Y\in\mathbb{R}\)

이미 데이터는 선형 관계를 갖고 있다고 우리는 가정하고 시작한다.

\[Y=\beta_0 + \sum_{j=1}^p X_j\beta_j\]

그리고 여기서 선형 모델을 맞춘다(fit)는 것은 \(Y\)를 \(X\)들로 표현하게 해주는 계수 \(\beta\)를 알고 싶다는 것이다. 진정한 \(\beta\)는 모르지만 나는 어느 정도의 샘플 데이터를 갖고 있으므로, 그 데이터를 통해서 \(\beta\)의 바짓자락이라도 붙잡아보고 싶다. 그렇게 해서 나오게 되는 추정치를 표현하기 위해 모자를 붙여서 \(\hat{\beta}\)로 표현한다. 우리가 열심히 노력해서 \(\hat{\beta}\)을 구했다(고 치자). 그러면 우리가 할 수 있는 일은 계산해낸 \(\hat{\beta}\)와 input 데이터를 이용해 정확히 선형 관계일 때의 \(Y\)값을 구할 수 있다. 이를 fitted value라고 한다. 방금 한 이야기들을 수식으로 정리하면 다음과 같다.

\[\hat{Y}=\hat{\beta}_0+\sum_{j=1}^p X_j\hat{\beta}_j=X^T\hat{\beta}\]

여기서 \(X^T=[1, X_1, \cdots, X_p]\in\mathbb{R}^{p+1},\) 그리고 \(\beta^T=[\beta_0,\beta_1,\cdots,\beta_p]\in\mathbb{R}^{p+1}\)

\(\left( p+1\right)\)차원의 input-output 공간에서, 이미 갖고 있는 데이터와 그 fitted values \((X,\hat{Y})\)는 당연하게도 (왜?) hyperplane을 그린다. X가 상수 1이라는 변수를 가지고 있다면 그 평면은 subspace가 되고, 아니라면 affine space가 될 것이다.

input 입장에서 봤을 때, Y를 X에 대한 함수로 표현한다고 해보면 \(Y=f(X)=X^T\beta\)가 될 것이다. 이 때 \(f\)의 gradient 베타는 steepest uphill direction을 의미한다.

아직 가려운 곳을 긁어주지 못했다. 그래서 \(\hat{\beta}\)을 어떻게 구할건데? 이 것은 아주 중요하고 어려운 문제이지만, 여기서는 그냥 least squares 방법으로 구할 거다. Least squares는 다음 량을 최소화하고 싶어한다. (최소화하는 \(\beta\)를 찾고 싶어한다)

\[RSS(\beta)=\sum_{k=1}^N\left(y_k-x_k^T\beta\right)^2=\left(\mathbf{y}-\mathbf{X}\beta\right)^T\left(\mathbf{y}-\mathbf{X}\beta\right)\]

여기서 소문자 표현 \((x_k,y_k)\in\mathbb{R}^{p+1}, k=1,\cdots,N\)는 실제로 우리가 가지고 있는 \(N\)개의 샘플 데이터를 의미하고 \(\mathbf{X}^T=\left[x_1|\cdots|x_N\right]\) 샘플 데이터로 채워진 행렬이다.

그래서 \(RSS\)가 뭘까? 간단히 말하면 y값과 fitted value의 차이. 조금 더 얘기해보자면 이미 측정한 y값과, 선형 모델이라고 가정해버렸을 시에 측정된 평면과의 거리라고 말할 수 있다. 그리고 이 거리를 최대한 줄일 수 있는 평면을 찾는 것이 least squares 방법이다. 이게 이차-quadratic 함수에 오목(convex)하기 때문에 최소값이 존재하고, 그 최소값을 찾기 위해서 미분을 해서 계산하는 짓은 하지 않겠다. 결론적으로 추정치 \(\hat{\beta}\)는, 만약 \(\mathbf{X}^T\mathbf{X}\)의 역행렬이 존재한다면, 다음과 같다.

\[\hat{\beta}=\arg\min_{\beta}RSS(\beta)=\left(\mathbf{X}^T\mathbf{X}\right)^{-1}\mathbf{X}^Ty\]

이제 \(\hat{\beta}\)을 알았으니 fitted values도 계산할 수 있다.

\[\hat{y}_k=x_k^T\hat{\beta}=\mathbf{H}\hat{\beta}, \text{ 여기서 } \mathbf{H}=\mathbf{X}\left(\mathbf{X}^T\mathbf{X}\right)^{-1}\mathbf{X}^T\]

\(y\)에 모자를 씌워준다는 hat matrix라는 의미에서 H라는 알파벳을 사용한단다. 이렇게 계산된 모든 fitted surface는 p개의 파라미터 \beta로 특정 지어진다. 따라서 선형 모델을 맞추기 위해서는 엄청나게 많은 데이터가 필요하진 않다고 생각할 수 있다. (왜?)

Linear Model in a Classification Context

다음과 같은 데이터가 있다.

input: \(X\in\mathbb{R}^2\)

output: \(Y\in \lbrace 0,1 \rbrace\)

선형 모델을 통해 Y가 0인지 1인지를 구분지어보려고 한다. 데이터만 있으면 우리는 위의 계산을 통해서 fitted value \(\hat{Y}\)를 얻을 수 있을 것이다. 그리고 최종적으로 결정하고 싶어하는 결론을 \(\hat{G}\)라고 하자. 즉, 우리가 가지고 있는 데이터 바깥에서 새로운 \(x\)가 들어왔을 때, 선형 모델을 통해 계산된 \(\hat{Y}\)를 바탕으로 \(\hat{G}=1\)이라고 판단하고 싶은 것이다. 그럼 자연스럽게 떠오르는 규칙은 다음과 같다.

\[\hat{G}=0\text{ if }\hat{Y}<0.5,\text{ or }\hat{G}=1\text{ if }\hat{Y}\geq0.5\]

이 규칙을 통해 (linear) decision boundary \(\lbrace x:x^T\hat{\beta}=0.5\rbrace\)가 정해졌고 두 그룹의 영역이 생긴다.

linear-model-classification-example좌표평면이 input, 색깔 정보가 output을 나타낸다. 선형 모델을 통한 decision boundary 부근에 잘못 분류된 점들이 꽤 보인다.

여기서 decision boundary 부근에서 잘못 분류된 점들에 대해 얘기해보겠다. 우리가 적용한 선형 모델이 잘못된 것일까, 아니면 선형 모델이 옳은 판단이었다 하더라도 애초에 피할 수 없는 오류인 것일까? 당장 왜 잘못 분류되었을까에 대해 생각하기 전에, 주어진 데이터가 어떤 분포에서 나온 것일 지에 대해 생각해보려 한다. 다음 두 시나리오를 보자.

distribution-scenario1시나리오1distribution-scenario2시나리오2

시나리오1에서 우리의 데이터가 나온 것이라면, 선형 모델을 통해 정한 decision boundary는 최선의 선택인 것 같다. (최선의 선택이라는 근거는 추후에 더욱 자세히 설명하겠다) 두 그룹의 분포 상 겹치는 부분은 우리가 어찌할 수 없는 영역이기 때문에, decision boundary 부근에서의 오판은 앞으로의 예측에서도 종종 일어날 것이다.

시나리오2에서는 얘기가 많이 달라진다. 상식적으로 생각해봐도 이 상황에서 linear decision boundary를 긋는다는 것은 적합하지 않다고 생각할 수 있을 것이다. 이럴 때 우리에게 필요한 것이 kNN이다. 다음 글에서는 kNN에 대해 알아볼 것이다.

시나리오에 따라 우리가 무엇을 잘했고 무엇을 잘못했는지가 달라진다. 물론 애초에 저걸 모르기 때문에 machine learning이니 뭐시기니 공부를 하는 것이기에 모순된 느낌이 있긴 하지만, 공부하는 입장에서 내가 쓰는 방법이 어느 상황에서 적합한 선택이 될련지에 대한 좋은 직관을 받을 수 있기에 데이터의 분포에 대한 가정과 함께 분석하는 것이다.

다음 글


  • 횬송이 2017.03.23 15:18


    안녕하세요 패턴인식을 공부하고 있는 학생입니다.
    내용 잘 보았는데요, 궁금한 것이 있습니다.
    input: X1,X2,⋯,Xp∈R
    output: Y∈R
    위에서 언급된 X나 Y는 행렬인가요 벡터인가요?
    벡터라면 열벡터인가요 행벡터인가요..?
    그리고
    X^T=[1,X1,⋯,Xp]∈Rp+1,
    β^T=[β0,β1,⋯,βp]∈Rp+1
    등의 ^T는 transpose 라고 알고있습니다.
    X^T의 경우 열벡터를 transpose 취해서 행벡터로 결과가 나온건가요?
    그리고 1, X1, ...Xp가 의미 하는 것은 그냥 데이터 값인가요..?

    알려주시면 감사하겠습니다.

    BlogIcon 동건 2017.03.23 23:01 신고

    이 글에서의 input, output인 X_1, ..., X_p, Y는 모두 scalar 값을 가지는 real valued variable (∈R)을 나타냅니다. 또한 실제 관측값이 아닌 요인 변수의 의미라고 보시면 됩니다. (보통 통계학에서 random variable을 대문자로, 관측값인 sample은 소문자로 나타내는 것과 일맥상통합니다.)

    따라서 X = [X_1, ... X_p] 는 단순한 p차원 벡터가 됩니다. 그런데 보통 벡터는 column 벡터로 생각하기 때문에, 이 X를 column 벡터로 표현하기 위해서 transpose를 씌워준 것입니다.

    답변이 되었는지 모르겠네요 ^^;; 댓글 감사드려요

  • 횬송이 2017.03.25 23:23

    감사합니다!!

  • 횬송이 2017.03.29 15:19

    안녕하세요 다시 궁금한게 생겨서 댓글 달아봅니다.
    Linear regression of 0/1 Response에서 좌표축이 가로 X1, 세로 X2 인 X벡터의 값에 따라서 Y 출력값이 0.5 이상이면 1, 0.5 아래면 0이라고 알고있는데 그럼 축이 Z축처럼 생기는 의미인가요?
    그렇게 되면 저 Figure는 RED는 1의 값으로 떠있고, BLUE는 0으로 바닥에 존재 하는 것인가요?

    그리고 X^T B = 0.5라는 것은 어떻게 정해지는 것인지 알고 싶습니다.

    마지막으로 decision boundary 부근에 잘못 분류된 점들이 꽤 보인다. - 이 부분은 저 0.5 라는 선의 위와 아래 서로 다른 색의 데이터(원)가 존재한다는 뜻인가요? 그림 상으로 보니 어떻게 적용되는지 이해가 잘 되지않습니다 ㅠㅠ
    답변 부탁드립니다.

    BlogIcon 동건 2017.03.29 20:28 신고

    안녕하세요 :)

    우선 짚어볼 것은요, 예제에서 input 변수는 2개 (X∈R^2), output 변수는 0과 1만을 가지는 binary 변수 (Y∈{0,1})입니다.

    1.
    figure는 횬송이님이 말씀하신 대로 색깔을 z축 (red=1, blue=0)이라고 생각하시면 됩니다.

    2.
    본래 output값은 0과 1만 있지만, least squares로 모델을 fitting하면 그 fitted value (Y_hat 이죠)는 0과 1 사이의 실수값을 가지게 될 겁니다. 그럼 이 값을 토대로 결국 이게 0인지 1인지 결정해야 합니다.

    그 규칙의 하나로 가장 간단한(그리고 공평한?) 방법이 절반을 자르는 방법일 것입니다. 그래서 "자연스럽게 떠오르는 규칙"이라고 쓴 것입니다.

    3.
    횬송이님께서 말씀하신 것이 맞습니다. least squares로 맞춘 linear decision boundary가 모든 자료를 정확하게 맞춘다면, 그 경계에 따라 모든 점들이 분류가 되고, 섞여서는 안될 겁니다.

    figure를 보면 경계를 기준으로 배경색이 다릅니다. least squares가 계산한 예측에 따르면 파랑 배경 구역이 파란색 (G_hat=0)이어야 한다는 말인데, 실제 자료를 보면 파랑 구역 안에 빨강 점들이 있고, 그 반대도 마찬가지라는 얘기입니다.

    도움이 되셨기를 바랍니다;]