AI 공부 저장소

로지스틱 회귀 (Logistic Regression)의 개념과 코드 구현 본문

Artificial Intelligence/ML&DL

로지스틱 회귀 (Logistic Regression)의 개념과 코드 구현

aiclaudev 2022. 2. 9. 15:02

 

본 글은 Sung Kim 교수님의 PyTorchZeroToAll 강의를 토대로 저의 지식을 아주 조금 덧붙여 작성하였습니다.
글 작성에 대한 허락을 받아, 개인 공부용으로 작성합니다.
문제가 발생할 시 비공개로 전환함을 알립니다.
https://www.youtube.com/channel/UCML9R2ol-l0Ab9OXoNnr7Lw

 

 

 

 

① 개요

앞서 다루었던 선형 회귀 (Linear Regression)과 같은 경우는, 예측할 Output이 숫자였습니다. 

예를 들어, "내가 5시간 공부하면, 시험 점수는 몇 점이 나올 것인가?"를 예측하는 것이었습니다.

이처럼 '숫자'를 예측하는 것도 일상 생활에서 빈번하지만, 'Yes or No'와 같이 Binary를 예측하는 것도 굉장히 빈번합니다. 예를 들어, "내가 5시간 공부하면, 자격증 시험을 통과할 수 있을까 없을까?" 와 같은 것이죠.

로지스틱 회귀는 앞 예시처럼, Binary에 대해 예측하는 알고리즘이라고 할 수 있습니다. (일종의 Classification 입니다.)

 

 

 

② 원리

선형 회귀에서는, x라는 input을 넣으면 한 단계를 거쳐서 y(hat)이라는 output이 나오는 구조였습니다.

이와 달리, 로지스틱 회귀에서는 Sigmoid함수라는 하나의 단계가 더 추가됩니다. (Sigmoid 함수란, 간단히 -1~1 사이의 값만 반환하는 함수라고 말할 수 있습니다.)

따라서, 로지스틱 회귀는 선형 회귀에 x라는 input을 넣었을 때의 output을, 다시 Sigmoid 함수의 input으로 입력합니다. 그리고 이에 대한 output이 y(hat)입니다. 

 

로지스틱 회귀에서 예측하고자 하는 것은, 숫자가 아닌 Binary class의 형태라고 말씀드린 적 있는데요, 위 과정을 거쳐서 나온 y(hat)은 숫자일 것입니다. 따라서, 적절한 threshold를 선정하는 것이 중요합니다. 즉, 'y(hat) > 0.5면 Yes, 그렇지 않으면 No' 와 같이 정확한 기준점을 정해야한다는 것이죠.

 

 

선형 회귀는 단순히 (실제값 - 예측값)의 제곱으로 Loss를 표현하였는데요, 로지스틱 회귀는 다소 복잡한 수식의 Loss를 사용합니다. (Sigmoid라는 함수를 거치기에, 이에 걸맞는 Loss를 사용해주어야 하는 것이겠죠)

 

위 표에서 case 1) y=1, y_pred = 0.2 와 case 2) y=1, y_pred = 0.8 일 때의 loss를 계산해보겠으니, 나머지는 직접 계산해보시면 좋을 것 같습니다.

 

 

 

 

③ 코드 구현

 

 

 

 

 

본 글은 Sung Kim 교수님의 PyTorchZeroToAll 강의를 토대로 저의 지식을 아주 조금 덧붙여 작성하였습니다.
글 작성에 대한 허락을 받아, 개인 공부용으로 작성합니다.
문제가 발생할 시 비공개로 전환함을 알립니다.
https://www.youtube.com/channel/UCML9R2ol-l0Ab9OXoNnr7Lw