Programming & Machine Learning/풀어쓰는 머신러닝

연속형 회귀분석에 대한 전반적인 내용들

Yamarae 2017. 8. 23. 00:49

머신 러닝은 크게 지도학습과 비지도학습, 강화학습으로 나뉜다.

그리고 그 안에서도 분류, 예측, 추천 등의 또 다른 갈래가 있다.


그 중에서 예측 분야의 골조가 되는 알고리즘인 회귀분석의 A부터 Z까지의 대략적인 개념을 정리해 보았다.





1. 회귀 모델이란


먼저 회귀 모델이 무엇인가에 대한 정의가 필요하다.
회귀 모델이란 연속형 스케일을 가진 목표변수를 예측하는 방법 중에 한 가지 모델이다.
지도학습의 일종으로 변수 간 관계, 연관성을 파악하기에 좋고, 가장 단순하면서도 가장 강력한 예측 방법 중 하나이다.
휘황찬란한 딥러닝 알고리즘도, 결국엔 회귀 모델 식 하나로 최종적 판단을 하게 된다.







2. 심플 선형회귀


심플 선형회귀는 단일 설명변수 하나와 연속형 반응변수간의 관계를 모델링 하는 것이다.
y = w_0+w_1 x 의 관계식으로 정의할 수 있는데, 중요한 것은 w_1 으로, 설명변수의 계수이다.
설명변수와 목표변수간의 관계에서는 이러한 설명변수의 계수가 중요하다고 할 수 있다.









2-1. 심플 선형회귀의 최적 피팅


y = _𝑤_0_+_𝑤_1_𝑥 관계식에 따르면,

다음의 그림에서처럼 관측치들 사이에서의 residual(잔차) 최소화 하는 위치를 찾는것이 최적-피팅이다

-> residual 혹은 offset 이라고 부르기도 한다. (예측에 대한 오차)










3. 회귀분석에서의 EDA



다른 종류의 분석 방법과 마찬가지로 회귀분석 역시 탐색적 데이터 분석이 중요하다. 

거의 절반 이상은 먹고 들어간다고 보면 된다.


데이터의 이상치 존재 여부, 데이터의 분포, 피처간의 상관관계등을 면밀히 살펴보아야 한다.

필요하다면 플롯을 그리거나 변수간의 간단한 t-test 혹은 anova 분석을 시행해보자.











4. 회귀 파라미터 추정의 방법 - OLS



최적-피팅을 위해서는 회귀선의 파라미터들을 최적으로 추정해내야 한다.


방법으로 샘플 관측치들의 수직거리의 제곱의 합을 이용하는 순위형 최소제곱(Ordinary Least Square, OLS) 방법을 사용할 있다.

또한 그것과 다른 방법으로 그래디언트 디센트(Gradient Descent) 있다. 










4-1. 그래디언트 디센트(Gradient Descent)




머신러닝에서는 비용함수를 정의하여 최소의 오차를 찾아내는 것이 중요하다

비용함수가 최소가 되는 파라미터 계수 조합을 찾아내는 것이 비용함수의 존재 목적이라고 할 수 있겠다.


회귀분석 역시 마찬가지로 비용(오차) 최소화하게끔 학습하여야 하는데,

회귀분석에서의 비용함수는 제곱 오차합(SSE) 일반적으로 사용한다. 하지만 분석 상황에 따른 적절한 비용함수를 선택하는 것 역시 중요하다.


오차에 제곱을 취하는 이유는, 오차의 양수와 음수값이 합쳐질 경우 최종 결과값이 상쇄되기 때문인데 

최종적으로 그래디언트 디센트는 비용함수의 global minimum 찾아내는 알고리즘이라고 있다.



- epoch, learning rate


에포크는 그래디언트 디센트에서 비용함수를 통해 가중계수들을 조정하는 횟수를 말한다.

학습률은 X피처와 error 행렬 연산한 값에 곱해지는 값으로, 그래프에서는 global minimum 찾기 위해 shift 되는 비율을 의미한다.












5. 회귀 모델의 비용함수에 관해



회귀모델에서 비용함수의 후보로는 SSE, MSE, RMSE, MAPE, MASE 등의 척도가 있다. (더 많은 수치가 있지만, 대표적인 척도들)

위 척도들은 비용함수로 사용되는 것 뿐만 아니라, 최종 모델의 평가 척도로 사용되기도 한다.




RMSE (Root Mean Squared Error) : 


OLS 추정에서 일반적인 표준 오차이다예측 대상의 scale(단위 크기) 주의해야하는 단점이 있다. 

MSE root 수식에서 제외, SSE root 분모를 제외한 수식으로, SE가 붙은 척도들은 거기서 거기인 척도들이라고 보면 된다.

다만 디테일한 사용법에 차이가 있을 뿐.




MAPE (Mean Absolute Percentage Error) :


방법의 단점을 보완한 것이다

At 실제값Ft 예측값인데, 이를 At 나누어서 오차를 절대적 크기로 보는것이 아닌 비율의 크기로 보고자 하는 것이 핵심이다.

