본문 바로가기

Machine Learning_모델설계_Python

선형회귀_4 릿지, 라쏘 정규화

안녕하세요 배도리입니다. 오늘도 제가 좋아하는 사자성어 하나 알려드리겠습니다.. "새옹지마" 많은 사람들이 쓰는 말입니다. 

 

한 변방 노인의 말이 마을 밖으로 나가버리는 일이 있었습니다.

마을사람들 "에궁 말을 잃어서 슬프시겠어요."

노인 "허허 또 좋은 일이 될수도!"

 

집나간 말은 밖에서 명마를 데리고 같이 옵니다.

마을사람들 "와! 명마를 데리고 왔네요! 개이득 아닙니까?"

노인"허허 흠 안 좋은 일이 될수도..."

 

바로 명마를 타고 다니던 노인의 아들이 다리가 분질러집니다.

마을사람들 "헐 하나뿐인 아들이 이제 다리를 절게되서 어떡합니까"

노인"허허 또 좋은 일이 될수도!"

 

몇 해가 지나 오랑캐와 전쟁 발발하였고 마을의 모든 남자들이 징병되어 전쟁터에서 모두 죽었습니다.

하지만 노인의 아들은 다리를 절었기에 징병되지않고 목숨을 부지했습니다.

 

역시 사람일이란건 참 모르는 것 같아요. 저는 매사에 일희일비하는 사람이라 가슴속 항상 새옹지마를 새기며 살고있습다만 아직 경험이 적어서 그런지 잘 실천되지 않네요. 변방의 노인은 정말 산전수전을 다 겪어본것 같습니다. 그렇다면 저희는 릿지와 라쏘를 한번 겪어보겠습니다.

 

 

 

릿지와 라쏘 전에 과대적합과 과소적합에 대해 다시 한번 알려드리겠습니다.

 

과대적합: 모델이 학습 데이터에 지나치게 잘 적합되어, 학습 데이터에서는 좋은 성능을 보이지만 새로운 데이터에 대해서는 일반화(generalization) 성능이 떨어지는 상황을 의미합니다. 즉, 모델이 학습 데이터의 노이즈나 특정 패턴까지 모두 학습하여, 실제 데이터에서는 잘못된 판단을 할 수 있는 상태입니다. 이는 모델이 학습 데이터에 너무 맞추어져 새로운 데이터에 대한 예측 능력이 떨어지는 결과를 가져올 수 있습니다.

과소적합: 모델이 학습 데이터에 대해서도 일반화가 제대로 이루어지지 않아, 학습 데이터에서도 성능이 낮은 상황을 의미합니다. 이는 모델이 데이터의 복잡성을 충분히 학습하지 못하거나 모델의 복잡도가 너무 낮아서 발생할 수 있습니다. 과소적합된 모델은 새로운 데이터에 대해서도 제대로 예측을 수행하지 못할 수 있습니다.

과소,과대 비교

다중선형회귀에서 과대적합이 발생할 수 있는 몇 가지 상황이 있습니다.

다중공선성: 독립 변수 간에 높은 상관관계가 있을 때 다중공선성이 발생할 수 있습니다. 예를 들어, A와 B라는 두 독립 변수가 매우 비슷한 정보를 제공하거나 상호작용하는 경우, 회귀 모델은 두 변수 중 하나를 더 중요하게 여길 수 있습니다. 이로 인해 모델이 특정 변수에 지나치게 의존하여 과대적합이 발생할 수 있습니다.

피처의 개수: 다중선형회귀 모델에서 독립 변수의 개수가 많을수록 과대적합의 위험이 커집니다. 독립 변수의 개수가 증가하면 모델은 더 많은 매개변수를 학습해야 하므로, 작은 샘플 크기에서는 학습 데이터에 과도하게 맞출 수 있습니다. 이로 인해 모델은 새로운 데이터에서 일반화하는 데 어려움을 겪을 수 있습니다.

데이터 양 부족: 적은 수의 학습 데이터로 다중선형회귀 모델을 학습할 때는 과대적합이 발생하기 쉽습니다. 작은 데이터셋에서는 모델이 학습 데이터의 특이한 패턴이나 잡음을 지나치게 학습할 수 있습니다.

모델 복잡도: 다중선형회귀 모델에서 모델의 복잡도가 높으면 과대적합의 위험이 증가합니다. 모델이 매우 유연하고 다양한 관계를 학습할 수 있을 때, 작은 데이터셋에서는 쉽게 과대적합될 수 있습니다.

 

 

