4. Logistic Classification의 가설 함수 정의 / cost 함수 설명
(https://www.youtube.com/watch?v=PIjno6paszY&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=11)
(https://www.youtube.com/watch?v=6vzchGYEJBc&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=12)
Logistic Classification은 머신러닝에서 중요 알고리즘이다.
linear regression은 숫자를 예측하는 것이라면, Calssification은 Binary Classificatoin이라고도 할 수 있다. 둘 중 하나를 고르는 것. ex) Spam Detection: Spam(1) or Ham(0)
linear regression에서는 너무 동떨어진 데이터가 입력된다면, linear가 기울어져 원래 패스였던 점수도 논패스가 될 수 있다.
또 다른 문제는 Hypothesis가 0보다 작거나, 1보다 크다면, 모양이 좋지 않게 된다.
이 linear regression은 간단하고 좋지만, Wx+b가 0과 1 사이로 압축시킨 것이 있으면 좋겠다 했을 때, 나온 게 이거다.
이 함수를 그리면 이와 같다.
이는 sigmoid라고 한다. 또, logistic function이라고 한다. 그래프를 보면, z가 작아지면 0과 가까워지고, 커진다면 z는 1과 엄청 가깝게 간다.
Logistic Hypothesis는 아래와 같으며, 출력값이 항상 0과 1 사이다.
이는
와 달리 매끈한 밥그릇 모양이 아니라, 구불구불 밥그릇이기 때문에 그레디언트 디센트 알고리즘을 쓰지 못 한다.
새로운 코스트 함수다.
밑 식을 보자. y=1일 때를 봤을 때, 성공적으로 예측하여 H(x)=1일 때, cost(1)=0이다. 하지만 틀려서 H(x)=0이라면, cost가 무한으로 커져서 우리가 잘못 예측했음을 알게 된다. 다음으로 y=0일 때. 성공적으로 예측하여 H(x)=0일 때 cost=0이고, 틀려서 H(x)=1이라면 cost가 무한으로 간다.
위 식은 if가 들어가서 불편하니 이와 같이 합칠 수 있다.
보면 똑같음을 쉽게 알 수 있다. y=1이면 우측 식이 사라지고, y=0이면 좌측 식이 사라진다.
이를 이용한 cost함수는 이와 같다.
이 cost는 매끈한 밥그릇 모양이다. 기울기는 이와 같다.
# cost function
cost = tf.reduce_mean(-tf.reduce_sum(Y*tf.log(hypothesis)+(1-Y)*tf.log(1-hypothesis)))
# Minimize
a = tf.Variable(0.1) # Learning rate, alpha
optimizer = tf.train.GradientDescentOptimizer(a)
train = optimizer.minimize(cost)