안녕하세요 배도리입니다. 선형회귀에 이어 로지스틱회귀에 대해 설명드리겠습니다. 이전에 설명드렸듯이 회귀는 연속형 종속변수를 예측하는것인데 종속변수가 범주형(예: 양성, 음성)일때는 어떻게 할까요? 해결법은 로지스틱회귀를 쓰면됩니다 호호. 로지스틱 회귀는 범주형 종속 변수, 특히 이진 범주를 예측하는 데 사용되는 통계적인 분류 기법입니다. 이 기법은 주어진 입력 변수들의 세트에 대해 종속 변수의 확률을 예측하는 데 사용됩니다.
로지스틱 회귀는 이름에 '회귀'라는 단어가 들어 있지만, 실제로는 분류 문제에 사용되는 모델입니다. 이는 로지스틱 회귀가 출력 값을 직접 예측하는 대신에, 가능한 결과에 대한 확률을 예측하기 때문입니다. 따라서 로지스틱 회귀는 이메일이 스팸인지 아닌지, 거래가 사기인지 아닌지, 고객이 구매를 할지 말지 등 이진 분류 문제에 자주 사용됩니다.
선형회귀와 한번 비교해보겠습니다
선형 회귀의 경우 가설 함수 ℎ𝜃(𝑥)의 값은 어떤 실수 값도 가질 수 있습니다. 즉, ℎ𝜃(𝑥)의 값은 음수가 될 수도 있고, 1을 넘을 수도 있습니다.
하지만, 이진 분류 문제에서는 종속 변수 y의 값이 0 또는 1입니다. 따라서 ℎ𝜃(𝑥)가 0과 1 사이의 값만 가지도록 하는 것이 좋습니다. 이 때문에 로지스틱 회귀가 사용됩니다.
로지스틱 회귀는 가설 함수로 로지스틱 함수(또는 시그모이드 함수)를 사용하여 ℎ𝜃(𝑥)의 값이 항상 0과 1 사이에 있도록 합니다. 로지스틱 함수의 출력값은 확률로 해석될 수 있어, 이진 분류 문제에 적합합니다. 즉, ℎ𝜃(𝑥)는 주어진 x 값이 특정 클래스에 속할 확률을 나타냅니다. 예를 들어 𝒙에서 𝑥0 = 1이고 𝑥1 = 종양크기 일때, ℎ𝜃(𝑥)= 0.7 이라면 ‘악성종양일 확률이 70%’라고 해석하게됩니다.
로지스틱 회귀 모델은 ℎ𝜃(𝑥) = 𝑃(𝑦 = 1|𝑥; 𝜃)의 형태로 표현됩니다. 여기서 𝑃(𝑦 = 1|𝑥; 𝜃)는 "𝑥가 주어졌을 때 𝑦가 1일 확률"을 의미하며, 이 확률은 모델 파라미터 𝜃에 의해 조절됩니다.
결국 확률이라 표현했으니... ℎ𝜃(𝑥)가 0과 1사이에 있어야 합니다. 오 그럼 0과1사이에 있게 하려면 어떻게 해야할까요?

네 로지스틱함수 또는 시그모이드 함수를 쓰면 가능합니다. 이것에 대한 그래프는 S-커브 함수를 그려냅니다. x값으로 어떤 값이든 받을 수 있지만, 출력결과(y)는 항상 0에서1사이 값이 됩니다.

여기서의 0.5는 "결정 경계(Decision Boundary)" 즉, 분류 알고리즘이 클래스를 구분하는 데 사용하는 특성 공간 내의 경계를 가리킵니다. 로지스틱 회귀에서 결정 경계는 모델의 가설 함수가 0.5를 출력하는 지점을 기준으로 설정됩니다.
결정 경계는 특성 공간의 차원에 따라 다양한 형태를 가질 수 있습니다. 특성이 두 개인 경우 결정 경계는 직선이 되고, 특성이 세 개인 경우 결정 경계는 평면이 됩니다. 더 높은 차원에서는 결정 경계는 초평면(hyperplane)이 됩니다.
일단 가볍게 특성이 두개인 경우를 한번 볼까용? 아래와 그림과 같은 상황일 때

𝜃0 = −3, 𝜃1 = 1, 𝜃2 = 1이라고 가장한다면
−3 + 𝑥1 + 𝑥2 ≥ 0, 𝑦 = 1로 예측 𝑥1 + 𝑥2 ≥ 3
−3 + 𝑥1 + 𝑥2 < 0 , 𝑦 = 0로 예측 𝑥1 + 𝑥2 < 3
짠!
다음으로 로지스틱의 비용함수도 구해보겠습니다. 그런데 로지스틱의 비용함수는 선형회귀의 비용힘수와 다른 식을 씁니다. 로지스틱의 회귀의 가설함수 즉, 시그모이드 함수는 비선형 함수이기 때문입니다. 시그모이드 함수의 출력값은 0에서 1 사이입니다. 이런 비선형성 때문에, 선형 회귀에서 사용하는 MSE(평균제곱오차)를 로지스틱 회귀의 비용 함수로 사용하면, 비용 함수가 볼록(convex)하지 않은 형태를 가지게 됩니다.
비용 함수가 볼록하지 않다는 것은 여러 개의 지역 최소값(local minimum)이 존재할 수 있음을 의미합니다. 이렇게 되면 경사 하강법(Gradient Descent)와 같은 최적화 알고리즘이 전역 최소값(global minimum)에 수렴하지 못하고 지역 최소값에 갇힐 수 있습니다. 이는 최적의 모델 파라미터를 찾는 데 문제가 됩니다.

