programming/파이썬으로 배우는 통계학

[파이썬/머신러닝] 통계학과 머신러닝 - 이론적인 부분들 (라소회귀, 릿지회귀)

Jofresh 2023. 5. 28. 21:08
728x90
반응형

머신러닝 기본

머신러닝은 컴퓨터에 학습능력을 부여하는 것을 목적으로 한 연구 분야입니다. 학습은 데이터를 기반으로 행해져 데이터가 가지는 규칙성을 분명히 합니다. 규칙성을 분명히 함으로써 모르는 데이터의 예측 등에 활용됩니다. 규칙성을 분명히 함으로써 모르는 데이터의 예측 등에 활용됩니다.

 

지도학습

머신러닝은 크게 지도학습과 비지도학습으로 나누어집니다.

지도학습은 정답 데이터를 얻을 수 있는 문제를 다루는 학습입니다. 예를 들어 매상을 예측하는 경우 매상 데이터를 얻을 수 있다면 예측결과가 맞는지 문제가 있는지 평가할 수 있습니다. 이런 문제를 다루는 방법이 지도학습입니다. 정규선형모델이나 일반선형모델을 다룬 문제는 지도학습이라고 볼 수 있습니다. 우리는 지도학습을 배울겁니다.

 

비지도학습

비지도학습은 정답 데이터를 얻을 수 없는 문제를 다루는 학습입니다. 예를들어 다양한 물고기의 DNA를 사용해서 근연종과 그렇지 않은 종으로 분류하는 경우 등이 있습니다. 근연종인지 아닌지 미리 알고 있다면 일부러 분석할 필요도 없습니다. 정답을 얻지 못해도 가장 좋다고 생각되는 분류를 제안합니다.

 

강화학습

주어진 상황에서 이득이 최대가 되는 행동을 찾는 문제를 해결하는 것을 강화학습이라고 합니다. 지도학습과 달리 정답데이터는 주어지지 않습니다.

 

룰베이스 머신러닝

사람이 미리 룰을 지정하고 그 룰에 따라서 예측 결과를 출력하는 방법을 룰베이스 머신러닝이라고 부르며, 앞서 얘기한 머신러닝과는 다른 것으로 취급합니다.

복잡한 현상에 대해서 사람이 하나하나 룰을 지정하는 방식에서는 데이터에 맞춘 유연한 예측이 나오기 힘든 점이 있습니다.

예를 들어

기온이 20도 이상일 때 매상이 100만원이고, 25도일 때 할인 판매를 하면 매상이....

라는 식으로 각각 룰을 지정하는 것은 효율이 나쁩니다. 다만 단순한 룰로 끝나는 문제라면 머신러닝보다 오히려 룰베이스가 비용이 적을 수 있습니다.

그래서 우리는 룰을 '데이터에 근거해' 학습하는 머신러닝을 배워보도록 하겠습니다!

 

통계학은 과정, 머신러닝은 결과에 focus한다.

통계학과 머신러닝은 하는 일은 비슷하지만 데이터를 분석하는 목적이 다릅니다.

 

통계모델의 목적은 데이터를 얻는 프로세스를 이해하는 것이고,

머신러닝의 목적은 미지의 데이터를 계산해서 획득하는 것입니다.

 

