본문 바로가기
공부/Deep Learning

혼자 공부하는 머신러닝+딥러닝 4장

by 유스베리이 2023. 10. 4.

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)