brunch

You can make anything
by writing

C.S.Lewis

by 권순목 Jul 28. 2021

3.2 지도 학습 모델

데이터 과학 미니북 - 3. 데이터 분석

3.2 지도 학습 모델


앞서 살펴 본 기초 통계 분석 기법은 데이터의 내용을 설명하는데 초점을 맞춥니다. 특정 변수의 평균값이 어떠한가? 변수가 어떻게 분포하고, 변수들 사이의 상관 관계가 어떠한가? 같은 질문에 답합니다. 이런 식의 분석은 특별한 분석 목적이 없어도 데이터가 주어지면 기본적으로 해 볼 만한 것들입니다.


분석 목적이 정해지면 그때부터는 모델을 동원해서 좀 더 복잡한 분석을 해 볼 수 있습니다. 목적에 따라 사용 가능한 다양한 모델이 있고, 그 모델들을 분류하는 방식도 몇 가지가 있는데, 모델을 학습 시키는 방식에 따른 분류는 다음과 같습니다.


지도 학습 (Supervised Learning) 모델

비지도 학습 (Unsupervised Learning) 모델

준 지도 학습 (Semi-Supervised Learning) 모델

강화 학습 (Reinforcement Learning) 모델


이 책에서는 지도 학습과 비지도 학습에 대해서만 간단히 알아보는데, 본 단원에서는 가장 접근하기 쉽고 널리 쓰이는 모델인 지도 학습 모델에 대해서 다루며, 대표적인 지도 학습 모델 4가지를 간단히 소개합니다. 지도 학습은 예측을 목적으로 하는 모델을 피쳐레이블 변수들을 이용해서 학습 시키는 것을 말합니다. 레이블 변수를 포함한 데이터셋을 정답 데이터셋 또는 정답셋이라고 부릅니다.


3.2.1 선형 회귀 모델 (Linear Regression)


선형 회귀 모델은 모델 함수가 선형 함수(1차 함수)로 이루어져 있는 경우를 말합니다. 그러니까, 피쳐 변수가 x1, x2, x3 이고, 레이블 변수가 y 인 경우 모델은 다음과 같은 1차 함수의 형태가 됩니다.



여기서 a, b, c, d 값은 데이터를 통한 학습으로 얻어지는 값이며, 모델의 인수(parameter)라고 불립니다. 함수의 형태에서 알 수 있듯이, 선형 모델은 피쳐 및 레이블 변수가 수치형 변수일 때만 사용 가능합니다. 범주형 피쳐 변수를 사용하고 싶은 경우 수치형으로의 변환이 필요합니다.


[표 1] 2000년대 미국 뉴욕 지역 부동산 가격


[표 1]은 미국 뉴욕 지역의 부동산 통계 데이터 일부를 발췌한 것입니다.[1] 이 데이터에서 가격을 예측하는 선형 모델을 몇 가지 만들어 보겠습니다.


우선 면적 변수만 피쳐로 사용한 경우의 선형 모델은 다음과 같습니다.



[그림 1]은 이 선형 모델을 실제 가격, 면적 데이터 위에 겹쳐 그린 것입니다. 그림에서 파란 선이 선형 모델이 그리는 선으로, 데이터의 추세를 어느 정도 반영해 준다는 것을 확인할 수 있습니다. 그림에서 붉은 선은 선형 모델이 예측한 값과 실제 가격 사이의 오차입니다. 선형 모델의 인수는 이 오차들을 최소화 하는 방향으로 학습됩니다.


[그림 1] 선형 모델: 가격 ~ 면적


일반적으로 머신 러닝 모델에서 예측 값과 실체 측정값의 차이를 손실(Loss) 또는 손실 함수(Loss Function)라고 하는데, 하는데, 선형 모델의 경우 손실 함수는 다음과 같이 정의되고, 그 의미는 평균오차제곱(Mean Squared Error) 입니다.



N : 데이터 개수

y_hat_i : i 번째 데이터 레이블 예측값

y_i : i 번째 데이터 실제 레이블


