모형 만들고 예측값 산출했다 "그 다음은?"
모형 만들고 예측값 산출했다 "그 다음은?"
  • 이웃집편집장
  • 승인 2017.11.01 16:49
  • 조회수 7727
  • 댓글 0
이 기사를 공유합니다

이전 글 보기 -> Ridge와 Lasso Regression을 이해하려면?

 

원제 : Ridge와 Lasso Regression의 쉬운 풀이 - 1 -

 

 

왜 linear regression 대신 Ridge, Lasso를 선택할까

 

-------------------------------------------------------------------------------
[목차]
1. Simple models for Prediction
2. Linear Regression
3. The Line of Best Fit
4. Gradient Descent
5. Using Linear Regression for Prediction
6. Evaluate your Model - R square and Adjusted R squared
7. Using all the features for Prediction
8. Polynomial Regression
9. Bias and Variance

10. Regularization
11. Ridge Regression
12. Lasso Regression
13. ElasticNet Regression
-------------------------------------------------------------------------------

 

Keywords
#overfitting, #underfitting, #bias_and_variance, #regularization, #Ridge_regression, #Lasso_regression, #L1_regularizaiton, #L2_regularization, #ElasticNet_regression, #Python구현

 

8. Polynomial Regression(다항회귀)

 

이 회귀 분석 기법에서 최적 곡선은 직선이 아닌 커브 형태입니다. 2차 회귀 또는 2차 다항식 회귀모형은 다음 방정식을 따릅니다.
Y =Θ1 +Θ2*x +Θ3*x^2
plot도 함께 보시죠.

 

이차 방정식이 단순 선형 방정식보다 실제 데이터에 더 잘 맞는 것을 알 수 있습니다. 그렇다면 이 경우에는 2차 회귀 모형의 R-Sqaure값이 단순 선형 회귀의 것보다 크겠죠? 네, 맞습니다. 왜냐하면 2차 회귀 모형이 실제 데이터와 유사한 모습을 보이니까요. 일반적으로 2차 및 3차 다항식이 많이 활용되지만, 더 높은 차수의 다항식을 대입해 볼 수도 있습니다.

 

아래는 6차 다항식의 모습을 보여주는 그래프입니다.

 

고차원 방정식이 더 데이터와 그럴듯하게 맞아 떨어지지요? 그렇다면 위 예제와 같은 경우에는 항상 고차원 방정식을 쓰는 것이 맞다고 생각하시나요? 아쉽게도 그렇지 않습니다. 만일 위의 그림과 같은 model을 산출하였다면 그것은 train set에 잘 맞는 것이지, train set이 아닌 다른 데이터 셋에서는 그 관계 설명에 있어서 실패할 수 있기 때문입니다. 

 

따라서 위의 6차 방정식을 test set에 적용한다면 성능은 train set에서 얻어진 것보다 훨씬 안 좋게 나올 수 있습니다. 이러한 문제를 과적합(over-fitting) 이라고 합니다. 다른 말로 표현한다면 모델이 high variance와 low bias를 가지고 있다고 있다고 말할 수 있습니다. (variance와 bias에 대해 잘 모르시겠다면 다음 연재 글을 참고하세요. 조만간 업데이트 하겠습니다. 지금은 그냥 이런 게 있다 정도로만 이해하시면 되겠습니다.)

 

유사하게 underfitting이라는 문제도 있습니다. 이것은 우리 모형이 train set에서도 맞지 않고 new data에도 설명되지 않을 때를 말합니다.

 

우리 모형은 high bias와 low variance를 가질 때 underfit 되었다고 말할 수 있습니다.

 

9. Bias and Variance in regression models

 

bias와 variance는 정확히 무슨 뜻일까요? 양궁 과녁의 예를 보면서 이해해봅시다.

 

만일 우리가 error값이 작은 모형을 완성했다고 가정해봅시다. 이는 low bias, low variance를 가지고 있는 왼쪽 상단의 그림을 뜻하는 거겠지요. 보시다시피 모든 데이터 점들은 다 빨간색 과녁에 위치하고 있습니다. 여기서 variance가 증가하게 된다면, 데이터 점들의 분산은 예측력을 좀 더 떨어뜨리게 될 것입니다. 그리고 bias가 커지게 되면 실제값과 예측값의 오차는 커지게 되구요.

 

그렇다면 완벽한 model을 만들기 위해서는 bias와 variance가 어떻게 균형을 이뤄야 할까요? 아래 그림을 살펴봅시다.

 

