[PyTorch] 로지스틱 회귀(Logistic Regression)
PyTorch를 공부하면서 참고한 NeoWizard(박성호)님의 YouTube영상을 토대로 내용을 정리함.
실제 영상 강의를 보고 싶은 분들은 아래 링크로 ㄱㄱ!
출처: https://www.youtube.com/@NeoWizard
NeoWizard
강의실 - 머신러닝, 딥러닝 - 텐서플로우 1.x, 텐서플로우 2.x - PyTorch, 파이토치 - YOLO - 프로그래밍 - 데이터분석, 판다스
www.youtube.com
분류(Classification)
✔️ 트레이닝 데이터 특성과 관계 등을 파악 한 후에, 미지의 입력 데이터에 대해서 결과가 어떤 종류의 값으로 분류 될 수 있는지를 예측하는 것
- Ex) 스팸문자 분류 [Spam(1) or Ham(0)], 암 판별 [악성종양(1) or 종양(0)]
✔️ 1️⃣ 공부시간과, 합격여부(성공/실패) 데이터를 입력으로 받아서 2️⃣이러한 데이터의 상관관계를 학습함.
✔️ 3️⃣ 학습을 마친 후에 트레이닝 데이터에 없는 데이터를 넣고 4️⃣ 합격여부 데이터를 예측해줌
✔️ Logistic Regression 알고리즘은, 1️⃣ 트레이닝 데이터 특성과 분포를 나타내는 최적의 직선을 찾고(Linear Regression), 2️⃣ 그 직성을 기준으로 데이터를 위(1) 또는 아래(0) 등으로 분류(Classification) 해주는 알고리즘
=> 이러한 Logistic Regression은 Classification 알고리즘 중에서도 정확도가 높은 알고리즘으로 알려져 있어서 Deep Learning에서 기본 Component로 사용되고 있음.
✔️ 위 그림에서 Linear Regression 출력 Wx+b가 가 어떤 값은 갖더라도, 출력 함수로 sigmoid를 사용해서 1️⃣ sigmoid 계산 값이 0.5보다 크면 결과로 1이 나올 확률이 높다는 것이기 때문에 출력 값 y는 1을 정의하고 2️⃣ sigmoid 계산 값이 0.5 미만이면 결과로 0이 나올 확률이 높다는 것이므로 출력 값 y=0 정의하여 classification 시스템을 구현할 수 있음.
✔️ z = Wx + b
✔️ y = sigmoid(z) = σ(z) = 1 / 1+e^-z
Classification 에서의 [W, b] 계산 프로세스
✔️ 1️⃣ 임의의 직선 Wx+b를 가정한 후에 트레이닝 데이터를 이용하여 Regression을 실행하고 그 결과값을 sigmoid의 입력값으로 주면 0과 1사이의 값을 출력함. 2️⃣ 그렇게 계산된 결과 값 y와 정답 t를 크로스 엔트로를 이용하여 손실함수 값을 계산하고 3️⃣ 그 손실함수 값이 최소값인지 판단합니다. 만약 최소값이라면 학습을 종료하고 아니라면 4️⃣ W, b값을 업데이트 하고 다시 반복합니다.