부동산 데이터에서 가격을 예측하기 위해 ‘나이’ 변수만 피쳐로 사용하는 선형 모델을 만들면 다음과 같습니다:



앞서 면적만 사용한 경우는 선형 모델에서 면적이 1증가 할 때 가격이 130씩 증가하는 것으로 예측되었는데, 나이의 경우는 1 증가 할 때 마다 가격이 1331씩 감소하는 것으로 예측되었습니다. 선형 모델은 이런 식으로 한 변수가 다른 변수에 미치는 영향을 수치화 하기 쉽다는 장점이 있습니다. 가격 ~ 나이 선형 모델을 그래프로 시각화 하면 [그림 2]가 됩니다.


[그림 2] 선형 모델: 가격 ~ 나이


선형 모델은 앞서 살펴 본 것처럼 변수 하나씩만 넣어서 만들어야 하는 것이 아닙니다. 여러 변수를 한꺼번에 넣어서 만들 수도 있습니다. 부동산 데이터의 모든 피쳐 변수를 다 활용한 선형 모델은 다음과 같이 학습 됩니다.



이 모델에서 ‘나이’ 변수의 인수는 235로, 앞서 나이 변수만 활용하는 모델에서 -1331 이었던 것에 비해 큰 변화가 있었습니다. 왜 이렇게 되는 것일까요? 우선 [그림 2]를 다시 한번 살펴 보면, [그림 1]에 비해 오차가 상당하다는 것을 확인할 수 있습니다. 이런 오차는 모델에 따라 인수에 큰 차이가 날 수 있는 요인이 됩니다. 또 다른 이유는 각 모델에서 인수의 의미 자체가 다르다는 것입니다. 다변량 모델에서 나이 변수의 인수 235의 의미는 면적, 방, 욕실, 등 나머지 변수들이 고정된 상태에서 나이가 1 증가할 때 가격이 235 증가한다는 것으로, 앞서 나이 변수 하나만 들어가는 모델의 경우와는 차이가 있습니다.


선형 회귀 모델은 모든 모델 중에서 가장 단순한 모델이라고 해도 과언이 아닙니다. 그러나 이 모델은 또한 통계학에서 가장 오랫동안 검증된 모델이기도 합니다. 선형 회귀 모델의 성능은 최근 머신 러닝 모델들에 비하면 낮습니다만, 모델 예측 값에 대한 분석을 통해 얻을 수 있는 정보는 생각보다 많습니다. 선형 모델은 다른 복잡한 모델을 시도해 보기 전에 기본적인 데이터의 특성을 체크하는 용도로도 많이 사용됩니다.



3.2.2 나이브 베이즈 모델 (Naïve Bayes)


고등학교 수학 시간에 배우는 베이즈 조건부 확률 정리는 다음과 같이 생겼습니다.



P(B|A) : A 사건이 일어난 상황에서, B 사건이 일어날 확률

P(A, B) : A, B 사건이 모두 일어날 확률

P(A) : A 사건이 일어날 확률


베이즈 확률 공식의 도움을 받아 원하는 예측 결과를 확률의 형태로 제공하는 모델이 나이브 베이즈 모델입니다. 이 모델의 함수는 확률 밀도 함수들로 구성되어 있습니다. 위키피디아에 나오는 성별 분류[2] 사례를 이용하여 이 모델을 좀 더 살펴 보겠습니다.


[표 2] 성별 신체 측정 데이터


[표 2] 데이터에서 키, 몸무게, 발치수는 피쳐 변수, 성별은 레이블 변수입니다. 우리가 원하는 모델은 다음과 같은 함수인데요,



나이브 베이즈 모델 함수는 확률 표기법으로 다음과 같이 생겼습니다.



이것의 의미는 ‘키, 몸무게, 발치수가 주어진 상황에서 성별의 확률’로서, 우리가 원하는 내용과 정확히 일치합니다. 이제 계산만 하면 되는데, 저 상태로는 [표 2]의 데이터를 통해 계산해 내기가 어렵기 때문에 베이즈 정리의 도움을 받아 확률 식을 다음과 같이 뒤집습니다. 베이즈 정리를 활용한 조건부 확률식 전개의 세부 과정은 생략 합니다.



