🔥 메타코드에서 머신러닝 입문 부트캠프 강의를 듣고 있다. 나는 머신러닝 강의를 들으면서 내 손으로 직접 하이퍼 파라미터 수정 같은 걸 해보고 싶었다! 빅분기에서는 너무 무지성으로 랜덤포레스트만 돌려서; 하핫.. 근데 머신러닝 강의 실습 파일을 보면 진짜 완벽하게 손실함수 계산, 에포크 계산 등에 대한 내용을 다루고 있다. 이 부분은 블로그에서 무료로 풀면 선생님께 죄스러울 정도라 그냥 혼자 잘 배우고 간직하는 것으로 하고, 다음 이론 내용을 정리해보려 한다.
5. 분류(Classification) - 로지스틱 회귀
지난 글까지는 회귀에 대한 내용 중 선형회귀, 다중회귀 등을 배웠다. 이번 글부터 정리할 내용은 분류에 해당하는 내용이다. 목차는 위와 같음!
회귀랑 분류가 어떻게 다른지, 다시 한 번 살펴보면...
회귀는 종속변수(출력값 y)가 수치형일 때 사용하는 거고 분류는 종속변수가 이산형 변수, 즉 범주형 변수일 때 사용한다.
회귀 모델은 일반적으로 y = ax+b 같은 함수 형태로 표현되지만,
분류는 이진분류(2개로 나뉘는)일 때 시그모이드 함수로, 다중 분류(3개 이상)일 때 소프트맥스 함수로 나뉜다.
선형 회귀분석으로는 분류를 할 수 없을까? Korea = 1, american = 2, japanese = 3 이런 식으로 수치형(연속형) 변수를 부여하게 되면 숫자에 따라 결과가 달라진다.
예를 들어 japanese = 100으로 엄청 크게 잡으면 손실함수 생성 시 (100-10)^2 = 90^2이 되고, 잘 예측하겠지만
american = 10으로 잡으면 (1-10)^2 = 9^2이 된다. 즉, american에 대해서는 예측 성능이 떨어진다.
시그모이드 함수는 지수 함수의 분수 형태이다. 마이너스 무한대로 갈수록 0에 가까워지고, 무한대로 갈수록 1에 가까워지는 함수이다. 그리고 x = 0일 때 출력값은 1/2임!
조건부 확률의 비를 나타낸다. p(y = 1 | x) /p(y = 0 | x) = 성공할 확률/실패할 확률이다.
성공할 확률과 실패할 확률 두 가지 밖에 없다면, 1에서 성공할 확률을 뺀 값은 실패할 확률이므로 odds 는 p(y = 1 | x) / (1-p(y = 1 | x))로 나타난다.
오즈에 로그를 씌우면 로짓 변환(logit)이라고 부른다. 로그를 왜 취할까?
logit(0.5) = log(0.5/(1-0.5)) = log 1 하면 원래 odds는 0~1 사이의 범위만 나왔다면 이를 log로 했을 땐 마이너스 무한대부터 무한대까지로 표현된다! 넘나 신기
odds에 log를 씌운 logit 변환을 바탕으로 로지스틱 함수를 정의할 수 있다.
로지스틱 함수는 로짓 변환의 역함수로 해석할 수 있다.
y = 2x에 대한 역함수는 x = 2y 즉, y = 1/2x이다. (y = x라는 일차함수를 기준으로 대칭되는 함수가 나온다!)
로짓변환의 출력값을 w로 표현해서 선형함수처럼 표현하면
w0 + w1x1 + ... + wdxd로 표현할 수 있다.
f(p) = log(p/(1-p)) = W^T*X = y 로 표현할 수 있으므로
log(p/(1-p)) = W^T*X에서 log 우항으로 넘기면 p/(1-p) = e^(W^T*X) 이렇게 된다.
정리하면 p = e^W^T*X / (1+ e^W^T*X) 이다.
다시 정리하면, 시그모이드 함수는 1/ (1 + e^x) 형태로 표현되는데, 결국 로지스틱 함수도 시그모이드 함수에서 자연상수의 지수로 -W^T*X가 들어가는 것
로지스틱 회귀 모델은 시그모이드 함수와 선형 회귀를 합친 것이다.
더블유트랜스포즈엑스(W^T*X)가 0보다 크면 1을, 0보다 작으면 0을 출력하는 이진분류 형태로 나타난다.
로지스틱 회귀의 파라미터는 W 뿐이다.
그러면 이 w의 최적값을 찾기 위한 손실 함수는 어떻게 정의할 수 있을까?
경사하강법을 사용할 건데, 경사하강법은 ( 델타 손실함수 / 델타 w )의 분수 형태로 되어 있었다.
MSE는 회귀의 손실함수이므로, 로지스틱회귀를 위한 손실함수를 정의해주면 경사하강법 식에 싹 넣어서 돌릴 수 있단 말씀
P(w|x) = p(x|w)*p(w) / p(w)는 비례한다 p(x|w)*p(w)
사후 확률은 p(w | x) 로, 데이터가 주어졌을 때 가설에 대한 확률 분포(신뢰도)
우도 확률은 p(x | w)로, 가설을 잘 모르지만 안다고 가정했을 경우, 주어진 데이터의 분포
사전 확률은 p(w)로, 데이터를 보기 전에, 일반적으로 알고 있는 가설의 확률
즉, p(w|x) = p(x|w)*p(w) 라는 식은 사후 확률 = 사전 확률과 우도 확률의 곱이라고 해석할 수 있다. 이게 바로 베이즈 정리!
베이즈씨... 당신 대단하시군요...
이 확률들을 통해 가설(모델의 파라미터)을 추정하는 방법으로 MLE와 MAP 두 가지 방법이 있다.
여기서부턴 또 다음 글에서...
지금은 10월 31일 새벽.. 서포터즈 이번 기수 활동이 마무리 되는 날이다. 고생 참 많았구려... 그래도 덕분에 꾸준히 꾸준히 글을 써서 벌써 74번째 글이다. 조금만 더 파이팅🔥
* 메타코드 서포터즈로서 강의를 제공받아 작성하였습니다. 이미지를 클릭하면 홈페이지로 이동합니다.
'빅데이터분석' 카테고리의 다른 글
[머신러닝] 메타코드 강의 후기_머신러닝 입문 부트캠프 (8) MLE/MAP (5) | 2024.10.31 |
---|---|
[머신러닝] 메타코드 강의 후기_머신러닝 입문 부트캠프 (6) 편향과 분산의 Trade-off를 해결하는 방법 (1) | 2024.10.27 |
[머신러닝] 메타코드 강의 후기_머신러닝 입문 부트캠프 (5) 편향과 분산(Bias and Variance) (1) | 2024.10.27 |
[머신러닝] 메타코드 강의 후기_머신러닝 입문 부트캠프 (4) 경사하강법(Gradient Descent) (1) | 2024.10.20 |
[머신러닝] 메타코드 강의 후기_머신러닝 입문 부트캠프 (3) 선형 회귀(Linear Regression)와 최적화(optimization) (1) | 2024.10.20 |