1. Logistic Regression
1) 악성 종양을 찾는 문제

Liner Regression -> 회귀문제
Logistic Regression
- 분류 문제
- 악성을 종양을 찾는 문제는 분류일가? 회귀일까?
- 악성 종양을 찾는 문제는 hθ(x)가 0.5보다 크거나 같으면 1(악성)으로 예측
- hθ(x)가 0.5보다 작으면 혹은 0(양성)으로 예측

- 사진처럼 그래프를 벗어난 곳에 데이터가 존재할 수 있기 때문에 선형 회귀로 분류하는 게 적용하기 힘들다.
이럴 때 시그모이드 사용!
2) 모델 재설정

3) Logistic Function - 간단히 확인하러 가기
import numpy as np
z = np.arange(-10, 10, 0.01)
g = 1 / (1+np.exp(-z))
import matplotlib.pyplot as plt
plt.plot(z, g)
plt.grid()
plt.show()

4) 디테일 추가
plt.figure(figsize=(12,8))
ax = plt.gca()
ax.plot(z, g)
ax.spines['left'].set_position('zero') # -> 축을 지정(왼쪽에 있는 축이 '0'으로 위치함.)
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position('center') # -> 축을 지정(아래에 있는 축이 '0'으로 위치함.)
ax.spines['top'].set_color('none')
plt.show()

- sigmoid는 이렇게 생김
- sigmoid는 아무리 작아도 0이고, 아무리 커도 1이 나온다!
5) Hypothesis 함수의 결과에 따른 분류

6) 분류 문제용 Hypothesis

7) Decision Boundary 결정경계

- 표시한 부분이 결정경계 (아이리스 데이터에서도 사용한 선)
+ 또다른 Decision Boundary (원)
- Decision Boundary가 직선으로만 생기지 않을 때도 있음.
- 원처럼 생길 때도 있는데, 그렇게 되면 Linear(리니어) X

8) Cost Function은 어떻게?

- Linear Regression (선형 회귀) 문제를 풀 때 'Cost Function'을 설명했음.
- 그 때 'Cost Function'을 Mean_squared_error(선형 회귀 문제에서 모델 평가(모델 평가는 RMS로)를 위해 많이 사용)
- Mean_squared_error는 x에 대한 2차식이니까 2차 함수가 됨.
- 그러나 Logistic Regression의 미분식은 복잡함. 그래서 'Cost Function'을 살짝 다시 잡을 필요도 있음.
9) Logistic Regression에서 Cost Function을 재정의

- 노란색 부분은 많이 사용되는 Cost Function
- Cost Function란? 에러를 표현하는 도구
- 사전적 정의: 머신 러닝에서 모델의 예측값과 실제값 간의 차이를 측정하는 함수
10) Logistic Reg. Cost Function의 그래프
h = np.arange(0.01, 1, 0.01)
C0 = -np.log(1-h)
C1 = -np.log(h)
plt.figure(figsize=(12,8))
plt.plot(h, C0, label='y=0')
plt.plot(h, C1, label='y=1')
plt.legend()
plt.show()

- 그래프는 매끄러움
- 화살표로 표시된 것처럼 쭉 이어서 간다고 생각하면 됨!
중요한 것!
- Logistic Regression은 분류 문제
- sigmoid 함수에다가 직선의 함수를 넣어서 결과를 판정하는 아이이다.
- Logistic Regression에서 특성이 여러 개면 'θ0 + θ1 +...' 여기서(표시한 부분) 반영됨.