나이브 베이즈 모델은 여기서 키, 무게, 발 세 변수는 서로 독립이라고 가정하고 다음과 같이 추가로 더 정리합니다.



여기에서 중요한 것은 분자 값입니다. 분모는 고정된 값이기 때문에, 분자만 알면 다음과 같이 각 성별에 해당하는 확률을 비교할 수 있습니다.


P(성별=남성|키,무게,발) ∝ P(키|성별=남성) ∙ P(무게|성별=남성) ∙ P(발|성별=남성) ∙ P(성별=남성)

P(성별=여성|키,무게,발) ∝ P(키|성별=여성) ∙ P(무게|성별=여성 ∙ P(발|성별=여성) ∙ P(성별=여성)


P(성별=남성), P(성별=여성) 두 개 확률은 데이터에서 쉽게 찾아낼 수 있습니다. 이제 P(키|남성), P(무게|남성), P(발|남성), P(키|여성), P(무게|여성), P(발|여성) 여섯 개의 확률 값(즉, 확률 밀도 함수)만 알아내면 모델이 완성되는데, 나이브 베이즈 모델은 모든 변수가 정규 분포(Normal Distribution, Gaussian Distribution)를 따른다고 가정하고, 데이터를 통해 정규 분포 인자를 추정하여 이들 확률 밀도 함수 들을 확정합니다.


이상이 나이브 베이즈 모델을 학습하는 과정입니다. 이제 완성된 모델을 이용하여, 키, 무게, 발치수가 주어졌을 때의 남자, 여자일 확률을 비교할 수 있습니다.


나이브 베이즈 모델이 나이브(a.k.a. 단순 무식)라는 수식어를 달고 있는 이유는 모델을 학습할 때 사용하는 다음 두 가지 가정 때문입니다.


변수들이 서로 독립이라는 가정

변수들이 정규 분포를 따른다는 가정


이러한 가정이 통하지 않는 데이터라면 나이브 베이즈 모델을 사용할 근거가 없다고 할 수 있습니다. 그러나, 저 정도의 가정은 데이터 가공을 통해 어느 정도 맞춰줄 수 있는 여지가 있습니다. 또한, 나이브 베이즈 모델은 저러한 가정이 통하지 않는 데이터를 가져다 적용해도 쓸만한 성능을 내는 경우가 많습니다. 꽤 광범위하게 사용할 수 있다는 뜻 입니다. 사실 나이브라는 수식어를 달고 있지 않은 머신 러닝 모델 중에도 데이터에 대해 이런 저런 가정을 하고 있는 경우는 많습니다. 베이즈 모델만 나이브하다는 수식어를 달고 다니는 것은 어찌 보면 억울한 일 일수도 있겠습니다.


나이브 베이즈 모델과 관련해서 베이즈 확률론(Bayesian Probability) 용어를 알아두면 좋습니다. 베이즈 확률론에서는 어떤 관측이 있기 전의 확률을 사전 확률(Prior), 관측 결과로 조정된 확률을 사후 확률(Posterior)이라 부르는데 앞서 만든 성별 모델에서 사전 확률은 P(성별)이고, 사후 확률은 P(성별|키, 무게, 발)입니다. 즉, 베이즈 확률론에서 사후 확률이라 부르는 것이 곧 나이브 베이즈 모델이 계산하는 값입니다.


이번 단원에서 다룬 성별을 예측하는 모델은 레이블 변수가 범주형 변수였습니다. 머신 러닝에서 예측 대상 변수가 범주형인 모델은 분류 모델(Classification Model, Classifier), 예측 대상 변수가 수치형인 모델은 회귀 모델(Regression Model, Regressor)이라고 구분해서 칭하기도 한다는 것도 알아두시면 좋습니다.


3.2.3 의사 결정 트리 모델 (Decision Tree)


우리는 어떤 결정을 내릴 때 여러가지 변수를 한꺼번에 고려하지 않고, 가장 중요한 변수부터 하나씩 고려하는 경향이 있습니다. 예를 들어 신발을 사려고 할 때 [그림 3]과 같은 의사 결정 과정을 거칠 수 있는데, 여기에서는 1) 발에 맞는 지 여부, 2) 가격이 적절한 지 여부 3) 디자인이 좋은지 여부, 세 개 변수가 차례로 하나씩 고려되었습니다.