이를 막기위해 과대적합을 해결하는 몇 가지 방법이 있습니다.

더 많은 데이터 활용하기: 오류가 적고 분포가 다양한 데이터를 더 많이 수집하여 모델에 활용합니다. 이는 모델이 더 일반화된 학습을 할 수 있도록 도와줍니다.

피처(feature)의 개수 줄이기: 필요한 피처들만 선택하여 사용합니다. 불필요한 피처들은 제거함으로써 모델의 복잡도를 줄일 수 있습니다. 이는 모델이 데이터의 잡음에 과도하게 맞춰지는 것을 방지할 수 있습니다. 

적절한 매개변수 선정하기: 선형 회귀 모델에는 여러 하이퍼파라미터가 있습니다. 이러한 매개변수들을 적절하게 조정하여 모델의 복잡도를 조절할 수 있습니다. 예를 들어, 학습률(learning rate)과 반복 횟수(iterations)는 모델의 학습 과정에 영향을 미치는 매개변수로, 적절한 값을 선택하는 것이 중요합니다. 이를 통해 모델의 학습과 일반화 사이의 균형을 조절할 수 있습니다. (보통 학습률을 크게 하면 빠른 학습이 가능하지만, 과대적합의 위험이 있고, 작게 하면 학습이 느려짐)

 

정규화(regularization): 모델의 복잡도를 조절하여 일반화 성능을 향상시키는 방법입니다. 피쳐의 가중치 값을 적절히 줄일 수 있도록 비용함수에 규제 수식(penalty term) 추가합니다.

 

 

정규화는 과대적합을 줄이는 데 도움을 주는 중요한 기법 중 하나입니다! 정규화는 주로 선형 회귀 모델에서 사용되며, 주요한 두 가지 정규화 방법은 릿지(Ridge) 회귀와 라쏘(Lasso) 회귀입니다. 피쳐의 가중치 값을 적절히 줄일 수 있도록 비용함수에 규제 수식(penalty term) 추가합니다.

라쏘 회귀(Lasso regression): L1 정규화(L1 regularization) 

리지 회귀(Ridge regression): L2 정규화(L2 regularization)

 

릿지(Ridge) 회귀: 릿지 회귀는 L2 규제를 사용하여 모델의 복잡도를 조절합니다. L2 규제는 회귀 계수들을 작게 만들어 과도한 가중치를 피하는 역할을 합니다. 이를 통해 다중공선성을 완화하고 모델의 일반화 성능을 향상시킬 수 있습니다. 비용함수에 penalty term으로서, L2 norm penalty(모델 파라미터 값들의 제곱의 합)를 추가하여 계산합니다.

릿지

 파라미터의 값이 조금이라도 커질 때 비용함수에 매우 큰 영향을 미치므로 이를 조절하기 위해 규제식을 추가함으로 파라미터 값을 적절히 줄일 수 있도록 도와줍니다. λ가 클수록 전체 penalty term의 값이 커져 θ값이 조절됩니다.  λ는 사람이 직접 값을 입력하는 정규화매개변수, 하이퍼파라미터입니다. L2 규제를 사용하면 변수들의 계수들이 0에 가까워지지만, 실제로는 0이 되지는 않습니다. 릿지 회귀는 모델이 각 피처에 대한 영향력을 줄이면서도 모든 피처를 유지할 수 있는 장점이 있습니다.

 

Ridge 회귀와 Lasso 회귀와 같은 선형 회귀 모델에서 정규화 매개변수는 람다(λ) 또는 알파(α)로 표현됩니다. 람다(λ)는 Ridge 회귀에서 사용되는 정규화 매개변수입니다. 람다 값이 클수록 모델이 더 많이 정규화되며, 이는 계수(coefficient)의 값이 더 많이 축소됩니다. 이렇게 함으로써 모델이 훈련 데이터에 과적합(overfitting)되는 것을 방지하고 일반화(generalization) 성능을 향상시킬 수 있습니다. 반대로, 람다 값이 작을수록 정규화의 효과가 줄어들어 모델이 훈련 데이터에 더 가깝게 맞추려고 합니다. 그러나 이 경우 과적합의 위험이 증가할 수 있습니다. 따라서 적절한 람다 값을 선택하는 것이 중요합니다. 람다 값을 조절함으로써 모델의 복잡도와 일반화 성능 사이의 균형을 찾을 수 있습니다. 람다 값을 매우 크게 하면 정규화의 효과가 커지지만, 이렇게 하면 모델이 너무 단순해질 수 있습니다. 이 경우 모델이 훈련 데이터에 대해 과소적합(underfitting)될 수 있으며, 새로운 데이터에 대한 예측 성능이 저하될 수 있습니다.