방법은 At 0 가까울수록 비정상적인 값이 나온다는 단점이 있다.




MASE (Mean Absolute Squared Error) : 


MAPE 비교하여, 분모의 성질이 다르다. 분모가 의미하는 것은 평소의 변동 폭이라고 할 수 있다

즉, MASE 평소의 변동폭에 비해 얼마나 오차가 나는지를 측정하는 기준이라고 있다.

시계열 예측에 있어서 변동폭이 지표와 낮은 지표를 같이 비교하는 등의 상황에서 쓰인다고 한다.











6. 회귀 문제에서 고려할 사항들




1. 데이터 전처리


- 데이터의 단위 스케일링을 해야한다.

- 범주형 데이터의 경우, 더미변수를 생성해 줘야 한다.

- 차원의 저주를 방지하기 위한 차원축소를 고려한다.



2. 분류형 회귀 문제의 경우


- 집단간의 등분산성, 이분산성을 검정해야 한다.

- 집단간의 독립성을 검정해야 한다.



3. 변수의 관계에 대한 검정


- 변수간의 공선성에 대한 검정이 필요하다.

- 변수간의 correlation 검정해야 한다.



4. 모델 학습의 조정방법


- 모델 특징에 맞는 비용함수 선정이 필요하다.

- 변수 정규화를 통해 영향력이 비정상적인 변수에 벌점 부과한다.


5. 모델의 성능 검증


- SSE, MSE, RMSE
등의 방법으로 모델의 오차에 대해 검증한다.
-
수정계수, F-통계량으로 모델의 성능을 평가하고 가설을 검증한다.









7. 이상치를 제거해주는 회귀 모델 - RANSAC



선형 회귀모델의 경우 이상치에 민감한 영향을 받을 있다

(직선이 그어지는 위치가 이상치의 영향을 받아 이상한 곳으로 그어지는 현상으로 예시를 들 수 있겠다.)

따라서 이상치를 걸러내는 방법의 모델링이 필요하다.

그중에서도 RANSAC (RANdom SAmple Consensus) 알고리즘은 이상치를 걸러내는 강건한 회귀 모델을 만들어내는 방법이다.
알고리즘의 요약은 다음과 같다.

1.
관측 데이터에서 임의로 N개의 서브데이터를 선택
2.
데이터를 데이터(inlier) 가정하고 회귀식을 생성
3.
나머지 데이터들을 회귀식과 맞는지 평가함. 사용자가 설정한 허용 오차 안으로 떨어지는지 확인
4.
허용 오차에 들어오지 않는다면, 위의 과정을 반복하여 실시
5.
서브데이터를 선택함에 있어서, 임의로 추출하기 때문에 Random sample 이라는 이름이 붙는 .

서브데이터를 선택하는 세부적인 알고리즘, 회귀식을 평가하는 기준에 따라 더욱 심화적인 알고리즘이 존재한다.










8. 회귀 모델의 평가 - 오차의 관찰



회귀모델이 다수의 설명변수를 가지는 (다중 설명변수를 사용하는) 경우에는 선형 회귀선과 관측치들을 그래프로 시각화하기 힘들다.

이때 오차의 관찰을 통하여, 회귀 모델을 위한 진단으로 활용할 있다.

회귀를 이용해 모델링을 한다면, 오차의 플롯정도는 찍어보면서 하는 것이 좋다.


또한, 이상치를 관찰하고 자료의 분산성을 확인할 있다는 장점도 존재한다.


그래프가 아닌 잔차 제곱 합의 평균 수치(MSE) 관찰하여 모델을 평가하는 것도 일반적이지만, 개인적으로는 오차를 그래프로 찍어보는 것을 선호한다.









9. 회귀 모델의 평가 - 모델의 성능 평가



모델의 성능에 대해 평가할때는 MSE, RMSE등의 척도를 사용할 있다

하지만 모델 성능에 대한 이해를 돕기 위해 MSE 표준화 버전인 R2 보는 것이 유용하기도 하다.

시중의 초보적인 내용의 튜토리얼들을 보면, 대부분 R2를 통해 모델의 설명력을 간단하게 평가하고 있다.



- 수정 결정 계수 (Adjusted R-squared) : 


다음의 수식이 수정 결정 계수의 수식.




수식을 통해 자세한 의미를 들여다보자.

SST SSE(잔차 변동)+SSR(회귀 변동) 이다.


SSE
실제값-예측값을 제곱한 것의 합이고, SSR 예측값-종속변수의 평균값을 제곱한 것의 합이다

이때 잔차 변동이 0으로 갈수록 최종 수식인 R2 값이 1 가깝게 높아지는데, 

따라서 회귀 방정식이 측정값과 비슷함을 의미하게 된다.


다중 회귀분석의 경우, R2 값의 변화를 기준으로 탐색적 변수 선택을 진행할 있다는 점을 염두에 두자.