우리가 모형에 더 많은 변수를 넣게되면, 복잡성은 증가하게 되고, 이는 variance는 늘어나고 bias는 줄게 되는 영향을 미칩니다(좀전에 이야기했던 overfitting의 경우를 상상해보시면 됩니다.). 따라서 우리는 bias의 감소가 variance의 증가와 같아지는 최적의 point를 찾아야 합니다. 

 

하지만 안타깝게도, 실제로 이 지점을 찾을 수 있는 분석 방법은 없습니다. 그렇다면 어떻게 high variance나 high bias를 다뤄야 할까요?

 

underfitting과 high bias를 극복하기 위해서는 모형에 새로운 변수를 추가하면서 model의 복잡도는 증가하고 high bias를 줄이는 방법을 택해야 합니다.

 

그렇다면 overfitting문제는 어떻게 해결할까요? overfitting 해결 방법은 2가지가 있습니다.

 

ㆍ모형의 복잡도 줄이기
ㆍ정규화(Regularization)

 

다음 장에서는 'Regularization'에 대해 자세히 알고 모델을 보다 일반화하기 위해 이를 사용하는 방법을 알아봅시다.

 

* 이번 '9.Bias and Variance in Regression models'이 잘 이해가 가지 않으셨다면 제 다음 글을 참고하십시오. 조금 더 느린 호흡으로 설명 드리겠습니다.

 

10. Regularization

 

당신은 모형도 만들었고, 예측값 산출에도 성공했습니다. 근데 왜 regularization에 대해 공부해야 할까요? 꼭 필요한 것이긴 할까요?

 

만일 당신이 연속형 변수를 예측하는 과제를 가진 대회에 참가했다고 해봅시다. 배운대로 linear regression을 대입하여 값을 예측했습니다. YES! 당신은 leaderboard에 올랐네요. 근데 이상하게도 당신의 랭킹 위에도 많은 사람들이 있네요. 모든 것을 배운대로 완벽히 처리하였는데 왜 그들과 차이가 있을까요?

 

Everything should be made simple as possible, but not simpler. - Albert Einstein

 

우리가 했던 것은 'simpler'였고, 모두가 할 수 있는 것입니다. 하지만 이번 시간에는 'making it simple'에 대해 알아봅시다. 이것이 우리가 정규화를 통해 코드를 최적화하려고 하는 이유입니다.

 

정규화에서는 보통 같은 수의 변수를 유지하면서 계수 j의 크기를 줄이는 일을 합니다. 계수를 줄이면서 나아지는 것이 무엇이냐구요?

 

우선 Python을 이용하여 변수의 계수를 찾아봅시다.

 

#checking the magnitude of coefficients

 

여기서 우리는 Outlet_Identifier_OUT027과 Outlet_Type_Supermarket_Type3(last 2)의 계수가 다른 계수들에 비해 월등히 높음을 알 수 있습니다. 상품의 총 판매량은 이 두 변수에 의해 더 크게 좌우될 것입니다.

 

그렇다면 model에서 계수의 크기는 어떻게 줄일 수 있을까요? 이 문제를 해결하기 위해 정규화를 사용하는 여러 유형의 회귀 방법론이 있습니다. 다음 장부터는 이 방법론들에 대해 알아봅시다.

 

*본 글은 https://www.analyticsvidhya.com/blog/2017/06/a-comprehensive-guide-for-linear-ridge-and-lasso-regression/의 일부분을 번역+약간의 의역을 하였습니다. 중간중간 저의 개별적인 설명은파란색 글씨로 써두었습니다.

 

<외부 기고 콘텐츠는 이웃집과학자 공식 입장과 다를 수 있습니다>

 

월급쟁이(hwpark0502@gmail.com)

늘 재밌게 살고싶은 월급쟁이의 데이터 이야기

원문 출처 : https://brunch.co.kr/@itschloe1/11


댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.

  • 충청남도 보령시 큰오랏3길
  • 법인명 : 이웃집과학자 주식회사
  • 제호 : 이웃집과학자
  • 청소년보호책임자 : 정병진
  • 등록번호 : 보령 바 00002
  • 등록일 : 2016-02-12
  • 발행일 : 2016-02-12
  • 발행인 : 김정환
  • 편집인 : 정병진
  • 이웃집과학자 모든 콘텐츠(영상,기사, 사진)는 저작권법의 보호를 받은바, 무단 전재와 복사, 배포 등을 금합니다.
  • Copyright © 2016-2024 이웃집과학자. All rights reserved. mail to contact@scientist.town
ND소프트