라쏘(Lasso) 회귀: 라쏘 회귀는 L1 규제를 사용하여 모델의 복잡도를 조절합니다. L1 규제는 회귀 계수들을 0으로 축소시키는 특징이 있습니다. 따라서, 라쏘 회귀는 변수 선택의 효과를 가지며, 불필요한 변수를 제거하여 모델을 더 간단하게 만들 수 있습니다.

라쏘

비용함수에 penalty term으로서, L1 norm penalty(모델 파라미터 값들의 절대값의 합)를 추가하여 계산합니다. L1 규제를 사용하면 일부 계수가 실제로 0이 되어 해당 변수가 모델에 영향을 주지 않게 됩니다. 라쏘 회귀는 변수 선택과 모델의 간결성을 제공하는 장점이 있습니다.

 

라쏘(Lasso) 회귀에서의 람다 값은 모델의 정규화 강도를 조절하는 역할을 합니다. 람다 값이 클수록 라쏘 회귀 모델은 더 많은 계수를 0으로 축소하여 변수 선택(Feature Selection)의 역할을 수행합니다. 따라서 라쏘 회귀는 특정 변수들의 중요도가 낮다고 판단되면 해당 변수의 계수를 0으로 만들어 해당 변수를 모델에서 제외할 수 있습니다. 이는 특성 선택과 모델의 해석력 측면에서 장점이 있습니다. 반면, 다 값이 작을수록 라쏘 회귀 모델은 덜 정규화되고, 변수들의 계수가 0에 가까워지지 않으며, 모든 변수를 모델에 포함시킵니다. 이는 Ridge 회귀와 비교했을 때 모델이 더 자유롭게 변수들을 활용할 수 있다는 의미입니다. 람다 값을 조절함으로써 라쏘 회귀 모델의 복잡도와 변수 선택의 균형을 조절할 수 있습니다. 적절한 람다 값을 선택하면 불필요한 변수를 제거하고, 중요한 변수들만을 활용하여 모델의 복잡성을 줄이고 일반화 성능을 향상시킬 수 있습니다.

 

L1 정규화(라쏘)와 L2정규화(릿지) 기하학적 의미를 살펴보겠습니다.

 

타원은 모델 파라미터 값으로 생기는 비용함수의 공통 범위입니다. L1 정규화는 모델의 가중치 벡터가 원점 주변에 위치하도록 만들어줍니다. 이는 L1 정규화를 적용한 비용 함수의 등고선이 사각형 모양이기 때문에, 최적의 가중치(𝜃opt)는 사각형의 꼭지점에 위치하게 됩니다. 이 꼭지점들은 하나 이상의 가중치가 정확히 0이 되는 지점이므로, 이로 인해 L1 정규화는 feature selection의 효과를 가집니다(feature selection는 사용해야 하는 피쳐와 사용하지 않아도 되는 피쳐를 선택). 많은 피쳐들 중에서 적은 수의 피쳐들만 중요할 경우, 중요하지 않은 피쳐들을 없애주기 때문에 유리합니다.

 

반면  L2 정규화는 모델의 가중치 벡터가 원점에 가깝게 위치하도록 만드는 효과가 있습니다. L2 정규화의 등고선이 원 형태를 띄기 때문에, 최적의 가중치(𝜃opt)는 원의 경계선에 위치하게 됩니다. 하지만 L2 정규화는 L1 정규화와 달리 피쳐 선택 기능이 없습니다. 이는 L2 정규화가 가중치를 완전히 0으로 만드는 대신, 가중치를 작게 만들어 모든 피쳐를 일정하게 고려하기 때문입니다. 이런 특성 때문에, 모든 피쳐가 중요하고, 그 중요도를 동등하게 고려해야 하는 경우 L2 정규화가 유용하게 사용될 수 있습니다. 피쳐를 선택하지는 못하나, 모든 피쳐들의 중요도를 알 수 있고 이는 모든 피쳐들이 중요할 경우에 사용합니다.

 

 

다음에는 그동안 배운 다중선형회귀에 대한 실습을 하겠습니다.