이 글은 통계학을 공부하는 과정에서 왜 딥러닝에서 통계가 필요하고 어떤 개념들이 데이터 분석/딥러닝 실무에서 중점적으로 필요한지 개인적으로 정리하기 위한 목적으로 쓴 시리즈 글입니다.
(사실 데이터 분석을 실무를 경험했지만 딥러닝에서는 실무를 경험해보지 않았기 때문에 딥러닝 관점에서는 사실 공부하면서 중요하다고 생각한 개념들이라고 봐주시면 좋을 것 같습니다.)
나조차도 딥러닝 공부하겠다고 그동안 통계공부를 도전해 왔었는데 수학 문제집에서 “집합” 부분만 너덜너덜한 것처럼 항상 평균과 분산, t분포, 중심극한 정리가 공부하다가 이게 앞으로 내가 공부하는 과정에서 왜 필요한지에 대해서 의문을 가져왔는데 해답을 찾지 못해 항상 지지부진했었는데 다시 통계를 공부하기 시작한 시점에서 이를 정리해보려고 합니다.
지금까지 우리는 표본 데이터로부터 적합한 모분포를 찾아내는 방법과 이를 검증하는 방식에 대해서 공부해왔다. 이 때 그래프 시각화와 여러 사전 검정을 통해서 알고 있는 분포를 추려내고 그 분포가 맞는지 검정하는 방식으로 분포를 추정해왔다.
통계학에서는 이후에 갑자기 회귀분석이 나오는데 왜 회귀분석이 필요한지 개인적으로 다시 정리해봤다.
지금까지 봐온 분포들을 보면 특징이 하나 있다. 바로 input(원인, x축의 값)에 따른 결과가 하나라는 점(확률, 분포값, y축의 값)이다.
그렇다면 현실세계를 돌아보자. 나의 수학 성적에 영향을 미치는 요인은 몇개일까?
- 수리사고력
- 끈질기게 공부하는 인내력
- 공부시간
- 시험을 위해 푼 문제집의 수
- ...
위에 적은 것 외에도 영향을 미치는 요인이 굉장히 많을 것이다. 이처럼 현실세계에서 우리가 어떤 값을 예측하거나 분석하고 싶을 때 기본적으로 알고 싶은 정보는 다양한 요인에 의해서 영향을 받을 것이다. 또한 내가 생각한 요인이 실제로는 영향을 안 줄 수도 있다.
이러한 문제를 해결하는 방법이 바로 회귀분석이라고 보면 된다.
사실은 딥러닝 관점으로만 보면 회귀분석은 직접적으로 도움이 될것 같지는 않은 개념이지만 그동안 배운 분포를 떠나서 우리가 모델을 추정하고 어떻게 모델을 추정하는지를 배운다는 관점에서는 도움이 될 것 같아서 단순회귀분석의 원리까지만 정리해보려고 한다.
단순 선형 회귀분석
배경 및 의미
회귀분석의 첫 시작은 단순선형회귀분석을 배우는데 사실 위에서 말한 것처럼 여러 요인들의 효과를 측정하기 위한 목적으로 회귀분석이 등장했기 때문에 대부분의 실무에서는 다중회귀분석이 사용되고 다중회귀분석을 이해하기 위해 단순회귀분석부터 공부하는 것이라고 이해하면 된다.
단순까지 얘기했고 이제 "선형"이라는 단어에 대해 집중해보자.
Simple is the best
통계학에서 "가장 단순한 것이 가장 진실에 가깝다" 라는 오컴의 면도날 이론이 있다. 이 이론의 핵심은 다양한 가능성을 가진 가설들이 있지만 가장 단순할수록 이해하기 쉽고 활용하기 쉽기 때문에 가능한한 단순한 것을 활용하라는 말이다.
선형이라는 의미는 이러한 Simpllicity의 관점에서 잘 작동하는 성질이다. 아래 그래프를 살펴보자.
위의 그래프를 가장 잘 설명하는 식을 그려보면 어떻게 그려볼 수 있을까?
극단적으로 보면 왼쪽 그림은 하나의 그래프를 그려서 정확히 맞지는 않지만 최대한 비슷한 선을 그린 것이고, 오른쪽의 그림은 모든 점들을 정확히 추정하려고 그린 선이다.
왼쪽의 선을 그리기 위한 식은 1차식으로 표현할 수 있을 것이고 오른쪽의 선을 그리기 위한 식은 매우 복잡할 것이다.
그렇다면 어떤 것을 선택하는 것이 좋을까? 당연히 정확도가 높고 다 맞출 수 있는 오른쪽이 좋다.
하지만, 간과한 점들이 몇가지 있다.
1) Irreducible Error
기본적으로 통계는 데이터들이 상시적으로 "제거할 수 없는 오차"(irreducible error)를 가지고 있다고 가정하고 있다. 오른쪽처럼 정확히 모든 데이터를 충족하더라도 실제 우리의 데이터는 오차를 가지고 있기 때문에 완벽한 모델이라고 판정하기 어렵다.
2) 새로운 데이터의 등장
우리가 분포를 찾거나 회귀분석을 하는 이유는 새로운 값에 대해서 "신뢰할만한 예측값"을 얻어내는 것에 있다. 만일 오른쪽처럼 우리가 분석에 돌리는 데이터를 완벽히 충족시키는 식을 세운 후에 다른 데이터가 관찰되었다면 어떻게 될까?(실제로 많은 경우에 데이터가 추가될 수 있다.)
그때마다 또 새로운 분포를 찾아야할까? 딥러닝에서도 나오겠지만 학습데이터(회귀분석을 하기 위한 데이터)에 너무 맞춰진 모델을 만들면 그 모델은 실제 우리가 검증하려는 데이터와 큰 결과값 차이가 나올 수 있다.
3) Inference Cost와 복잡도
지금은 저 그래프의 데이터 갯수가 13개지만, 요즘 같은 시대에 100만개의 데이터를 모두 맞추려면 얼만큼 모델이 복잡해져야할까? 모델이 복잡하다는 것은 어떤 새로운 값을 예측해낼 때(머신러닝에서는 이를 추론,inference라고 한다.) 그만큼 연산하는 비용이 많이 든다는 것이고 실제 모델을 이해하기에도 어렵다는 것을 의미한다.
이러한 이유들로 통계, 머신러닝에서는 최대한 단순한 모델을 지향하고 회귀분석에서는 가장 기본적으로 "선형 모델"을 배우는 것이다.
"선형"이라는 개념은 1차식이라고 생각하면 되지만 1차식이 의미하는 바를 조금 더 설명해보면 가산성과 동차성을 가지고 있다는 점에 유의하면 좋을 것 같다.
함수 f가 아래 2가지 성질을 가지면 선형성을 가진다고 한다.
- 가산성 : 임의의 수 x, y에 대해서 f(x+y) = f(x) + f(y)가 항상 성립한다.
- 동차성 : 임의의 수 x와 a에 대해서 f(ax) = a x f(x)가 항상 성립한다.
단순선형회귀분석 핵심
정리해보면, 단순선형회귀분석은 1개의 변수만으로 예측할 수 있는 모형이라고 보면 된다
사실 회귀분석에서 핵심은 찍은 점들을 감안해서 가장 적합한 선을 찾는 것이 문제인데 이에 대한 상세한 설명은 다른 블로그에도 명확하게 적혀있어서 이 블로그에 따로 적지는 않고, 핵심적인 개념만 정리하려고 한다.
(궁금하신 분은 https://hsm-edu.tistory.com/1196의 포스트를 보셔도 좋을 것 같다!)
빨간색 선과 파란색 선중에 어떤 선이 데이터를 가장 잘 표현할 수 있을까? 대부분의 사람들에게 물어보면 빨간색 선을 선택할 것이다. 그렇게 생각하는 이유는 뭘까?
점들과 빨간색 선이 더 가깝게 위치한다고 인지하기 때문으로 보인다. 여기에서 "거리"의 개념이 등장한다.
이전에 분산은 평균으로부터 얼마만큼 떨어져있는가를 의미해주는 거리 단위라고 얘기를 했다. 이처럼 통계에서는 실제 데이터와 예측값과의 차이를 거리의 개념으로 생각한다는 것만 생각하면 회귀분석에서 적합한 모델을 추출하는 것은 이해하기 쉽다.
여기에서 어떤 거리를 기준으로 가깝다 안가깝다를 판단할 수 있을까?
회귀분석에서는 위에서 얘기한 것처럼 x값에 대해서 실제 y값과 예측값(모델에 x값을 대입해서 나온 값)의 차이를 거리라고 정의한다.
직관적으로 봐도 이해가 된다. 어떠한 모델이 내놓은 결과값과 그리고 실제 값의 차이들을 다 비교해서 가장 작을 때의 모델이 제일 정확도가 높다고 말할 수 있지 않을까?
이 때, 단순히 (예측값 - y)를 다 더하기보다는 분산처럼 제곱을 해서 더해준다. 그 이유는 분산에서와 마찬가지로 부호로 인해서 오히려 차이가 많이 나는 경우를 더 좋은 모델이라고 판단할 수 있기 때문이다.
합으로 표현할 경우 각각의 예측값 차이가 (-3, 3)인 모델이 (1,1)인 모델보다 더 좋다고 판단할 수 있게 된다.
정리해보면 회귀분석에서 이 모델이 현재 데이터를 잘 설명하고 있다의 기준은 예측값과 실제 y값의 차이의 제곱합으로 판단할 수 있다.
어떻게 원하는 모델을 알아낼 수 있을까?
이제 어떤 모델이 좋은지에 대한 기준을 알았다. 우리가 알고 싶은 것은 y = ax + b에서 a,b의 값이다. a,b를 직접 대입해가면서 거리를 계산하고 찾아야할까?
그렇지 않다. (물론 딥러닝에서는 컴퓨터에게 시켜서 직접 a,b를 대입해가면서 답을 찾는다..ㄷㄷ)
다행히 수학적으로 어떠한 가정이 있다면, 바로 해를 구할 수 있다. 이에 대한 증명 내용 역시도 위에 공유드린 포스팅에서 보실 수 있다.
따라서 회귀분석을 수행할때는 실제로 우리가 계산해서 회귀식을 도출하는 경우는 없고 R이나 Python에서 제공하는 라이브러리를 활용해서 실행하고 그 결과를 분석하는 형태로 진행된다.
위의 포스팅을 참고하시면 되는데 혹시나 너 찾아보고 싶으신 분은 회귀분석 최소제곱법을 검색하시면 된다.
모델의 결과를 어떻게 해석할 수 있을까?
크게 세 가지로 보면 된다.
- 결정계수(R-squared) : 앞서 전체 데이터와 모델의 차이의 제곱합은 마치 분산의 식과 유사하다고 얘기한 적이 있다. 이처럼 전체 데이터가 가지는 분산 중에서, 실제 모델이 설명할 수 있는 분산의 비율을 표현한 것으로 모델이 잘 설계되면 전체 데이터가 가지는 분산 중에 많은 부분을 차지한다고 이해할 수 있다.
- 회귀계수(기울기)의 유의성 : 기울기 자체를 0이라는 귀무가설을 세우고 발견되는 오차가 얼마나 기각할정도로 큰지를 판단한다고 보면 된다. 만약에 기울기가 0이라면 모델의 오차는 정규분포를 가지기 때문에 이 역시 T분포로 측정하게 된다. 그래서 이 값이 0.05로 유의수준을 정의했다면 p-value가 0.05 밑이면 회귀계수가 유의하다고 볼 수 있다.
- 3) 회귀계수의 신뢰구간 : 약간의 설명이 필요한데, 오차 자체가 정규분포를 따른다는 가정하에서 회귀식이 작동한다는 점에 집중해보자. 우리가 계산한 회귀모델이 잘 나왔다면, 계수 b1은 최종적으로 모집단의 계수 베타1과 잘 들어맞을 것이고 원래의 모델과 우리가 만든 모델간의 차이에는 정규분포로 동작하는 오차만 존재한다고 볼 수 있다. 하지만 이는 모집단의 분포가 정규분포이기 때문에 일종의 표본분포라고 보이는 데이터들의 오차는 t분포로 근사해서 측정할 수 있고, 우리가 정한 신뢰구간만큼의 오차를 회귀계수가 가질 수 있다.
다중회귀분석으로의 확장
다중회귀분석은 단순회귀분석에서 결과에 영향을 주는 요인이 1개인 것에서 확장해 2개 이상인 변수가 예측에 영향을 주는 경우를 의미한다. 따라서 회귀계수를 추정하거나 거리를 측정하는 것 또한 모두 동일하다.
다만 2차원 식은 그래프로 표현하기 쉽지만, 5차원은 시각화하기 어려운 정도의 차이이지 단순회귀분석만 잘 이해하고 있다면 그냥 확장된 개념이라고 이해하면 된다.
중요한 전제
다중회귀에서 중요하게 나오는게 바로 다중공선성이라는 개념인데, 핵심은 각 변수간에 서로 연관이 없어야한다는 점이다. 쉽게 생각해보면 위에서 예시로 든 수학점수에 영향을 주는 요인으로 공부시간과 끈질기게 공부하는 인내력은 서로 연관이 있을 수 있다. 인내력이 없으면 공부시간이 당연히 짧을수밖에 없을 것이고 인내력이 강한 사람은 공부시간이 길 수밖에 없다.
이처럼 서로 영향을 주는 요인들을 합쳐서 기준으로 예측을 하게 되면 "오컴의 면도날 법칙"처럼 최대한 단순한 모델을 추구하지도 못하고 각 변수간의 영향이 상호간에 영향을 또 줄 수가 있어서 명확하게 해설가능한 모델을 추구하는 통계학의 방식에 어긋난다고 볼 수 있다.
따라서 다중회귀분석을 하기 전에 다중공선성이 있는지 검증을 해야한다.
추후에 나올 개념 : 변수 축소
따라서 통계학에서는 이미 존재하는 변수를 서로 상관관계없는 변수로 축소하거나 변경하는 작업들이 일어난다. 이는 컨설팅에서 자주 접하는 MECE라고 볼 수 있다.
MECE의 뜻은 항목들을 나눴을 때 상호 배타적이면서(교집합 X) 모였을 때는 완전히 전체를 이루는 것(합집합 = 전체 집합)을 의미하는 것으로 우리가 예측하는데 필요한 충분한 변수를 갖추면서도 변수간의 서로 연관성이 없게 하도록 변수를 최소화하는 것이 통계학에서 지향하는 방향이다.
https://ko.wikipedia.org/wiki/MECE
다중회귀분석의 해석
- Adjusted R-Squared : 위의 개념과 동일하지만 여러개의 변수별로 설명가능한 분산을 더하다보니 당연히 변수 갯수가 많아지면 늘어날 수밖에 없다. 이를 방지하기 위해서 변수의 갯수를 보정해주어서 adjusted라는 단어가 붙는다.
- 회귀계수의 유의성 : 위와 동일하게 처리한다. 기존과 동일하게 다른 회귀계수는 그대로 있고, 해당 계수를 0이라고 검정했을 때의 검정을 진행한다.
- ViF : Variance Inflation Factor의 약자로, 아래 식을 따른다. r(i)는 회귀식에서 x(i)변수를 제외하고 계산한 R^2값이다. 보통 10이상이면 해당 변수는 제외한다. 이 식을 풀어보면 ri > 0.9라는 의미인데 i번째 변수가 없어도 충분히 잘 설명할 수 있어서 없어도 된다는 것을 의미한다.
여기까지가 우선은 기본적으로 내가 생각한 통계학 원론에서 기본적으로 알고 있으면 좋을만한 기초 통계 내용이다. 아마 이후부터는 이 카테고리에 쓰게 되는 내용들은 Feature Engineering 단에서의 통계적 이론, 베이지안, 스테이블 디퓨전 등 각 논문에서 사용되는 주요한 통계적 개념들을 정리하는 형태로 글을 작성하게 될 것 같다.
마지막으로 정리해보면, 머신러닝, 딥러닝이라고 하면 결론적으로 어떤 모델에 대한 가설을 세우고 그 모델이 실제로 어떤 결과를 냈는지에 대해서 평가하는 과정은 동일하다.
하지만 통계적 접근방법과 딥러닝의 차이점은 통계적 접근방식은 좀 더 설명할 수 있어야 해서 여러 전제들과 가정들이 많이 들어가는 반면 머신러닝이나 딥러닝은 좀 더 결과를 맞추는데 집중되어 있다고 보시면 된다.
'데이터 분석, 통계 > 통계학 개념 정리' 카테고리의 다른 글
딥러닝/데이터 분석을 위한 통계 - 5편) 가설 검정, A/B 테스트, 표본분포 (1) | 2023.10.17 |
---|---|
딥러닝/데이터 분석을 위한 통계 - 4편) 카이제곱분포, t분포, F분포, ANOVA (1) | 2023.10.17 |
딥러닝/데이터 분석을 위한 통계 - 3편) 정규분포와 중심극한정리 (0) | 2023.10.16 |
딥러닝/데이터 분석을 위한 통계 - 2편) 대푯값, EDA (0) | 2023.10.14 |
딥러닝/데이터 분석을 위한 통계 - 1편) 확률변수, 확률분포 (1) | 2023.10.14 |