기본 콘텐츠로 건너뛰기

AI) 로지스틱 회귀 - 이중분류, 다중분류

1. 선형회귀와 달리 종속변수가 연속적이지 않고 범주형이거나 0 또는 1인 경우

    로지스틱 회귀를 쓴다. 

2. 선형회귀 : 키, 몸무게 등 

   로지스틱회귀 : 범주형 데이터란 몇 개의 카테고리가 주어진 데이터

                       남녀, 지역 등 단순 분류 데이터나

                       등급, 평점, 선호도 등 순서관계가 성립하는 데이터

3. 로짓변환 / 오즈(Odds)

  1) 로짓변환 : Odds에 log를 취한 것, log p/1-p

  2) 오즈(Odds) : 실패(1-P)에 비해 성공할 확률(P)의 비

  3) Odd Ratio : 

4. 로짓 시그모이드 함수(시그모이드 함수)의 W와 b를 찾는 것!
   : 학습데이터를 잘 설명하는 시그모이드 함수의 W와 b를 찾아라! 
     (로짓변환으로 곡선으로 나타내고 0과 1의 종속변수를 가지는 함수)


5. 라이브러리

sklearn.linear_model.LogisticRegression

(1) penalty= 과적합을 막기 위한 것, 디폴트는 l2(릿지) 보통 이거 선호

(2) dual = 샘플데이터가 독립변수보다 많을 때 False로 하는데 디폴트가 False

(3) tol = 정지기준에 대한 허용 오차 그냥 디폴트 쓰기

(4) C = 정규화 강도의 역수, 값이 작을수록 정규화가 강력해진다.

          1이 디폴트지만 다중분류일 때 20으로 한다.

(5) fit_interceptbool = 결정함수에 상수 (bias) 절편을 추가 여부

    위의 4번의 z에서는 절편을 안 둔 것이나 이렇게 이 옵션을 True로 해서

    절편이 0이 나오든 말든 할 수도 있음.

(6) intercept_scaling=1, weight=None, random_state=None, solver='lbfgs'

    solver는 알고리즘

(7) max_iter=100 

    solver의 수렴에 걸릴 최대 반복 횟수

(8) multi_class:{'auyo','ovr','miltinomial'},default='auto'

    ovr 경우 이진문제가 적합 

    mutinoial은 다항 문제

-------------------------

어렵다. 일단 계속 적어봐야지.

-------------------------

6. 메서드 (method)

(1) predict(x) : x의 샘플에 대한 클래스 레이블 예측

(2) predict_proba(x) 

 : 이중 분류의 경우 음성클래스와 양성클래스의 확률을 반환

   다중 분류의 경우 샘플마다 모든 클래스에 대한 확률을 반환

(3) decision_function(x)

 : 샘플에 대한 신뢰도 예측

   모델이 학습한 선형방정식 반환 

   이진 분류의 경우 양성 클래스의 확률로 반환 

   (이 값이 0보다 크면 양성클래스, 작거나 같으면 음성클래스로 예측)

   다중 분류의 경우 각 클래스마다 선형방정식을 계산함

   (가장 큰 값의 클래스가 예측 클래스)


7. Atrributes

(1) Class: ndarray of shape(n_classes,)

    A list of class labels known to the classifier


(2) Coef : ndarray of shape(1,n_features_ or (n)classes,n_features)

   결정계수 (기울기)

(3) intercept

   절편


8. 이중분류와 다중분류

실습한 것 링크 :

https://colab.research.google.com/drive/1jxKzf8vMIP_GwY2rbVmBZpJouDt_ZpIz?usp=sharing

--------------------------

9. 정리 

- 로지스틱 회귀는 선형방정식을 사용한 분류 알고리즘이다

- 선형회귀와 달리 시그모이드 함수나 소프트 맥스 함수를 사용하여 

  클래스 확률을 출력한다.

- 다중분류는 타깃클래스가 2개 이상인 분류이다.

  그래서 로지스틱회귀할 때 알아서 다중분류를 위해 소프트 맥수함수를 사용하게 된다.

  sklearn 돌리면 알아서 하는 것이 보인다.

- 시그모이드함수는 이중분류 때에 쓰이게 되는데 선형방정식의 출력을

  0과 1사이의 값으로 압축하여 이진분류를 위해 사용한다.

- 소프트 맥수함수는 다중분류에서 여러 선형방정식의 출력결과를 정규화하여 합이

  1이 되도록 만든다.


10. decision_function()메서드 썼을 때 차이점이 있다.

    이중분류일 때는 양성클래스의 Z값만 알려주고

    다중분류일 때는 행렬처럼 생겼는데 하여간 1줄씩 더하면 1이 되는

    즉 입력값의 모든 클래스 값을 다 보여준다.







댓글

Creative Commons License