4장 다양한 분류 알고리즘
4-1 로지스틱 회귀
로지스틱 회귀 ( logistic regression )
회귀로 연속적인 결과를 시그모이드 함수로 표준화시켜서 특정값을 기준으로 나누어서 “분류"하는 것
선형 회귀와 동일하게 선형 방정식을 학습
z = a x ( weight ) + b x ( length ) + c x ( diagonal ) + d x ( height ) + e x ( width ) + f
a, b, c, d, e 는 가중치/계수
z 는 0~ 1( 0% ~ 100%)
결과값 z를 그대로 사용하면 회귀가 되기 때문에 0~1 범위의 값으로 압축해 확률을 표현
z 값 압축에 사용되는 함수를 시그모이드 함수(=로지스틱 함수)

import numpy as np
import matlotlib.pyplot as plt
z = np.arange(-5, 5, 0.1)
phi = 1 / (1 + np.exp(-z))
plt.plot(z,phi)
plt.xlabel('z')
plt.ylabel('phi')
plt.show()
이진 분류 수행 (시그모이드 함수)
(시그모이드 함수의 출력이 0.5 보다 크면 양성 클래스, 0.5보다 작으면 음성 클래스)
print(lr.coef_. lr.intercept_)
[[-0.4037798 -0.57620209 -0.66280298 -1.01290277 -0.73168947]] [-2.16155132]]
decisions = lr.decision_function(train_bream_smelt[:5])
print(decisios)
[-6.02927744 3.57123907 -.5.26568906 -4.24321775 -6.0607117]
from scipy.special import expit
print(expit(decisions))
[0.00240145 0.97264817 0.00513928 0.01415798 0.00232731]
decision_function() 메서드는 양성 클래스에 대한 z값 반환
predict_proba() 메서드는 음성 클래스, 양성 클래스에 대한 확률 출력
coef_속성과 intercept_ 속성에는 로지스텍 모델의 선형 방정식의 계수가 들어있음
다중 분류 수행 (소프트맥스 함수)
L2 규제 ( 계수의 제곱을 규제 ~= 릿지 회귀)
LogisticRegression 규제를 제어하는 매개변수 C ( C가 작을수록 규제가 커짐, default 값 1)
* 이진 분류는 샘플마다 2개의 학률을 출력하고 다중 분류는 샘플마다 클래스 개수만큼 확률 출력 *
다중분류는 클래스마다 z값을 하나씩 계산. 여러 개의 선형 방정식의 출력값을 0~1 값으로 압축하고 전체 합이 1이 되도록 z값 압축에 사용되는 함수를 소프트맥스 함수

decision = lr.decision_function(test_scaled[:5])
print(np.round(decision,decimals = 2))
from scipy.special import softmax
proba = softmax(decision, axis=1)
print(np.rounf(proba, decimals = 3)
'공부 > Deep Learning' 카테고리의 다른 글
혼자 공부하는 머신러닝 + 딥러닝 9장 (1) | 2023.11.25 |
---|---|
혼자 공부하는 머신러닝 + 딥러닝 8장 (2) | 2023.11.19 |
혼자 공부하는 머신러닝 + 딥러닝 7장 (1) | 2023.11.12 |
혼자공부하는 머신러닝 + 딥러닝 5장 (0) | 2023.10.28 |
혼자 공부하는 머신러닝 + 딥러닝 2장 (0) | 2023.09.14 |