그러면 어떻게해야할까요ㅠ
ㅎㅎ 볼록한 형태를 가진 로그 손실 함수(Log Loss Function)를 사용합니다. 이 비용 함수는 모든 파라미터 값에서 단 하나의 전역 최소값만을 가지며, 이로 인해 최적화 알고리즘이 전역 최소값에 수렴할 수 있습니다.
로그 손실 함수는 실제 클래스 레이블과 모델이 예측한 확률 사이의 차이를 측정합니다. 로지스틱 회귀의 비용 함수는 각 학습 샘플에 대해 다음과 같습니다

y = 1 일 때, 비용 함수는 Cost (ℎ𝜃(𝒙), 𝑦) = − log (ℎ𝜃(𝒙))
y = 0 일 때, 비용 함수는 Cost (ℎ𝜃(𝒙), 𝑦) = − log(1 − ℎ𝜃(𝒙) )
여기서 ℎ𝜃(𝒙)는 로지스틱 회귀 모델의 가설 함수입니다. 즉, x에 대한 예측 확률입니다.

y = 1 일때와 y = 0 일때를 다 적용할 수 있게 두 식을 합체!

이제 위의 비용함수를 최소로 만들면 되겠죠? 네 맞습니다. 선형회귀때와 똑같습니다. 로지스틱 회귀에서도 경사 하강법(Gradient Descent)이라는 최적화 방법을 사용하여 비용 함수를 최소화하는 파라미터를 찾습니다. α(학습률)을 이용해서 한 번의 업데이트가 아니라 여러 번 반복되며, 비용 함수의 값이 충분히 작아질 때까지(즉, 수렴할 때까지) 계속됩니다.

경사하강법 이외에도 여러 최적화 알고리즘이 존재합니다.
Conjugate Gradient, BFGS, L-BFGS는 비용 함수를 최적화하기 위해 사용되는 고급 최적화 알고리즘들입니다.
Conjugate Gradient: 이 방법은 방향을 선택할 때 이전의 경사 벡터를 고려하여 계산합니다. 이로 인해 보다 빠른 수렴이 가능하며, 특히 고차원 문제에 효과적입니다.
BFGS(Broyden-Fletcher-Goldfarb-Shanno): BFGS 알고리즘은 Hessian 행렬의 역행렬을 근사화하여 비용 함수의 곡률을 고려합니다. 이를 통해 더욱 빠른 수렴이 가능하다는 장점이 있습니다.
L-BFGS(Limited-memory BFGS): BFGS의 메모리 사용량을 줄인 버전입니다. 대규모 데이터셋에서는 BFGS보다 훨씬 효율적이며, 결과적으로 더 빠른 수렴이 가능합니다.
이 세 가지 알고리즘의 공통된 장점은 학습률을 수동으로 설정할 필요가 없다는 것입니다. 이로 인해 학습률을 선택하는 것에 대한 부담이 줄어들며, 보다 빠른 수렴이 가능합니다. 그러나 이러한 알고리즘들은 기본적인 경사 하강법에 비해 알고리즘이 복잡하며, 구현이 어려울 수 있습니다.
이진분류뿐만 아니라 로지스틱을 활용한 다중분류도 가능합니다!
'One-vs-all' (또는 'One-vs-rest') 전략은 다중 클래스 분류 문제를 여러 개의 이진 분류 문제로 변환하여 해결하는 방법입니다.
이 전략은 각각의 클래스에 대해 해당 클래스와 그 외의 모든 클래스를 분리하는 이진 분류기를 학습시킵니다. 즉, 클래스의 수만큼 이진 분류기를 생성합니다. 예를 들어, 개, 고양이, 말 세 가지 클래스를 분류하는 문제가 있다면, '개 vs 개가 아닌것들', '고양이 vs 고양이가 아닌것들', '말 vs 말이 아닌것들' 세 가지 이진 분류기를 학습시킵니다.

각 분류기는 각각의 클래스를 타겟 클래스로 보고 그 외의 모든 클래스는 하나의 두 번째 클래스로 간주하여 로지스틱 회귀 모델을 학습시킵니다. 이때 학습된 각 모델은 해당 클래스일 확률을 예측합니다. 즉, ℎ𝜃_1(𝒙)는 주어진 입력 x가 클래스 i일 확률을 반환합니다. 새로운 입력 데이터 x에 대한 클래스를 예측할 때는, 각 분류기의 예측을 활용합니다. 각 분류기는 입력 x가 자신이 대응하는 클래스에 속할 확률을 출력합니다. 이때 가장 높은 확률을 출력하는 분류기의 클래스를 x의 예측 클래스로 선택합니다.
'Machine Learning_모델설계_Python' 카테고리의 다른 글
| 판별분석_1 개념 (0) | 2023.05.28 |
|---|---|
| 로지스틱회귀_2 실습 (1) | 2023.05.24 |
| 선형회귀_6 릿지, 라쏘 실습 (2) | 2023.05.21 |
| 선형회귀_5 다중선형회귀실습 (2) | 2023.05.19 |
| 선형회귀_4 릿지, 라쏘 정규화 (0) | 2023.05.18 |