[TIL]선형분류2, MNIST, 분류문제 실습
- 확률적 식별 모델
- 다중클래스 로지스틱 회귀
- 우도함수
소프트맥스, 시그모이드의 함수들 사이의 관계를 잘 기억해둬라!
체인룰을 쓰기 위해 함수관계를 잘 이해해야 한다.
- Gradient Descent(batch)
- 사이킷런의 make_classification을 통해 쉽게 데이터를 만들어낼 수 있다.
- 로지스틱 리그레션 모델에서 반드시 써야하는 함수가 시그모이드 함수이다. 지수함수에 1을더해서 나눈것을 시그모이드 함수로 정의한다.
- Cost를 계산하는 함수 : 현재의 파라미터값 w가 주어져 있을 때 입력 X와 목표값 t에 대해 cost를 계산한다.
- 전체 데이터를 한꺼번에 넣어서 그래디언트를 업데이트 하는데, 이를 배치 업데이트라고한다. 배치란 데이터 전체를 한꺼번에 원샷으로 다 쓴다는 의미이다. 딥러닝에서 말하는 배치사이즈는 보통 미니배치를 말하는 것이다. 여기서 배치라는 것은 전체 데이터를 다 쓴다는 것이다.
- Stochastic Gradient Descent
- 앞의 배치방법과 거의 유사하지만 단지 파라미터를 업데이트할때 데이터 전체를 사용하는 것이 아니라 데이터 하나만을 사용한다는 점이 다르다.
- 초기에 cost가 굉장히 높다가, 들쭉날쭉하다. 하나의 그래디언트를 업데이트 할 때, 다른 그래디언트에 대해서는 결과가 안좋아질 수 있으므로 들쑥날쑥하다. 하지만 뒤로 갈수록 안정되어진다.
- Mini-batch Gradient Descent
- 미니배치를 이용한 경사하강법. Gradient Descent와 Stochastic Gradient Descent의 중간정도의 방법이다.
- 배치 사이즈를 조절할 수 있다. 데이터를 10개를 한번에 돌릴 수도 있고, 20개를 한번에 돌릴 수도 있다.
- 확률적 경사하강법보다 cost값 변화 추이가 덜 들쭉날쭉하다.
- 딥러닝에서는 미니배치 그래디언트 디센트를 많이 쓴다. 하나의 샘플을 볼수도, 데이터 전체를 다 볼 수도 없기 때문이다.
MNIST 이중분류(binary classification)
이중분류 문제의 경우 클래스가 비슷한 분포를 가지고 있지 않을 때 불균형의 문제가 있어 정확도만 구하는 것은 좋은 지표가 될 수 없다. 따라서…
- 오차행렬(Confusion matrix)
- 오차행렬을 구하기 위해서 사이킷런에 포함된 오차행렬을 사용한다.
- TP(True Positive) : 모델이 Positive인데 실제로도 positive라고 예측한 경우
- FP(False Positive) : 모델이 negative인데 positive라고 예측한 경우
- TN(True Negative) : 모델이 negative인데 negative라고 예측한 경우
- FN(False Negative) : 모델이 Positive인데 negative라고 예측한 경우
- 정밀도 : 모델이 positive라고 했을 때 그중 몇개가 정말로 Positive인지의 비율
- TP/(TP+FP)
- 재현율 : 데이터에서 positive인 것들의 개수 중에서 모델이 얼마나 잘 positive를 찾아냈는지에 대한 비율
- TP/(TP+FN)