노는게 제일 좋습니다.
tensorflow 7 : Binary(Logistic) classification 본문
1.
Binary 이진
Logistic 논리의
classification 분류
데이터를 받아서 0,1로 인코딩하는 방식이다.
2.
Linear Regression과 같은 방식으로 hypothesis를 세울 때 발생하는 문제
(1) 0보다 작거나 1보다 큰 값을 뱉어낼 수가 있다.
(2) hypothesis를 얼마나 기울여야 할지 알 수 없다.
즉, 기존과 같은 가설(hypothesis)을 기반으로 하되, 이를 압축해서 0과 1로 만들어줄 새로운 함수가 필요하다.
3.
H(x)=Wx+b=z라 하자. 그리고 다음과 같은 어떤 함수 g(z)에 대입하면 두 번째 줄과 같은 결과가 나온다.
** W의 윗첨자 T는 행렬에서의 transpose를 나타낸다.
이 함수 g(z)를 logistic function 또는 sigmoid function이라고 한다.
가로축을 z, 세로축을 g(z)라고 보면 된다.
출처 https://en.wikibooks.org/wiki/Artificial_Neural_Networks/Activation_Functions
이 sigmoid function이 우리의 새로운 가설 함수이다.
4.
Binary classification을 할 때에는 cost함수 또한 Linear Regression에 쓴 것과는 달라야 한다.
만약 리니어 리그레션에 쓴 cost함수를 그대로 쓰면 Gradient Descent 알고리즘을 사용했을 때 전체에서 가장 낮은 global minimun을 못찾고, local minimum만 찾아버리는 수도 있다.
(이것이 저번에 convex function에만 Gradient Descent를 써야한다고 했던 것과 같은 이야기이다.)
그래서 다음과 같은 새로운 cost 함수를 사용한다.
이게 왜 타당한지 값을 직접 넣어보며 살펴보자
위 그래프는 y=1인 경우에 사용하는 -log(H(x))의 그래프이다.
H(x)의 값을 정답(y값)인 1로 예측했다고 하자. 그 경우 함수 c의 값이 0이 된다. 즉, cost함수의 값이 최소가 되게 한다.
만약 H(x) 0으로 한 경우, 눈으로 볼 수 없을정도로 함수 c의 값이 올라간다. 즉, cost함수의 값이.. 극혐값이 된다.
위 그래프는 y=0인 경우에 사용하는 -log(1-H(x))의 그래프이다.
H(x)의 값을 정답(y값)인 0로 예측했다고 하자. 그 경우 함수 c의 값이 0이 된다. 즉, cost함수의 값이 최소가 되게 한다.
두 개의 그래프를 그려 눈으로 확인해본 결과, 위에 써놓은 cost함수는 타당하다.
c(H(x),y) 함수를 한 줄에 쓰면 다음과 같다.( 1,0을 넣으면 한 항이 사라지는 원리로 합쳐놓은 것이다. )
5.
드디어 하이라이트이다. Gradient decent algorithm을 어떻게 적용할까!!
텐서플로우에게 맡기기로 하자.. (미분할 줄 모른다...)
optimizer = tf.train.GradientDescentOptimizer(rate)
train = optimizer.minimize(cost)
'Python > 통계 및 데이터관련' 카테고리의 다른 글
tensorflow 9 : Shapes (0) | 2017.01.23 |
---|---|
tensorflow 8 : Multinomial Logistic Regression (0) | 2017.01.23 |
tensorflow 6 : multi-variable Linear Regression (2) | 2017.01.15 |
tensorflow 5 : Gradient Descent Algorithm (0) | 2017.01.14 |
tensorflow 4 : linear regression (0) | 2017.01.12 |