수정 결정 계수 외에도 모형 전체의 가설에 대해 유의성을 검정하기 위해 F-통계량을 확인하는 것이 일반적이다. (심플 선형회귀의 경우 t-test)



F통계량은 전체 회귀 모형 식에서 SSE 작을수록, SSR 수록 증가한다

이를 통해 F통계량이 수록 검증이 되었다고 있고, F-통계량에 대한 유의도는 p-value 확인 가능하다. (0.05 이하이면 유의미)










10. 회귀 모델을 위한 피처 정규화



회귀모델의 파라미터가 복잡해짐에 따라 오버피팅의 염려가 생기게 된다.

이러한 오버피팅을 방지는 가지 방법은, 피처 정규화 방법이다.


이것의 메인 아이디어는 모델의 파라미터 조합이 복잡해짐에 따라 오버피팅이 증가하므로, 복잡도에 페널티를 부과하자는 것이다.


비용함수에 추가적인 정보를 더함으로써 변수의 파라미터 값을 수축시게 된다. (최소제곱 비용함수에 벌칙점수를 더함). 

파라미터 값을 수축시킴으로써 중요하지 않은 변수에 해당하는 계수의 절대값을 낮춘다.


, 그림 1처럼 오버피팅된 모델이, 중요하지 않은 파라미터가 축소됨에 따라 그림 2처럼 되는 이라고 할 수 있다.




대표적인 정규화 방법으로 릿지(Ridge regression), 라쏘(Least Absolute Shrinkage and Selection Operator, LASSO), 엘라스틱넷(Elastic Net) 회귀모델이 있다.



- 라쏘 회귀분석 : 원래의 비용함수 + (w들의 절대값의 *  λ)

라쏘 회귀분석의 경우는 계수가 0 되는 경우가 존재하기 때문에, feature selection 효과를 포함하고 있다.



- 릿지 회귀분석 : 원래의 비용함수 + (w 절대값의 제곱합 *  λ)

반면에 릿지 회귀분석은 계수가 0 되지 않기 때문에 변수를 완전히 배제하지 않는다고 있다.



- 엘라스틱넷 회귀분석 : 원래의 비용함수 + (w 절대값의 제곱합 *  λ) + (w들의 절대값의 *  λ)

위의 가지 방법을 합한 것으로, 알고리즘의 장단점을 모두 포함하고 있는 하이브리드 방법.


교차검증을 통해 좋은 λ들의 값을 찾는것도 고려해야 한다.











11. 선형 회귀 모델의 곡선화 혹은 다항 회귀 변환



설명변수와 반응변수간의 관계에 있어서 선형성을 가정하는 보다

다항항을 추가하거나 피처의 형태를 변환하여 곡선 모양의 다항 회귀로 변환하는 것이 효율적일 가 있다. 


y = _𝑤_0_ + _𝑤_1_x + _𝑤_2__𝑥_2_+ … + _𝑤_𝑑__𝑥_𝑑_ 식에서, 뒤의 개의 다항 항을 추가하는 방법이 그것이다.

혹은 x log x 등의 다른 피처로 변환하는 방법도 있다.



아래의 그림을 보자.

만약 좌측 상단의 그림이 원래 모델에서 가정한 선형성이라고 때,
선형성에 대한 가정을 위반하여 피처를 log 함수로 바꾼 오른쪽의 경우에  정확한 모델이 되었다.


하단의 그림도 마찬가지로, 선형성을 위반하여 다항항을 추가한 오른쪽 모델이 자료를 더욱 설명하고 있다.










추가1. 의사결정나무를 사용한 비선형 회귀




의사결정트리를 사용하여 회귀를 진행하는 경우, 회귀 함수는 조각으로 나누어진 선형함수의 합으로 표현이 된다.

이유는 의사결정트리가 특정 조건에서 분기하는 알고리즘이기 때문.


의사결정트리 회귀 문제에서는 노드 분기의 기준이 entropy gini 아니라 MSE 대체된다. 이러한 방법으로 분류가 아닌 회귀를 의사결정트리에서도 사용이 가능하다.


그래프를 보면 일반 회귀 모양과 다르게 계단형 회귀 모양의 형태를 띠는데,  일반적인 경향을 나타내지만 연속성이나 식별 가능성을 포착하지는 못한다.


하지만 의사결정트리는 피처 변형이 필요 없다는 (매우 큰)장점이 있다.


따라서 여러 회귀 알고리즘을 적용해보기 전에, 가볍게 시도해보기 좋은 회귀 알고리즘이다.










추가2. 랜덤 포레스트회귀



랜덤포레스트는 의사결정트리의 앙상블 기법(여러 개의 의사결정트리 모델을 결합하여 투표하는 방식)이기 때문에

당연하게도 의사결정트리보다 좋은 일반화 성능을 가진다.

또한 의사결정트리의 장점을 대부분 가지고 있으면서도 모든 트리의 예측 평균을 예측값으로 하기 때문에 더욱 정확하면서도 식별 가능성을 띤다. ( 계단화된 회귀곡선)