1. 선형회귀와 달리 종속변수가 연속적이지 않고 범주형이거나 0 또는 1인 경우
로지스틱 회귀를 쓴다.
2. 선형회귀 : 키, 몸무게 등
로지스틱회귀 : 범주형 데이터란 몇 개의 카테고리가 주어진 데이터
남녀, 지역 등 단순 분류 데이터나
등급, 평점, 선호도 등 순서관계가 성립하는 데이터
3. 로짓변환 / 오즈(Odds)
1) 로짓변환 : Odds에 log를 취한 것, log p/1-p
2) 오즈(Odds) : 실패(1-P)에 비해 성공할 확률(P)의 비
3) Odd Ratio :
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이 되는
즉 입력값의 모든 클래스 값을 다 보여준다.
댓글
댓글 쓰기