일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- jupytertheme
- Machine Learning
- lol api
- MySQL
- 주피터노트북
- 주피터노트북 커널 목록
- 딥러닝
- 모두를 위한 딥러닝
- 주피터노트북 커널 제거
- overfitting
- ubuntu
- deep learning
- Git
- 주피터노트북 커널 추가
- 주피터 노트북 테마
- 주피터테마
- pandas
- regression
- 나는리뷰어다2021
- GitHub
- feature scaling
- 회귀분석
- 한빛미디어
- 경사하강법
- random forest
- Udacity
- Python
- 데이터분석
- Linear Regression
- deeplearning
- Today
- Total
유승훈
lec05 - Logistic Regression 본문
지난 챕터까지 선형 회귀분석에 대해 공부했습니다. 일반적인 선형 회귀분석은 회귀문제, 즉 연속형 변수를 예측하는데 사용하는 알고리즘입니다. 하지만 성공/실패, 합격/불합격, 남성/여성 등과 같이 두 Class 중 하나로 예측하는 이진분류 문제를 푸는데 회귀분석의 한 종류인 Logistic Regression을 사용할 수 있습니다.
A와 B 둘 중 하나로 분류하는 Task가 이진분류, Binary Classification입니다.
시험에서는 통과/불통과, 스팸에서는 스팸/비스팸 등 두 가지 Class를 분류합니다. X변수들로 Y가 두 Class 중 어떤 것에 속할지를 예측하는 것입니다. Class가 두개가 아니라 3개, 4개로 더 많아지면 Multi-class Classification이라고 합니다.
전에 배웠던 Linear Regression과 비교해봅시다.
Logistic Regression은 구분선으로 두개의 Class를 분류할 수 있어야 합니다. 이 구분선을 Decision Boundary라고 합니다. 구분되에 딱딱 끊어져 있는 값들이 됩니다. 반면 Linear Regression은 연속적인 값을 갖습니다.
Y-X로 Plot을 그려보면 다음과 같습니다. 일반적인 Linear Regression을 적용하면, 우리의 X값에 대해 연속적인 형태의 Y를 얻게 됩니다. 하지만 우리가 원하는 것은 Y가 0 or 1의 값을 갖는 것입니다. 따라서 새로운 형태의 수식을 필요로 합니다. 이때 활용되는 것이 Logistic Function인데, Y를 0-1 사이의 확률값으로 바꾸어서 우리의 Decision Boundary를 통해 Y를 0 or 1로 분류할 수 있습니다.
이 Logistic Function은 Sigmoid 함수라고도 합니다. $g(z)=1/(1+e^{-z})$의 형태를 갖는데요, 여기서 z값에 따라 결과가 바뀌는 것을 볼 수 있습니다.
`e^-z`는 `X`가 커지면 함수값은 무한대로 발산하고, 작아지면 0으로 수렴하는 형태의 함수입니다. `z`가 `-z`가 된다면? 반대의 형태를 갖게 되죠.
`e^-z`는 `X`가 커지면 함수는 0으로 수렴하고, 작아지면 무한대로 발산하는 형태의 함수입니다.
이를 $\frac{1}{(1+e^{-z})}$에 적용시키면,`z`가 커질 때 `e^-z`는 0으로 수렴하면서 함수값은 1에 가까워집니다. 반대로 `z`가 작아지면 `e^-z`는 무한대로 발산하면서 분모가 사실상 무한대에 가까워지기 때문에 함수값은 0에 가까워집니다.
Linear Regression을 통해 나온 실수값을, Sigmoid Function을 통해 0 or 1의 값으로 바꿔준다고 생각할 수 있습니다. 이렇게 나온 값을 Decision Boundary를 통해 분류합니다. 일반적으로 0.5보다 크면 1, 작으면 0으로 구분합니다.
나중에 들어온 데이터에 대해서도 Decision Boundary를 기반으로 `X`값에 대해 0 또는 1로 구분할 수 있습니다.
학습을 위한 Cost Function에 대해 설명하겠습니다. Cost는 말 그대로 비용입니다. 처음 모델이 만들어질때는 Weight가 Random으로 설정되는데, 이를 최적화하는 과정입니다.
Cost는 처음 설정된 Weight와 우리가 원하는, 최적의 Weight 사이의 차이입니다. 이를 계속해서 줄여나감으로서 더 나은 모델을 만들어나가는 것입니다.
Logistic Regression에서의 Cost는 아래의 수식으로 계산됩니다.
Sigmoid함수는 0과 1 사이의 연속적인 값을 갖고, 우리가 가진 데이터는 0 아니면 1의 형태를 갖습니다. 완벽히 일치하는 형태는 아니기 때문에 둘의 차이는 구불구불한 모양을 보입니다. 하지만 Cost를 구하려면 Convex, 즉 볼록한 형태를 가져야 합니다. 이를 Log 함수에 넣어서 우리가 원하는 값의 형태로 나타낼 수 있습니다.
일반적인 Log(x)함수는 x=1일때 0이 되고, x=0이면 -inf로 수렴합니다. y=1이고, 우리의 가설을 통해 구한 값도 1이라면, 차이가 없으므로 Cost=0입니다. 우리의 가설로 구한 값이 0에 가까워질수록 Cost는 커집니다. 따라서 $-log(h_\Theta(x))$를 통해 y=1일때의 Cost를 구할 수 있습니다.
y=0일때는 이 함수를 반대로 돌려서 활용합니다. $h_\Theta(x)$가 아니라 $1-h_\Theta(x)$를 사용합니다. 우리의 가설을 통해 구한 값이 0이라면, 차이가 없으므로 Cost=0이 됩니다. 여기서 우리의 가설로 구한 값이 1에 가까워질수록 Cost는 커집니다. 따라서 $-log(1-h_\Theta(x)$)를 통해 y=0일때의 Cost를 구할 수 있습니다.
그렇다면 Cost 함수는 어떤 방식으로 최적화 될까요?
최적화라고 함은 결국 기울기가 0인 지점을 찾는 과정입니다.
Linear Regression에서의 Optimization과 동일하게, Learning rate * 기울기의 값으로 Weight를 업데이트 하는 과정을 거칩니다.
'강의정리 > 모두를 위한 딥러닝 시즌 2' 카테고리의 다른 글
lec07 - Application and Tips (0) | 2021.02.16 |
---|---|
lec06 - Softmax Regression, Classifer의 Cost function (0) | 2021.02.15 |
lec04 - Multi variable linear regression (0) | 2021.02.10 |
lec03 - Liner Regression and How to minimize cost(Gradient Descent) (0) | 2021.02.08 |
lec02 - Simple Linear Regression (0) | 2021.02.07 |