본문 바로가기

코딩 학습/인공지능 기초

[Python, SkLearn] 로지스틱 회귀 함수(Logistic Regression) 분석

스팸 필터를 개발을 위해

 

[스팸 잡기] 스팸 잡기 24년 6월 기초 테스트 현황

스팸문자에 빡쳐서 스팸 문자를 걸러주는 앱을 만들어서 쓰고파서 개발에 착수하였다. 일단은 나와 주위 분들에게 온 스팸 문자를 기반으로 python을 이용하여 학습을 수행해서 아주 간단한 스

writing-pad.tistory.com

 

여러 모델을 이용하여 서비스를 개선하는 중 Python 의 Scikit-learn 패키지의 LogisticRegression 함수를 사용하게 되었다.

model = LogisticRegression()

 

지금은 python 패키지를 이용해서 개발을 하지만

1. 궁극적으로 Kotlin 과 Swift 와 같은 다른 언어로도 AI 모델을 개발 해야하고

2. Transfer Learning 을 위해 해당 모델의 수학적인 내용도 이해가 필요할것 같아

공부하여 정리하고자 한다.

 

 

1 ) 선형 회귀 모델

먼저, 로지스틱 회귀는 선형 회귀 모델을 기반으로 합니다. 선형 회귀 모델은 다음과 같이 표현됩니다:

여기서,

  • w 는 모델의 가중치 벡터
  • x 는 입력 특성 벡터
  • b 는 편향 (bias) 항입니다.

를 말한다.

 

 

2)  로지스틱 회귀 모델

이를 위 그림과 같은 시그모이드 함수에 집어 넣어서

학습용 입력 특성 벡터(x) 가 학습용으로 알려준 결과(0 또는 1)와 잘 맞는 가중치 벡터(w)를 찾아 설정합니다.

 

코드 상으로는 위에서 정의한 model에

model.fit(X_train, y_train)

하는 과정이 된다.

 

 

3) 손실함수

이때, 이진 분류이기에 손실 함수는 '이진 크로스 엔트로피 손실 함수'를 사용하여 손실을 측정한다.

 

참고자료

 Scikit-learn 공식페이지: https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html#

LogisticRegression 코드 github: https://github.com/scikit-learn/scikit-learn/blob/2621573e6/sklearn/linear_model/_logistic.py#L810