이번 포스팅에서는 로지스틱 회귀 모델의 손실함수인 로지스틱 손실함수에 대해서 알아보고, 가중치를 업데이트하는 식을 작성한다.
로지스틱 손실함수
로지스틱 회귀모델의 손실함수는 로지스틱 손실함수이다. 로지스틱 손실함수는 크로스엔트로피 손실함수에서 변형한 것이다. 크로스엔트로피 손실함수는 다중분류 모델을 위한 손실함수인데, 로지스틱 회귀모델이 이진분류를 위한 모델이니 다중분류 모델의 손실함수에서 파생되었다는 것이 납득이 간다. 이진분류는 크게 보면 다중분류에 속하는 개념이고, 실무에서는 같은 개념으로 보기도 하기 때문이다.
로지스틱 손실함수가 손실함수로서 자격이 있을까?
로지스틱 손실함수는 결과가 양성 클래스일 때와 음성클래스일 때로 식을 분리해서 생각할 수 있다. 양성클래스 즉, y =1 일 때는 L = - log(a)이고, y=0 음성클래스일 때는 L = - log(1-a)로 정리할 수 있다. 각 범위에서 그래프를 그려보면 아래와 같다. 이때 a는 활성화함수의 결과 값으로 0~1사이의 범위를 갖는다. 그래프를 그릴 땐 이를 고려해서 그렸다.
우선 양성클래스(y=1)일 때 샘플이 올바르게 분류되기 위해서는 a의 값이 1이 되어야한다. 그래프를 보면 L의 값이 최소화 될 때 a가 자연스럽게 1에 가까워진다.
음성클래스의 경우도 양성클래스와 동일하다. 음성클래스일 때 샘플이 올바르게 분류되기 위해서는 a가 0이 되어야한다. 마찬가지로 L이 최소화 될 때, a가 자연스럽게 0에 가까워지는 것을 확인할 수 있다.
L의 값이 최소화될 때, 샘플이 올바르게 분류되는 방향으로 a값이 구해진다. 즉, L의 값이 최소화될 때 로지스틱 회귀 모델의 목표가 달성된다. 따라서 L(로지스틱 손실함수)는 로지스틱 회귀모델의 손실함수가 될 자격이 있다! 로지스틱 손실함수의 자격을 확인했으니 이제 손실함수를 통해서 가중치와 절편을 업데이트해보자.
가중치와 절편의 업데이트
위 로그 함수를 미분하면 위와 같은 식이 도출된다. 앞서 다뤘던 제곱오차의 미분결과와 매우 유사하다는 것을 알 수 있다. 가중치와 절편을 업데이트하는 방법은 기존 가중치에 미분값을 빼는 것이다. 따라서 아래와 같은 식이 도출된다. 손실함수의 미분과 가중치 업데이트가 어떤 상관이 있는건지 궁금하다면? 아래 더보기란에 있는 포스팅을 확인하자.
자, 그럼 이론적인 부분은 살펴보았으니 이제 진짜 로지스틱 회귀 모델을 구현해보자!
'Deep Learning > [Books] Do it! 정직하게 코딩하며 배우는 딥러닝 입문' 카테고리의 다른 글
[모델 평가] 훈련데이터셋 나누기 (feat.train_test_split()) (5) | 2020.07.20 |
---|---|
[데이터 탐색] 데이터 탐색에 유용한 함수 2탄 - boxplot(), unique() (2) | 2020.07.16 |
[모델 선정] 이진분류 알고리즘 3가지 (퍼셉트론, 아달린, 로지스틱 회귀) (2) | 2020.07.09 |
[모델 구축] 선형회귀 알고리즘 구현하기 (전체 소스코드 첨부) (3) | 2020.07.06 |
[데이터 탐색] 데이터 탐색을 위한 파이썬 명령어 3가지 (1) | 2020.07.02 |