MY MEMO

[MACHINE LEARNING - Sung Kim] Logistic Classification 본문

MACHINE LEARNING/Sung Kim - 이론

[MACHINE LEARNING - Sung Kim] Logistic Classification

l_j_yeon 2017. 4. 3. 18:08

1) Logistic (Regression) classification


-정확도가 높고 자주 쓰이는 알고리즘 => 중요함


우리가 Regression을 사용할때에는 아래와 같은 데이터와 식이 주어진다



Binary Classification => 두가지의 결과 중 하나를 고르는 것


ex) Spam Detection : Spam or Ham

ex) Facebook feed : show or hide

 => facebook에서 사용자의 "좋아요"피드를 기반으로 타임라인 중에 어떤라인을 보여줘야하는지 자동으로 판단

ex) Credit Card Fraudulent Transaction detection : legitimate/fraud

 =>그동안의 카드 사용량을 바탕으로 평소와 다르게 소비를 한다면 -> 이것은 가짜다!!!! 라고 판단


이것을 편리하게 생각하기 위해 0 or 1로 판단


사용되는 곳?

-> 이미지를 기반으로 병이 암인지 아닌지에 대한 판단 (malignant / benign tumor)

-> finance (주식시장) 판단 -> 이 전의 주식 동향을 파악하여


간단하게 아래의 예시가 있다고 생각해보자



이 예시에서는 정확한 기점을 기반으로 fail과 pass를 나눌 수 있다.

하지만 만약


위와 같이 새로운 데이터가 찍힌다면 linear graph를 그렸을 때 정확한 기점을 나눌 수 없다.

그렇다면 linear graph를 사용할 수 없다.


위의 함수를 살펴보자.

위의 함수는 sigmoid or logistic 함수라고 불린다.

이 함수의 특징은 최소값이 0이고 최대값이 1인 것이다.

이 함수를 사용하여 linear graph를 대신할 수 있고, binary classification의 정확성을 높일 수 있다.


아래의 함수가 logistic 함수이다.


1) Logistic (Regression) classification - cost function & gradient decent


logistic function의 함수를 하용하였기 때문에 cost function도 변화하여야한다.


위의 cost function중 오른쪽 graph를 보자

원래 굴곡이 없었던 logistic graph가 제곱이 되면서 다시 한번 구부러져 매끈하지 못한 선의 그래프가 도출된다.

오른쪽과 같은 그래프에서는 어디가 최소점인지 확실하게 찾을 수 없다.

만약 오른쪽 그래프의 가장 왼쪽점부터 오른쪽으로 타고 내려온다고 생각해보자

알고리즘을 사용하면 그래프를 타고 내려오면서 가장 작은 값이 첫  번째 굴곡의 그래프의 최소점이라고 판단할 수 있다.

바로 이 점이 local minimum인 점이다.

하지만 우리는 global minimum인 점을 도출해야한다.

=> 따라서 우리는 오류를 줄여주기 위하여 log를 사용한다!



위의 함수가 새로운 cost function함수이다. 왜 이런 함수를 사용해야할까?

아래의 그래프를 보면 쉽게 확인 가능하다.



우리는 cost function이 작아지게 만드는 것이 목표이다.

그렇다면 새로 만든 cost function을 이용해서 그래프를 그려보자

왼쪽 그래프는 h(x) 함수가 1로 가면 cost(1) = 0으로 도달한다. 즉 우리가 원하는 값이다.

하지만 h(x) 함수가 0으로 가면 cost(0) = 무한대 로 도달한다. 차이가 무한대로 커지기 때문에 우리가 원하는 목표가 아니라고 할 수 있다.

오른쪽 함수도 왼쪽함수처럼 생각하여 이용할 수 있다.


즉 최종적으로 아래와 같은 식이 도출된다.







위의 cost function을 이용하여 gradient descent algorithm을 나타낼 수 있다.


위의 함수가 새로운 gradient descent algorithm이다.

이 algorithm은 이미 tensorflow libraray에 존재한다.

따라서 아래와 같이 코드를 적용하면 쉽게 값을 구할 수 있다.

Comments