[그림 3] 신발을 구매할 때의 결정 과정


널리 쓰이는 머신 러닝 모델 중 하나인 의사 결정 트리는 레이블을 예측할 때 이러한 의사 결정 과정을 활용합니다. 이 모델이 트리(나무)라 불리는 이유는 [그림 3]같이 결정 과정을 그려놓으면 그 모양이 위에서부터 자라면서 각 결정 단계에서 가지를 치는 나무 형태이기 때문입니다. 트리 모델의 예측 함수는 그 나무 자체라고 할 수 있습니다.


앞서 기초 통계 분석에서 살펴본 붓꽃 데이터에서 다음 예측 모델을 세운다고 해 보겠습니다.



가장 널리 쓰이는 의사 결정 트리 모델 알고리즘인 CART(Classification And Regression Tree)를 활용하여 만든 트리 모델은 [그림 4]와 같이 생겼습니다.


[그림 4] CART 붓꽃 품종 분류 모델


이렇게 간단한 결정 과정으로 붓꽃 품종이 잘 분류 될까요? 이 모델에 붓꽃 데이터의 150개 측정값을 다 넣어서 분류한 결과는 다음과 같습니다.


[그림 5] CART 붓꽃 품종 분류 모델 – 150개 측정값 분류 결과


모델이 분류를 잘못하는 경우는 virginica 를 versicolor로 잘못 분류한 것 5개, versicolor를 virginica로 잘못 분류한 것 1개로 150개 중에 단 6개뿐 입니다. 붓꽃 데이터가 원래 어려운 데이터가 아니기는 하지만, 트리 모델의 성능을 단적으로 보여주는 예라고 할 수 있습니다.


[그림 5]의 데이터 분류 결과에서 한가지 더 살펴 볼 것은, 분류의 결과로 트리 아래쪽으로 내려갈수록 데이터의 엔트로피가 낮아지고 있다는 것입니다. 처음에 각 품종이 1:1:1로 섞여 있었던 데이터는 트리를 내려가면서 어느 한 품종이 다수를 차지하는 방향으로 바뀝니다. 사실 트리 모델을 학습하는 과정에 엔트로피 개념이 사용됩니다. 대부분의 트리 모델은 어떤 조건으로 데이터를 쪼갰을 때, 쪼개진 데이터들의 엔트로피가 가장 낮아지는 지 계산하면서 모델을 만들어 갑니다. 붓꽃 품종 모델의 경우 전체 데이터에 적용 했을 때 가장 엔트로피를 낮춰주는 조건은 ‘꽃잎 길이 2.5’ 였고, 그 조건이 가장 먼저 적용된 것입니다.



3.2.4 신경망 (Neural Network)


[그림 6] 뇌 신경 세포


인간의 뇌 신경 세포(Neuron)는 [그림 6]과 같은 구조로 생겼고, 여러 곳에서 오는 신경 전달 물질을 입력으로 받아서, 다른 곳으로 전달하는 일을 합니다. 이때 신경 세포는 입력을 그대로 전달하는 것이 아니라, 입력들이 특정 임계점(threshold)을 넘을 경우만 활성화(activation)되어 출력을 내보냅니다. 신경 세포들은 [그림 7]과 같이 여러 개가 얽혀서 다단계의 입출력을 형성하며, 이를 통해 복잡한 사고 결정을 내린다고 알려져 있습니다.


[그림 7] 다단계로 엮인 뇌 신경 세포


