[week3] Classification and Representation
A. Classification
1. 종양의 크기에 따른 악성 유무 데이터가 있다고 했을 때, 우리가 저번에 배웠던 회귀모델을 적용시켜보자.
2. 회귀 모형은 데이터가 적을 때는 잘 적용되는 것처럼 보이지만, 크기가 큰 악성 종양 데이터가 생김으로써, 기울기인 세타 값이 작아지게 되며, 그로 인해 악성 종양을 분류하는 임계치가 커지게 되어 버린다.
3. 이로 인해서, 악성 종양이지만, 종양이 아니게 분류 되어 버린다.
1. 이 분류 문제에서, 예측 값은 0 또는 1의 값을 가지지만, 예측 값은 1보다 크고 0보다 작은 값을 가지는 상황이 발생 될 수 있는데, 이 문제를 해결하는 것이 로지스틱 리그레션이다. 리그레션이라는 말이 들어가지만, 역사적인 의미에서 들어간것 이기 때문에 분류라고 생각해라.
2. 로지스틱 리그레션은 분류다. 그리고 분류는 결과 값이 0또는 1과 같은 이산 값을 가지는 것을 의미한다.
B. Hypothesis Representation.
1. Logistic Regression Model에서는 가설의 값은 0과 1 사이의 값이 된다. 그렇기 때문에 기존의 가설 세타와 데이터의 곱에 특별한 함수를 취한 것이 로지스틱회귀모델에서의 가설이 된다.
2. 이 함수의 이름을 시그모이드 함수, 로지스틱 함수라고 하는데 둘은 기본적으로 동의어다.
3. 시그모이드 함수를 풀어서 놓으면 1+ e에 가설 h가 올라간 형태가 된다. 그리고 그 그래프는 가설의 값을 x값으로 삼아 1과 0 사이의 값으로 구분된다.
1. 시그모이드 함수에 의해서 가설은 0과1 사이의 값을 가지게 된다. 여기서는 0.7의 값을 가지게 된다.
2. 이 말이 의미하는 것은 세타에 의해 파라미터화된 주어진 X가 1의 값을 가질 확률이라는 의미가 된다.
3. 확률이기 때문에 y=0의 값을 가질 확률은 y=1 의 값을 가질 확률을 1에서 빼준 값이 된다.
1. 그렇다면 언제 y=1, y=0이라는 예측 값을 주게 되는 것일까?
2. 가설 h가 0.5보다 클 때, 1이라고 가정하고, 0.5보다 작으면 0이라고 가정한다면
3. 세타의 전치행렬에 X를 곱한(본래의 h)가 0보다 작을 때 이 함수의 시그모이드 함수를 적용하면 0.5보다 작은 값을 가지게 되며, 0보다 클 때는 0.5보다 큰 값을 가지게 된다.
1. 세타를 위와 같이 가정 했을 때, h(x)의 값은 아래와 같이 되며, 그 값이 0보다 클 때 y=1로 분류하며 0보다 작을 때 0으로 분류하게 된다.
1. 조금 더 복잡한 형태에서의 분류를 보면, 원 형태의 결정 경계를 볼 수도 있다. 중요한 것은 데이터 셋으로 부터 이 경계가 결정 되는 것이 아니라, 가설 세타에 의해서 결정 경계가 결정된다는 것이다.
2. 세타로 인해서 , 만들어진 가설 h(x)가 여러 다항식으로 이루어 져 있을 때, 결정 경계의 형태 또한 복합한 형태가 될 수 있다.
1. 그렇다면 로지스틱 회귀의 비용함수는 무엇일까? 어떻게 파라미터 세타를 선택해야 할까?
1. 선형회귀에서는 오차의 제곱의 합을 이로 나눈 값을 비용함수로 썼다.
2. 선형회귀에서는 예측하는 y값 또한 연속된 값으로 이루어져 있었기 때문에 비용함수가 convex(움푹파인)되었지만 이 비용함수를 그대로 로지스틱 회귀에 적용하면 왼쪽과 같은 구불구불한 형태가 되여 지역 최솟값을 가지게 된다.
1. 그래서 필요한 비용함수가 -log(h(x))의 형태다. y=1일 때의 비용함수는 -log(h(x))이며, y=0일 때의 비용함수 는
-log(1-h(x))가 된다.
2. 이 함수는 로그 함수를 뒤집어서 값이 x값이 1인 지점에서 끊은 형태인데, 유용한 특징이 있다. 그것은 정확히 값을 맞추었을 때의 값은 0(비용이 0)이 되고, 완전히 틀린 값을 주었을 때, 그 값이 무한대로 발산하는 것이다.
3. 이러한 비용함수를 이용하면, 경사하강법을 쓸 수 있을 것이다.
1. 비용함수를 축약한 형태가 중간의 파랑색 글씨와 같은 식이 된다. 어떻게 둘이 같을까 생각한다면 한번 y=1일 때와 y=0일 넣어보라. 그러면 결국에 위와 같은 식이 나오게 된다.
1. 그렇다면 왜 이러한 식을 사용해도 되는 것일까? 이 공식의 배경에는 최대우도 추정법이 담겨저 있다. 최대 우도 추정법이란, 확률이 높은 것이 실제로 일어난다라고 추정하는 일종의 규칙이다. 이 규칙은 표준통계와 베이즈통계 모두가 기반으로 삼고 있는 하나의 방법이다.
2. 경사하강법을 적용하기 위해 비용함수를 부분미분하면 중간의 세타와 같은 식을 얻을 수 있게 되는데 이 식은 선형회귀에서 보았던 것과 같아 보인다. 실제로 같은 것일까? 아니다. 왜냐하면 가설 h(x)가 달라졌기 때문이다. 여기서 가설을은 1-e의 세타의 전치함수에 X를 승한 값의 역수 값이므로, 이 가설의 차이가 비용함수의 미분의 차이를 만든다.
3. 경사하강법의 업데이트 규칙이 외관상 동일해 보일지라도, 가설의 정의가 바뀌었기 때문에, 두 경사하강은 다르다.
C. Advanced Optimization
1. 비용함수가 있고, 그 비용함수를 최소화 한다. 비용함수를 부분미분하여 경사하강을 위한 공식을 구한다. 비용함수를 계산하는 알고리즘으로는 Gradient descent, Conjugate gradient, BFGS, L-BFGS 등이 있다.
2. 경사하강을 제외한 3개의 공식은 몇 가지 이점이 있다. 첫 째로, 알파를 고를 필요가 없고, 둘째로 대체로 빠르다. 그리고 단점으로는 복잡성이 있다.
3. 이런 복잡한 것 원리까지 알면 좋다. 하지만 모른다고 사용하지 말란 법은 없다. 라이브러리 사용해라!
1. Octave의 라이브러리를 이용하여 최적값을 찾는 것을 보여주셨다. option을 먼저 정의하고 초기 세타값을 설정하여 준뒤, 비용항수를 넣어주면, 값을 계산할 수 있게된다.
1. 어찌 됐든 방법은 똑같다. 세타로 이루어진 비용함수를 구하고, 비용함수를 미분하여 각 세타의 경사를 구한 후, 업데이틑 하는 것이다.