통계학은 데이터를 얻을 수 있는 프로세스(과정_에 주목하고, 과정을 알게 되면 다음에 어떤 데이터가 올지 예측도 할 수 있을 것이라고 생각합니다. 통계모델을 이용해서 예측할 수 있게 되는데, 어디까지나 과정의 이해가 첫 번째고, 예측은 그다음입니다.

 

머신러닝은 다음에 어떤결과를 얻을 수 있는지에 주목합니다. 때문에 내부에 블랙박스인 모델도 자주 사용됩니다.

 

다만 이러한 분류가 명확한 것은 아닙니다. 머신러닝 중에서도 현상의 이해가 가능하도록 궁리를 하는 경우도 있습니다. 어디까지나 분류 기준인 셈입니다.

 

일반선형모델을 포함한 분류와 회귀모델은 통계학과 머신러닝 모두에서 설명하고 있습니다. 회귀계수를 알면 현상을 이해할 수 있습니다.

 

예를 들면 기온과 맥주 매상이 관계가 있는지 등에 관한 이해입니다. 그래서 회귀모델은 통계학에서 자주등장합니다. 한편 회귀모델을 사용함으로써 매상이나 시험의 합격여부를 예측할 수 있습니다. 이 목적으로 사용되는 경우는 분류와 회귀모델을 머신러닝의 문맥에서 말할 수 있습니다. 

 

복습
일반선형모델(Generalized Linear Model, GLM)은 종속 변수와 독립 변수 간의 관계를 설명하는 통계 모델입니다. 이 모델은 선형 예측 함수와 링크 함수, 오차 분포를 결합하여 사용됩니다. 주로 회귀 분석에 사용되며, 종속 변수가 연속형일 때 특히 유용합니다.

회귀계수(coef)는 일반선형모델에서 독립 변수와 종속 변수 간의 관계를 표현하는 계수입니다. 이 계수는 각 독립 변수가 종속 변수에 미치는 영향의 크기와 방향성을 나타냅니다. 회귀계수는 회귀 분석을 통해 추정되며, 추정된 회귀계수를 통해 독립 변수의 변화에 따른 종속 변수의 변화를 예측할 수 있습니다.
회귀계수는 일반적으로 최소제곱법(Ordinary Least Squares, OLS)을 사용하여 추정됩니다. 최소제곱법은 관측된 데이터와 예측값 간의 잔차(Residual)를 최소화하는 방식으로 회귀계수를 결정합니다. 이를 통해 독립 변수와 종속 변수 간의 최적의 선형 관계를 찾습니다.

회귀계수는 각 독립 변수의 영향을 나타내는데, 일반적으로 양수인 경우 독립 변수의 증가가 종속 변수의 증가와 관련이 있음을 의미하며, 음수인 경우 독립 변수의 증가가 종속 변수의 감소와 관련이 있음을 의미합니다. 회귀계수의 크기는 해당 독립 변수의 영향력을 나타내며, 절대값이 클수록 해당 독립 변수의 영향이 크다고 해석할 수 있습니다.
회귀계수의 유의성은 통계적 가설 검정을 통해 확인됩니다. 일반적으로 회귀분석에서는 회귀계수의 유의성을 나타내는 p-value를 확인합니다. p-value는 회귀계수가 0인지 아닌지에 대한 확률을 나타내며, 작은 값일수록 해당 회귀계수는 유의미한 영향을 가지고 있다고 해석됩니다.

요약: 일반선형모델에서 회귀계수는 독립 변수와 종속 변수 간의 관계를 설명하며, 해당 독립 변수의 영향력과 방향성을 나타냅니다. 회귀계수의 해석은 다른 독립 변수와의 상호작용, 다중공선성 등을 고려해야 하며, 독립 변수의 단위에 영향을 받을 수 있습니다. 데이터의 특성과 가정을 고려하여 회귀분석 결과를 해석하는 것이 중요합니다.

정규화와 릿지 회귀, 라소 회귀

통계학과 머신러닝을 이어주는 모델인 릿지 회귀와 라소 회귀를 소개하겠습니다. 이러한 모델은 단순한 예측 모델로도 뛰어날 뿐만 아니라 다양한 머신러닝에 이용되는 정규화라는 이론을 이해하기 위한 내용으로도 뛰어납니다.

 

정규화

파라미터를 추정할 때 손실함수에 벌칙항을 도입함으로써 계수가 큰 값이 되는 것을 막는 기법을 정규화라고 부릅니다. 벌칙항은 정규화항이라고도 부릅니다. 통계학에서는 파라미터의 축소추정이라고도 부릅니다.

 

릿지 회귀

릿지 회귀(Ridge Regression)는 선형 회귀(Linear Regression)의 한 종류로, 다중공선성(multicollinearity) 문제를 완화하기 위해 도입된 회귀 분석 기법입니다. 다중공선성은 독립 변수들 간에 높은 상관관계가 있을 때 발생하는 문제로, 이는 회귀 모델의 예측력을 저하시킬 수 있습니다.

릿지 회귀는 기존의 최소제곱법(Ordinary Least Squares, OLS)에 L2 규제(regularization)를 추가하는 방식으로 동작합니다. L2 규제는 회귀 계수들의 크기를 제한함으로써 모델의 복잡도를 조절하는 역할을 합니다. 릿지 회귀에서는 비용 함수(cost function)에 RSS(Residual Sum of Squares)와 회귀 계수의 제곱합을 더한 것을 최소화하는 방향으로 회귀 계수를 추정합니다.

릿지 회귀의 비용 함수는 다음과 같이 표현됩니다:

Cost = RSS + α * (β₁² + β₂² + ... + βₚ²)

여기서 RSS는 최소제곱법과 동일하게 실제 값과 예측 값의 잔차 제곱합을 나타내며, β₁, β₂, ..., βₚ는 회귀 계수들을 의미합니다. α는 규제 강도를 조절하는 하이퍼파라미터로, 사용자가 임의로 지정할 수 있습니다. α의 값이 커질수록 회귀 계수들의 크기가 줄어들게 되어 모델의 복잡도를 감소시킵니다. 즉, 릿지 회귀는 회귀 계수들의 크기를 제한하여 모델을 더 일반화시키는 효과를 얻을 수 있습니다.

릿지 회귀는 다중공선성 문제를 해결하고 모델의 안정성을 향상시키는 장점이 있습니다. 하지만 모든 회귀 계수를 0으로 만들지는 않기 때문에 변수 선택(feature selection)의 효과는 제한적입니다. 릿지 회귀의 하이퍼파라미터 α는 규제 강도를 조절하기 때문에 적절한 값 설정이 필요하며, 규제의 크기를 결정하는 데에는 교차 검증(cross-validation) 등의 기법을 활용할 수 있습니다.

요약하자면, 릿지 회귀는 선형 회귀의 한 종류로 다중공선성 문제를 완화하기 위해 L2 규제를 사용하는 방법입니다. 제 강도를 조절하여 모델의 복잡도를 제어하며, 회귀 계수의 크기를 줄여 일반화 성능을 향상시킵니다. 릿지 회귀는 변수 선택 기능은 제한적이지만 모델의 안정성을 높이는 장점을 가지고 있습니다. 적절한 규제 강도를 선택하기 위해 교차 검증과 같은 방법을 활용할 수 있습니다.

 

라소회귀

라소 회귀(Lasso Regression)는 선형 회귀(Linear Regression)의 한 종류로, 변수 선택과 모델의 복잡도 감소를 동시에 수행하는 회귀 분석 기법입니다. 라소 회귀는 다중공선성(multicollinearity) 문제를 해결하고, 불필요한 변수를 제거하여 모델을 단순화하는 특징을 가지고 있습니다.

라소 회귀는 기존의 최소제곱법(Ordinary Least Squares, OLS)에 L1 규제(regularization)를 추가하는 방식으로 동작합니다. L1 규제는 회귀 계수들의 절댓값의 합을 최소화하는 방향으로 회귀 계수를 추정합니다. 이로 인해 불필요한 변수들의 회귀 계수를 0으로 만들어 해당 변수들을 제거하는 효과를 얻을 수 있습니다.

라소 회귀의 비용 함수는 다음과 같이 표현됩니다:

Cost = RSS + α * (|β₁| + |β₂| + ... + |βₚ|)

여기서 RSS는 최소제곱법과 동일하게 실제 값과 예측 값의 잔차 제곱합을 나타내며, β₁, β₂, ..., βₚ는 회귀 계수들을 의미합니다. α는 규제 강도를 조절하는 하이퍼파라미터로, 사용자가 임의로 지정할 수 있습니다. α의 값이 커질수록 회귀 계수들의 절댓값이 작아지고, 일부 회귀 계수들이 0이 되어 변수 선택의 효과를 얻을 수 있습니다.

라소 회귀는 다중공선성 문제를 해결하고 모델을 단순화하는 장점이 있습니다. 변수 선택 기능을 통해 유의미한 변수들을 식별하고, 불필요한 변수들을 제거하여 모델의 해석력과 일반화 성능을 향상시킵니다. 또한, 회귀 계수들의 희소성(sparsity)를 가지고 있어서 특성 선택의 효과를 더욱 강조할 수 있습니다.

라소 회귀의 하이퍼파라미터 α는 규제 강도를 조절하기 때문에 적절한 값 설정이 필요합니다. 규제의 크기를 결정하는 데에는 교차 검증(cross-validation) 등의 기법을 활용할 수 있습니다. 또한, 동일한 값을 가진 변수들에 대해서는 변수 선택이 불안정할 수 있으므로, 이를 고려하여 모델을 평가해야 합니다. 라소 회귀에서는 선택된 변수들에만 의존하므로, 변수 선택에 사용되지 않은 데이터를 기반으로 모델의 예측 성능을 평가하는 것이 중요합니다. 또한, 라소 회귀는 변수 선택에 민감하게 반응할 수 있으므로, 데이터의 특성과 문제의 복잡도에 적합한 규제 강도를 설정해야 합니다.

라소 회귀는 변수 선택을 통해 모델을 단순화하고 해석 가능성을 높이는 장점이 있지만, 변수 선택의 결과는 데이터에 따라 달라질 수 있습니다. 따라서 라소 회귀를 적용할 때에는 변수 선택의 결과를 신중하게 검토해야 하며, 도메인 지식과 통계적 방법을 함께 고려하여 모델을 평가해야 합니다.

요약하자면, 라소 회귀는 L1 규제를 사용하여 변수 선택과 모델의 복잡도 감소를 동시에 수행하는 선형 회귀 기법입니다. 다중공선성 문제를 해결하고 변수 선택의 효과를 강조할 수 있으며, 적절한 α 값을 선택하여 모델을 평가해야 합니다. 라소 회귀는 변수 선택의 결과를 신중하게 검토하고 도메인 지식과 통계적 방법을 함께 고려하여 모델을 평가해야 합니다.

정규화 강도를 지정하는 파라미터의 결정

정규화항에 나타나는 α를 결정하는 방법을 설명하겠습니다. 우선 α를 여러가지로 변화시킨 후 교차검증법을 이용해서 테스트 데이터에 대한 예측 정확도를 평가합니다. 그중 테스트 데이터를 가장 잘 예측한 α를 선택합니다.

 

정규화항에 나타나는 α는 한 가지 요소로만 결정되지 않습니다. α도 포함해서 최적화의 대상으로 삼으면 반드시 α=0이 된 뒤 잔차제곱합을 최소로 하도록 움직이기 때문입니다. 이렇게 되면 일반적인 최소제곱법과 다르지 않게 됩니다. 때문에 조금 번거롭지만 교차검증법을 사용할 것을 권장합니다.

 

 

독립변수의 표준화

릿지회귀나 라소회귀를 실행하기 전에 미리 독립변수를 평균0, 표준편차1로 표준화할 필요가 있습니다.

 

예를들어 독립변수로 kg 단위의 데이터를 사용했을 때와 g단위의 데이터를 사용했을 때의 회귀계수의 절댓값의 크기가 바뀌게 됩니다. 회귀계수의 절댓값이 커지면 벌칙의 영향도 커집니다. 독립변수의 단위가 파라미터 추정시에 영향을 주는 것을 막기 위해 미리 독립변수를 표준화합니다.

 

릿지 회귀와 라소 회귀의 추정 결과 차이

 

릿지 회귀와 라소 회귀는 모두 선형 회귀의 변종이며, L2 규제와 L1 규제를 사용하여 모델의 복잡도를 조절합니다. 그러나 두 회귀 모델의 규제 방식에 따라 추정 결과에 차이가 있습니다.

릿지 회귀에서는 L2 규제를 사용하므로, 규제 항에 회귀 계수의 제곱합을 추가합니다. 이로 인해 회귀 계수들이 0에 가까워지게 되지만, 정확히 0이 되지는 않습니다. 따라서 릿지 회귀는 변수 선택의 효과는 제한적이지만, 모든 변수들이 약간의 영향력을 가지고 있다고 가정할 수 있습니다. 릿지회귀의 회귀 계수 추정 결과는 주로 작은 값들로 이루어지며, 변수들 간의 상대적인 영향력을 비교하기 어려울 수 있습니다.

반면, 라소 회귀에서는 L1 규제를 사용하므로, 규제 항에 회귀 계수의 절댓값의 합을 추가합니다. 이로 인해 불필요한 변수들의 회귀 계수가 0이 되어 해당 변수들이 모델에서 완전히 제외됩니다. 따라서 라소 회귀는 변수 선택에 강한 영향력을 가지며, 중요한 변수들을 식별하고 제외할 수 있습니다. 라소 회귀의 회귀 계수 추정 결과는 주로 0 또는 작은 값들로 이루어지며, 변수들 간의 상대적인 영향력을 파악하기 쉽습니다.

따라서 릿지 회귀는 모든 변수를 고려하면서도 모델의 복잡도를 줄이는 데 적합하며, 라소 회귀는 변수 선택과 모델 단순화에 효과적입니다. 어떤 규제 방법을 사용할지는 데이터의 특성과 문제의 복잡도, 변수들 간의 상호작용 등을 고려하여 결정해야 합니다.

 

예를 들어서 10개의 독립 변수로 이루어진 회귀 모델을 고려해보겠습니다. 이 경우에는 릿지 회귀와 라소 회귀의 추정 결과에 차이가 나타날 수 있습니다.

릿지 회귀:
릿지 회귀에서는 L2 규제를 사용하여 회귀 계수들을 추정합니다. L2 규제는 회귀 계수의 제곱합을 최소화하는 방향으로 작용합니다. 따라서 릿지 회귀의 결과는 회귀 계수들이 전반적으로 작은 값을 가지는 특징을 가집니다. 즉, 릿지 회귀는 변수들 간의 상대적인 영향력을 비교하기 어려울 수 있으며, 모든 변수들이 약간의 영향을 미친다고 가정합니다.
예를 들어, 릿지회귀에서는 다음과 같은 회귀 계수 추정 결과가 나올 수 있습니다:
β₁ = 0.2, β₂ = 0.5, β₃ = 0.1, β₄ = 0.3, β₅ = 0.4, β₆ = 0.15, β₇ = 0.05, β₈ = 0.25, β₉ = 0.2, β₁₀ = 0.3

라소 회귀:
라소 회귀에서는 L1 규제를 사용하여 회귀 계수들을 추정합니다. L1 규제는 회귀 계수의 절댓값의 합을 최소화하는 방향으로 작용합니다. 이로 인해 불필요한 변수들의 회귀 계수가 0이 되어 해당 변수들이 모델에서 완전히 제외될 수 있습니다.
예를 들어, 라소 회귀에서는 다음과 같은 회귀 계수 추정 결과가 나올 수 있습니다:
β₁ = 0, β₂ = 0.6, β₃ = 0, β₄ = 0.4, β₅ = 0.3, β₆ = 0, β₇ = 0, β₈ = 0.2, β₉ = 0, β₁₀ = 0.5

위의 예시에서는 릿지회귀에서는 모든 변수들이 어느 정도의 회귀 계수를 가지고 있지만, 라소 회귀에서는 일부 변수들의 회귀 계수가 0으로 추정됩니다. 이는 라소 회귀의 변수 선택 특성으로 인해 중요하지 않은 변수들이 모델에서 제외되었음을 나타냅니다. 따라서 라소 회귀는 변수 선택에 더 강한 효과를 가지며, 모델이 더 간단해지는 특성을 가지고 있습니다. 라소 회귀에서는 불필요한 변수들이 제외되어 모델이 더 간결하고 해석하기 쉬운 형태가 됩니다. 변수 선택을 통해 모델이 사용하는 특성의 수가 줄어들기 때문에 모델의 복잡도가 감소하고, 이는 과적합(overfitting)을 방지하고 일반화 성능을 향상시키는 데 도움을 줍니다.

간단한 모델은 해석력이 높아지는 장점이 있습니다. 라소 회귀를 통해 선택된 변수들은 데이터에 대한 해석과 설명이 용이하며, 도메인 지식을 바탕으로 변수들의 영향력을 이해할 수 있습니다. 또한, 선택된 변수들만을 사용하여 예측하는 데에 필요한 계산량도 줄어들어 모델의 효율성이 증가할 수 있습니다.

하지만, 라소 회귀에서 변수 선택은 데이터에 따라 변할 수 있습니다. 동일한 데이터에 대해 여러 번 실행하더라도 선택된 변수들이 다를 수 있습니다. 따라서 라소 회귀를 적용할 때에는 변수 선택의 결과를 신중하게 검토하고, 도메인 지식과 통계적 방법을 함께 고려하여 모델을 평가해야 합니다.

요약하자면, 라소 회귀는 불필요한 변수들을 제외하여 모델을 더 간단하고 해석하기 쉬운 형태로 만듭니다. 간결한 모델은 과적합을 방지하고 일반화 성능을 향상시킬 수 있으며, 변수 선택을 통해 선택된 변수들은 데이터에 대한 해석과 설명이 용이합니다. 그러나 변수 선택의 결과는 데이터에 따라 변할 수 있으므로, 모델을 평가할 때에는 변수 선택의 결과를 신중하게 검토하고 고려해야 합니다.

 

변수 선택과 정규화의 비교

변수 선택에서는 예를 들어 AIC 최소기준 등에 근거하여 불필요한 독립변수를 모델에서 제외합니다. 이렇게 함으로써 추정해야 할 미지의 파라미터 수를 줄이고, 모델을 단순하게 만듭니다.  (모델을 단순하게 만듦으로써 과학습을 방지함)

 

과학습을 방지하는 또 다른 1개의 방침이 이번엔 다룰(multy-rule)주제인 정규화입니다. 벌칙항을 삽입함으로써 절대치가 큰 계수를 추정하는 것을 피하여 결과적으로 독립변수가 종속변수에 미치는 영향을 줄일 수 있습니다. 라소 회귀에서 얻을 수 있는 계수의 대부분이 0이 되는 이상 변수 선택을 하는 것과 비슷한 결과가 됩니다. 

 

 

이론적인 부분에 대해서 이해할 것들이 많죠?

여러번 말씀드렸듯 우리는 파이썬에게 모든 계산을 맡길 것이기 때문에 이런 이론적인 부분은

알고만 넘어가셔도 됩니다. 다만, 어떻게 해석되는지 어떤 모델은 뭘 확인할 수 있고 뭘 확인할 수 없는지 정도는 알고 가시는게 좋을 듯 합니다. 그리고 그렇게 간단하게 몇 줄적는 것 보다는 자세한 내용을 전달드리는게 좋을 것 같아서 

엄~청 길어져버리고 말았네요. 그래도 나름 요약은 해두었으니 요약이나 음영처리 된 부분들은 확인하는 것이 좋을 것 같습니다.

 

다음 포스팅에서는 파이썬을 이용한 릿지/라소 회귀 방법에 대해서 포스팅하겠습니다.

728x90
반응형