계수 축소법이란 — 과적합 잡는 Ridge·Lasso 2가지

앞선 다중선형회귀에서 남은 숙제가 하나 있었다. 변수가 수십, 수백 개일 때 쓸모 있는 변수만 골라 넣어야 과적합을 피하는데, 그 선별을 사람이 일일이 하기는 벅차다는 것이다. 이 변수 선택을 자동으로 해주는 방법이 계수 축소법이다. 영어로는 정규화(regularization)라고도 부르고, 대표 선수가 Ridge(릿지)와 Lasso(라쏘)다.

이 글은 계수 축소법의 원리와 두 방법의 차이를 짚는다. 회귀식에 어떤 벌점을 더하는지, Ridge와 Lasso가 무엇이 다른지, 예측할 때와 변수를 고를 때 무엇을 써야 하는지, 그리고 그 세기를 정하는 λ는 누가 정하는지까지다.

벌점을 더한다 — SSE에 계수 벌점을 얹기

일반 회귀는 잔차제곱합(SSE) 하나만 최소로 만든다. 계수 축소법은 여기에 항을 하나 더 얹는다. 바로 회귀 계수의 크기에 매기는 벌점이다. 즉 “SSE + λ × (계수 크기 벌점)”을 통째로 최소화한다.

여기서 두 항은 서로 잡아당긴다. SSE 항은 학습 데이터에 잘 맞추려고 계수들을 살리려 든다(복잡한 모형 쪽). 반면 벌점 항은 계수를 0 쪽으로 눌러 모형을 단순하게 만들려 든다. 이 둘의 힘겨루기가 절충점에 이르면, 딱 필요한 만큼의 변수만 살아남는 알맞은 모형이 나온다.

Ridge와 Lasso — 벌점의 모양 하나 차이

Ridge와 Lasso는 이 벌점을 어떤 모양으로 매기느냐에서만 갈린다.

구분Ridge(릿지)Lasso(라쏘)
벌점 모양계수의 제곱을 합함계수의 절댓값을 합함
계수를0에 가깝게 (0은 아님)아예 0으로
변수는대부분 살아남음불필요한 것은 제거됨

수식으로는 한쪽은 계수를 제곱해 더하고(Ridge), 다른 쪽은 절댓값으로 더할(Lasso) 뿐이다. 그런데 이 사소해 보이는 차이가 결과를 가른다. Ridge는 계수를 0 근처까지만 밀어 넣어 아주 작은 값(0.00001 같은)으로 남기고, Lasso는 필요 없는 계수를 정확히 0으로 만들어 그 변수를 회귀식에서 완전히 지워버린다.

원 제약의 Ridge와 마름모 제약의 Lasso가 계수를 0으로 보내는 차이를 보여주는 계수 축소법 개념도

이 차이는 기하로 보면 선명하다. 제약을 그림으로 그리면 Ridge는 매끄러운 원, Lasso는 뾰족한 꼭짓점이 있는 마름모가 된다. 오차가 최소가 되는 지점이 이 제약과 만나는데, 마름모는 꼭짓점이 축 위에 있어 그 지점에서 한 계수가 딱 0으로 떨어진다. 원에는 꼭짓점이 없어 0 근처에서 멈출 뿐이다. 이것이 “0에 가까이 vs 아예 0″의 정체다.

언제 무엇을 쓰나 — 예측이면 Ridge, 변수 선택이면 Lasso

이 차이가 현업에서 쓰임을 가른다. 어떤 변수가 중요한지 골라내고 싶다면 Lasso가 좋다. 필요 없는 변수의 계수를 0으로 만들어 아예 지워버리니, 살아남은 인자가 눈에 확 들어오기 때문이다.

반대로 예측력 자체가 목적이라면 Ridge가 대체로 낫다. 영향이 작은 변수도 아주 작은 값으로 살려두므로, 여러 변수의 정보를 조금씩이라도 활용해 예측이 안정적인 편이다. 정리하면 변수 선택은 Lasso, 예측은 Ridge다. 다만 이건 일반적 경향이지 절대 법칙은 아니라서, 상황에 따라 Lasso의 예측 성능이 더 좋게 나올 때도 있다. 두 방법의 표준 구현은 scikit-learn 선형모델 문서에서 확인할 수 있다.