신경망 모델은 이러한 뇌 신경 세포 조직을 모방하여 만들어진 머신 러닝 모델입니다. 신경망 모델에서는 뇌 신경 세포 하나를 선형 회귀 모델 하나에 대응시키고, 앞서 설명한 활성화 기능만 더 추가합니다. 그 결과로 뇌 신경 세포 하나는 [그림 8]과 같은 수식이 됩니다. 수식에서 a∙x1+b∙x2+c∙x3+d∙x4+e∙x5+f 는 선형 회귀 모델이고, f_activation() 함수는 활성화를 결정하는 함수입니다. 활성화 함수로는 다양한 것들이 있습니다. 예를 들어 회귀 모델 결과값이 0보다 클 때만 값을 내보내는 것도 있고, 0보다 크면 1 아니면 -1을 내보내는 것도 있습니다.


[그림 8] 뇌 신경 세포 모방 수식


뇌 신경 세포를 모방한 수식을 활용하여, 다단계 뇌 신경 세포 구조를 모방한 모델을 만드는 것이 신경망 모델입니다. 예를 들어 붓꽃 데이터를 이용하여 품종을 분류하기 위한 모델은 [그림 9]와 같이 생겼습니다. 신경망의 경우 출력이 수치형이기 때문에, 품종 분류를 위해서는 각 품종별 점수를 뽑아내어 가장 높은 점수를 얻은 품종을 모델의 최종 예측값으로 하도록 하였습니다.


[그림 9] 붓꽃 품종 분류 신경망


이 그림에서 원 하나가 각 신경 세포에 해당하는데, 여기에는 3단계에 걸쳐 총 11개의 세포가 사용되었습니다. 이 신경망 모델은 선형 회귀 모델 11개 수준의 복잡도를 가진 모델이라고 할 수 있습니다. 쉬운 예를 들기 위해 붓꽃 데이터에 적용했지만, 원래 이런 복잡한 모델은 붓꽃 데이터 같이 단순한 데이터에는 사용할 필요가 없습니다. 훨씬 더 복잡하고 큰 데이터에 적용했을 때 효과를 볼 수 있습니다.


[그림 9] 모델은 왼쪽에서 부터 3단계로 구성되어 있는데, 각 단계 사이의 신경 세포들은 빈틈없이 촘촘하게 연결되어 있습니다. 이렇게 촘촘하게 연결되는 계층을 완전 연결 계층(Fully Connected Layer) 이라고 부르는데, 초기 신경망 모델들은 대부분 이러한 완전 연결 계층만 이용하여 만들어졌습니다. 그러나 시간이 지나면서 완전 연결 계층 외에도 여러가지 다른 연결 특징을 가지는 계층들이 개발되어서 사용되고 있습니다. 대표적인 것으로 합성곱 계층(Convolution Layer)을 활용한 합성곱 신경망(Convolutional Neural Network, CNN), 순환 계층(Recurrent Layer)을 활용한 순환 신경망(Recurrent Neural Network, RNN) 등이 있습니다.


신경망 모델은 머신 러닝 모델들 중 가장 빠르게 발전하고 있는 분야이고, 소위 AI라고 불리는 응용들, 예를 들어 이미지 인식, 자연어 인식, 챗봇(Chatbot) 등의 영역에서 사용되는 복잡한 모델들은 전부 신경망[3] 모델로 만들어지고 있습니다. 자연어 모델로 유명한 것으로는 구글에서 만든 BERT(idirectional Encoder Representations from Transformers), Open AI의 GPT(Generative Pre-Training) 등이 있습니다. 이러한 모델들은 선형 회귀 모델 수백만 개에 해당하는 복잡도를 가지고 있습니다.





[1] Dick De Veaux (2015) "How much is a fireplace worth?" Stats 101: A resource for teaching introductory statistics, American Statistical Association

[2] https://ko.wikipedia.org/wiki/나이브_베이즈_분류

[3] 신경망(Neural Network)과 심층신경망(Deep Neural Network)은 약간의 의미 차이가 있으며, 여기서 언급되는 것들은 엄밀하게 따지면 전부 ‘심층신경망’이라고 불려야 합니다. 다만, 현실적으로 지금 쓰이는 신경망 중에 심층신경망이 아닌 것은 없으므로, 이 책에서는 굳이 두 용어를 구분하지 않았습니다.



이전 10화 3.1 기초 통계 분석 (하)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari