2 minute read


Logistic (regression) classification

이 알고리즘은 classification을 할 때 굉장히 정확도가 높은 알고리즘으로 알려져 있습니다. 이 수업의 목표가 Neural networking와 딥러닝을 잘 이해하는 것인데 그것에 굉장히 중요한 컴포넌트라서 잘 알아야하는 알고리즘입니다.

1. Regression

image
image

Cost

  • 다시 한 번 상기하자면, Cost라는 것은 우리가 가지고 있는 학습데이터와 우리가 가설로 세운 선이 얼마나 가깝고 먼 것인가를 측정한 것이 cost입니다.
  • 그래서 가설과 실제 값의 차이를 전체 합해서 평균을 낸 것이 cost입니다.

학습을 한다는 것이 Cost를 최소화하는 Weight(W)를 찾는 것입니다.

이전에 이 Cost를 그려보았을 때는 다행히 Gradient Descent를 하기 편하게 생긴 그래프가 나왔습니다. 그래서 어느 점에서 시작하더라도 Gradient descent를 편하게 사용할 수 있습니다.

  • 기울기는 미분을 해서 구합니다.
  • 한 발짝에 얼마나 움직일 것이냐를 정하는 것이 step size인 learning reate입니다.

위의 나온 내용만 다 알고 있으면 Linerar Regression을 다 구현할 수 있습니다.

2. Classification

classification도 굉장히 유사합니다.

image

  • Regression과 굉장히 유사합니다.
  • 하지만 Regression은 단순히 값을 예측하기만 합니다.
  • 오늘 다루는 것은 classification중에서도 binray classification입니다.
  • 페이스북을 예시로 들면 우리가 흥미있을 만한 타임라인을 보여줄지 안보여줄지를 classfication을 활용합니다.

image

  • 학습하기 위해 category를 0, 1로 만들어 인코딩한다.

그 외에도 영상의학(Radiology), 금융부분에서도 classificaiton이 사용됩니다.

3. 학생의 시험 통과 결과 예측

image

  • Pass는 1이고 Fail은 0입니다.
  • 이런 형태의 데이터가 있다고 가정합시다.

3.1 Linear Regression?

image

이전에 배웠던 Linear Regression을 통해서 할 수 있을 것 같다는 생각이 든다. 이 데이터를 가지고 학습을 해서 가장 근접한 선을 그려보자.

image 심지어 50시간을 공부한 케이스도 있다. 그러면 당연히 통과를 했을 것이다. 선형회귀 였다면 50시간을 공부했다면 결과값이 엄청 올라갔어야 헀겠지만, 여기서는 값이 0과 1밖에 없기 때문에 50시간 공부를 해서 통과를 했어도 값이 1에 머물게 된다.

  • 이 상태에서 다시 Linear한 모델을 학습을 시키면 이전에 그어놓은 선보다 선이 기울어지게 된다.
  • 선이 기울어지다 보니 0.5가 되는 값이 변했다. (hours가 조금 더 높은 값에서 0.5가 찍힌다.)
  • 그러면 어떤 데이터들은 합격인데도 불구하고 0.5보다 큼에도 불구하고 불합격으로 인식될 수 있다.
  • 우선 여기까지가 첫 번째의 문제점이다.

image 그 다음의 문제점은 이 부분이다. binary classficatino에서는 반드시 값이 0, 1 의 사이값으로 나와야 한다.

  • 그런데 이런 Hypothesis(가설)을 가지게 되면 값이 0보다 훨씬 작거나 1보다 훨씬 큰 값이 나올 수도 있게 된다.
  • 예를 들어봅시다.
  • 우리가 가지고 있는 데이터로 학습을 했더니 Weight = 0.5, b = 0으로 학습의 결과가 되었다.
  • x의 data가 이미지처럼 주어졌을 때 대략 0~1 정도의 값이 나왔을 것이다.
  • 그런데 모델을 학습시켜놓고 모델을 가지고 예측하려 했는데, 어떤 친구가 100시간을 공부했다.
  • 그러면 이것을 그대로 모델에 적용하면 예측값이 50이 나온다. 그러면 이 값은 1보다 무지큰 값이 나오니까 형태가 좋지 않다.

4. Logistic Hypothesis

image

Linear Regression에서는 \(H(x) = Wx + b \)의 식이 간단하고 좋긴 한데, 이것을 0과 1사이로 값을 압축을 시켜주는 함수가 좋겠다고 있으면 생각했다.

  • 그래서 H(x)를 Z라는 함수로 두고 g라는 함수를 만든다.
  • 이 g라는 함수는 z값에 상관없이 값을 0~1 사이로 만들어주는 함수를 만들 수 있을 것인가 라는 것이 고민이었다.

5. Sigmoid

image

이 함수의 꼴은 이미지에 있는 것과 같습니다. g에 z값을 입력받음.

  • 앞에 1이 있기 때문에 e^-z값이 0이 되면 1이되고 e^-z값이 커지면 값이 1보다 작아질 것이다.

시그모이드 함수 또는 로지스틱 함수라고 부른다. z = wx h(x) = g(z)

image

참고자료

여기 설명 개깔끔해

추가사항

손실 함수를 y가 1과 0일 때를 나누는데, 이는 주어진 학습데이터의 레이블이 1과 0일때를 뜻하는 것이다. (이게 무슨 소린지 몰라서 계속 의아했었다.)