λ는 누가 정하나 — 테스트 데이터로 튜닝

벌점의 세기를 정하는 것이 λ(람다)다. λ가 크면 벌점의 힘이 세져 계수들이 0 쪽으로 강하게 밀려 변수가 많이 줄고, λ가 작으면 계수들이 살아나 변수가 많이 남는다. 그러면 이 λ는 누가 정할까?

사람이 감으로 정하지 않는다. λ를 조금씩 바꿔가며 그때마다 모형을 만들고, 테스트 데이터에서 오차(MSE)를 잰다. 그 오차가 가장 작아지는 λ가 최적값이다. 이 탐색은 소프트웨어가 자동으로 해주므로, 실무에서는 “Ridge를 쓸지 Lasso를 쓸지”만 정하면 나머지는 프로그램이 알아서 최적 모형을 만들어 준다.

실전에서 계수 축소법이 살리는 순간

📍 위력은 변수가 많을 때 드러난다. 입력 변수가 아주 많은 데이터에 일반 다중회귀를 그냥 돌리면, 학습 데이터에 과적합돼 테스트 데이터의 R²이 큰 음수로 곤두박질치는 일이 흔하다. 평균으로 찍느니만 못한 모형이 되는 것이다.

같은 데이터에 Ridge나 Lasso를 돌리면, 불필요한 변수의 계수를 0이나 0 근처로 눌러 모형을 단순하게 잡아준다. 그 결과 테스트 데이터의 R²이 음수에서 쓸 만한 양수로 되살아난다. 그래서 변수가 여럿인 회귀라면, 다중회귀를 맨몸으로 돌리기보다 Ridge·Lasso를 기본기로 얹는 편이 안전하다.

핵심 요약

  • 계수 축소법(정규화)은 SSE에 계수 크기 벌점을 더해 함께 최소화하며, 벌점 항과 SSE 항의 트레이드오프로 알맞은 변수만 남긴다.
  • Ridge는 계수 제곱합을, Lasso는 계수 절댓값합을 벌점으로 쓴다 — 이 모양 차이가 결과를 가른다.
  • Ridge는 계수를 0에 가깝게(변수 대부분 유지), Lasso는 아예 0으로(변수 제거) 만든다.
  • 예측이 목적이면 Ridge, 중요 변수 선택이 목적이면 Lasso가 일반적으로 유리하다(절대 법칙은 아님).
  • 벌점 세기 λ는 테스트 데이터의 오차가 최소가 되는 값을 프로그램이 자동 탐색해 정한다.

함께 읽으면 좋은 글

FAQ

벌점의 모양이 다릅니다. Ridge는 계수의 제곱을 합해 벌점으로 쓰고, Lasso는 절댓값을 합해 씁니다. 그 결과 Ridge는 계수를 0에 가깝게만 줄여 변수를 대부분 살려두고, Lasso는 필요 없는 계수를 정확히 0으로 만들어 그 변수를 아예 제거합니다. 그래서 변수 선택에는 Lasso, 예측 안정성에는 Ridge가 흔히 쓰입니다.

과적합은 변수가 너무 많아 모형이 복잡해질 때 생깁니다. 계수 축소법은 계수 크기에 벌점을 매겨, 결과에 기여하지 않는 변수의 계수를 0이나 0 근처로 눌러버립니다. 그러면 실질적으로 쓰이는 변수가 줄어 모형이 단순해지고, 학습 데이터에만 지나치게 맞춰지는 과적합이 완화됩니다.

직접 감으로 정하지 않아도 됩니다. λ를 여러 값으로 바꿔가며 각각 모형을 만들고 테스트 데이터에서 오차를 재서, 오차가 가장 작아지는 λ를 고르면 됩니다. 이 탐색 과정은 소프트웨어가 자동으로 처리하므로, 사용자는 Ridge와 Lasso 중 무엇을 쓸지만 정하면 됩니다.

관련 글 보기