Logistic Regression의 cost 함수 설명

해당 게시물은 Edwith에서 제공하는
머신러닝과 딥러닝 BASIC을 듣고 요약 정리한 글입니다.


Cost function

목표는 global minimum을 찾는 것
하나의 local에서 기울기가 변하지 않는 구간을 최솟값으로 잘못 인지 가능
기존의 Linear Regression의 Cost function 사용 불가


New cost function for logistic

\begin{align} cost(W) = \frac{1}{m}\sum c(H(x),y)
\end{align}


log함수를 사용하는 이유

예시) y가 1일 경우
\begin{align} H(x) = 1 \to cost(1) = 0
\end{align}

\begin{align} H(x) = 0 \to cost(1) = \infty
\end{align}

예시) y가 0일 경우 \begin{align} H(x) = 0 \to cost(0) = 0
\end{align}

\begin{align} H(x) = 1 \to cost(1) = \infty
\end{align}

위의 결과로 원하는 결과 값과 멀어질수록 무한대로 수렴
원하는 결과 값과 가까워질수록 0으로 수렴하도록 하기위해 log함수 사용


Cost function

\begin{align} C(H(x), y) = -ylog(H(x)) - (1 - y)log(1 - H(x))
\end{align}


Minimize cost - Gradient decent algorithm

\begin{align} cost(W) = -\frac{1}{m}\sum ylog(H(x)) + (1 - y)log(1 - H(x))
\end{align}

\begin{align} W := W - \alpha \frac{\sigma}{\sigma W}cost(W)
\end{align}

파이썬 코드 예시

# 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)