본문 바로가기
AI/혼공머신

[혼공머신] 04-1 | 로지스틱 회귀

by 뒹굴거리는프로도 2024. 10. 17.
반응형

 

 


키워드

  • 로지스틱 회귀
    • 선형 방정식을 사용한 분류 알고리즘이다. 선형 회귀와 달리 시그모이드 함수나 소프트맥스 함수를 사용하여 클래스 확률을 출력할 수 있다.
  • 다중 분류
    • 타깃 클래스가 2개 이상인 분류 문제이다. 로지스틱 회귀는 다중 분류를 위해 소프트맥스 함수를 사용하여 클래스를 예측한다.
  • 시그모이드 함수
    • 선형 방정식의 출력을 따라 0과 1사이의 값으로 압축하여 이진 분류를 위해 사용한다.
  • 소프트맥스 함수
    • 다중 분류에서 여러 선형 방정식의 출력 결과를 정규화하여 합이 1이 되도록 만든다.

 

04-1 단원 내용

  • 럭키백의 확률
    • 04-1 단원에서 럭키백에 들어간 생선의 크기, 무게 등이 주어졌을 때 생선 7개에 대한 확률 출력하기 
    • 데이터 준비하기
      • pandas의 unique()함수로 열의 고유한 값 추출하기
      • 타깃 데이터와 입력 데이터 준비하기
      • 데이터를 훈련 세트와 테스트 세트로 나누기
    • k-최근접 이웃 분류기의 확률 예측
      • KNeighborsClassifier 클래스 객체 생성
      • 훈련 세트로 모델 훈련
      • 훈련 세트와 테스트 세트 점수 확인
      • 다중 분류(multi-class classification)란 타깃 데이터에 2개 이상의 클래스가 포함된 문제를 말함
      • 사이킷런의 predict() 메서드는 타깃값 즉 문자열로 예측을 출력해줌
      • 사이킷런의 분류 모델은 predict_proba() 메서드로 클래스별 확률값을 반환함
  • 로지스틱 회귀
    • 로지스틱 회귀는 이름은 회귀이나 분류 모델임
    • 로지스틱 회귀 알고리즘은 선형 회귀와 동일하게 선형 방정식을 학습함
    • 시그모이드 함수
      • z값, 즉 로지스틱 회귀 방정식 결과값으로 0~1 사이의 값 출력
      • 식은 선형 방정식의 출력 z의 음수를 사용해 자연 상수 e를 거듭제곱하고 거기에 1을 더한 후 역수를 취함
      • 지수 함수 계산은 np.exp() 함수 사용
    • 로지스틱 회귀로 이진 분류 수행하기
      • 불리언 인덱싱(boolean indexing)
        • 넘파이 배열은 True, False 값을 전달하여 행을 선택할 수 있는데, 이를 불리언 인덱싱이라함
        • 이진 분류를 위해, 불리언 인덱싱을 이용해서 여러 원소들에서 두 개 값만 선택 가능
      • 모델을 훈련하고 예측한 뒤, 예측 확률은 predict_proba()함수 사용
      • LogisticRegression클래스의 decision_function() 메서드로 z값 출력 가능
        • 이 z값을 시그모이드 함수에 통과시키면 확률을 얻을 수 있음
        • expit()
          • 파이썬의 scipy 라이브러리에 시그모이드 함수 expit() 존재함
          • np.exp() 함수를 사용해 분수 계산 하는 것보다 훨씬 편리하고 안전함
    • 로지스틱 회귀로 다중 분류 수행하기
      • LogisticRegression 클래스는 기본적으로 반복적인 알고리즘 사용
        • max_iter 매개 변수에서 반복 횟수 지정하며, 기본값은 100
      • LogisticRegression은 기본적으로 릿지 회귀와 같이 계수의 제곱을 규제
      • 이진 분류는 샘플마다 2개의 확률을 출력한다면, 다중 분류는 샘플마다 클래스 개수만큼 확률을 출력
      • 다중 분류는 클래스마다 z값을 하나씩 계산하며 가장 높은 z값을 출력하는 클래스가 예측 클래스가 됨
      • 소프트맥스 함수
        • 다중 분류는 소프트맥스 함수를 사용하여 z값을 확률로 변환
        • 모든 z값을 사용해 지수함수를 계산하고 모두 더한 뒤 이것을 분모, 각각 지수함수를 분자로 두어 계산
        • 사이파이에서 소프트 맥스 함수 제공. scipy.special 아래 softmax()
        • softmax()의 axis 매개변수는 소프트맥스를 계산할 축 지정하는데, axis=1로 지정하면 각 행, 즉 각 샘플에 대해 소프트맥스 계산
  • 로지스틱 회귀로 확률 예측

 


https://youtu.be/pO27UnTsYQU?si=MiyhyuN75demSzJ_

 

반응형