Notice
Recent Posts
Recent Comments
Link
«   2025/09   »
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 29 30
Archives
Today
Total
관리 메뉴

코딩하는 바나나

Logistic Regression 본문

Machine Learning

Logistic Regression

유기농바나나칩 2023. 1. 18. 16:28

이전에 Linear Regression에서 우리가 보았던 시험성적 예제와 다른 예제를 생각해보자

이번에는 어떤 수업을 듣는 학생들의 공부 시간과 그 수업에 대한 pass, fail 여부에 대한 데이터가 있다.

pass, fail 여부를 숫자로 각각 1,0으로 나타내면 위와 같이 표현 할 수 있다. 이 경우 Linear Regression을 사용할 수 있을 까? 저렇게 연속적인 분포가 아닌 데이터를 linear regression을 사용하게 되면 잘 동작하지 않는다. 따라서 우리는 다른 방법이 필요하다.

 

Sigmoid


Logistic Regression에서는 Sigmoid 함수를 사용한다.

sigmoid 함수는 위와 같이 생겼다. 1 / (1 + e^-x) 

함수 식을 보면 알 수 있듯이 함수값이 1에서 0사이의 값을 가진다. 

우리는 앞서 구한 가설 z를 이 식의 값으로 넣는다 그러면 각 데이터 마다 어떤 값은 1에 더 가까우니 pass 어떤 값은 0에 더 가까우니 fail로 처리해주면 될 것이다.

 

Cost function


자 그러면 Linear Regression에서 cost function을 이용해서 최적의 w,b값을 찾은 것 처럼 이번에도 최적의 w,b의 값을 찾아야 한다. 그런데 Linear Regression과 같은 cost function을 사용 할 순 없다.

왜냐하면 sigmoid 는 0과 1사이의 값을 갖기 때문에 cost function에서 제곱을 하는 과정에서 cost 값이 작아진다. 

또한 sigmoid 함수를 linear regression의 cost function에 넣어보면 cost function이 이차함수와 비슷한 형태 즉 convex 함수가 아닌 꼬불꼬불한 함수가 나온다. 이렇게 되면 우리가 cost의 최솟값을 찾지 못하고 local minima에 빠질 수 있다. 

따라서 새로운 cost function을 사용해야한다.

cost function = (y = 1)  -log(H(x))

                        (y = 0)  -log(1 - H(x))

 

=> -ylog(H(x) - (1 - y)log(1 - H(x))

조금 특이한 형태이다. cost function이 y값에 따라서 달라진다. 왜 이런 cost function을 사용할까?

-log(x) 함수는 위와 같이 생겼다. sigmoid 함수는 0에서 1사이의 값을 가진다. 따라서 우리는 이 부분만 살펴보면 된다. 먼저 y값이 1일때 우리는 우리의 가설 함수인 sigmoid 함수의 함숫값이 1에 가깝게 나오는 것을 기대 할 것이다. 실제로 그렇게 나오면 우리는 cost를 작게 줘야한다. 반대로 y값이 1인데 우리의 가설 함수의 값이 0에 가깝게 나온다면 패널티를 주어서 cost가 크게 나와야한다. 위의 함수를 보면 0에 가까워 질수록 cost의 값이 굉장히 빠르게 증가하는 것을 볼 수 있다. y=0일때는 1 - H(x)를 해주어서 같은 원리로 cost 값을 도출한다. 

 

이제 이렇게 나온 모든 점들에대한 cost 값의 합을 최소화 하는 w,b값을 찾으면 된다. 당연히 Gradient Descent를 사용 할 수 있다.

 

'Machine Learning' 카테고리의 다른 글

Softmax  (0) 2023.02.01
Linear Regression  (0) 2023.01.17
Machine Learning  (0) 2023.01.15