본문 바로가기
ML & DL/혼자 공부하는 머신러닝+딥러닝

로지스틱 회귀(Logistic Regression)

by Glory_Choi 2022. 8. 4.
반응형

로지스틱 회귀란?

로지스틱 회귀(logistic regression)는 이름은 회귀이지만 분류 모델입니다. 이 알고리즘은 선형 회귀와 동일하게 선형 방정식을 학습합니다.

 

z = a * 무게 + b * 길이 + c * 대각선 + d *높이 + e * 두께 + f

 

 

시그모이드 함수

시그모이드 함수는 s자형 시그모이드 곡선을 갖는 수학 함수입니다.

일반적으로 단조 함수이며 1차 미분 그래프를 가지고 수평 점근선으로 수렴합니다.

우리가 원하는 것이 예측값이기 때문에 종속변수의 범위가 실수이지만 로지스틱 회귀 분석에서는 종속변수 y값이 0또는 1을 갖습니다. 그래서 우리는 주어진 데이터를 분류할 때 0인지 1인지 예측하는 모델을 만들어야합니다.

 

로지스틱 회귀로 이진 분류 수행하기

판다스를 임포트하여 데이터를 불러옵니다.

데이터프레임에서 여러 열을 선택하면 새로운 데이터프레임이 반환됩니다. 이를 to_numpy() 메서드로 넘파이 배열로 바꾸어 저장했습니다.

사이킷런 모델 셀렉션에 있는 train_test_split을 사용하여 훈련 세트와 테스트 세트를 나누어 줍니다.

머신러닝 모델이 훈련 세트를 너무 과도하게 학습하지 못하도록 방해하기 위해서 규제를 해야하기 때문에 다음과 같은 코드를 사용해 표준화 전처리를 하겠습니다.

https://glorychoi.tistory.com/entry/%EA%B7%9C%EC%A0%9CRegularization

 

규제(Regularization)

규제란? 규제는 머신러닝 모델이 훈련 세트를 너무 과도하게 학습하지 못하도록 훼방하는 것을 말합니다. 즉 모델이 훈련 세트에 과대 적합하지 않도록 만드는것이라고 생각하지면 됩니다. 선

glorychoi.tistory.com

불리언 인섹싱과 같은 방식을 사용해 훈련 세트에서 도미와 빙어의 행만 골라내겠습니다. 비교 연산자를 사용하면 도미와 빙어의 행을 모두 True로 만들 수 있습니다. 예를 들어 도미인 행을 골라내려면 train_target == 'Bream'과 같이 씁니다. 이 비교식은 train_target 배열에서 'Bream'인것은 True이고 그 외는 모두 False인 배열을 반환합니다. 위의 비교를 |연산으로 합치게 되면 도미와 빙어에 대한 행만 골라낼 수 있습니다.

로지스틱 회귀를 사용하여 훈련을 합니다. 훈련한 모델을 사용해 train_bream_smelt에 있는 처음 5개 샘플을 예측해 보겠습니다.

샘플마다 2개의 확률이 출력됩니다. 첫 번재 열이 음성 클래스(0)에 대한 확률이고 두 번째 열이 양성 클래스(1)에 대한 확률입니다. 시이킷런은 타깃값을 알파벳순으로 정렬하여 사용하기 때문에 Smelt가 양성 클래스입니다.

로지스틱 회귀로 성공적인 이진 분류를 수행했습니다. 로지스틱 회귀가 삭습한 계수를 확인해보면 위와 같습니다.

5개의 샘플의 z값을 출력해보겠습니다.

이 z값을 시그모이드 함수에 통과시키면 확률을 얻을 수 있습니다.

출력된 값을 보면 predict_proba() 메서드 출력의 두 번째 열의 값과 동일한걸 알 수 있습니다.

 

반응형