슈코딩

[머신러닝] 논리회귀 Logistic regression 본문

코딩공부/머신러닝

[머신러닝] 논리회귀 Logistic regression

Roshu 2022. 5. 16. 14:02

 

1. Logistic regression

 

Logistic regression (논리회귀)는 선형회귀로 풀기 힘든 문제를 풀 수 있다. 

다음과 같은 문제를 선형회귀로 그래프를 나타내면 첫번째 그래프처럼 그려지고,

논리회귀로 그래프를 그리면 두번째 처럼 그려진다.

이 문제를 선형으로 풀려고하니 정확도도 낮고, 그래프도 우스꽝스러운 모습을 가지게 되어

수학자들이 고민하다가 발견한것이 Logistic funtion(=Sigmoid function) 이다.

 

Logistic function은 입력값(x)으로 어떤 값이든 받을 수 있고, 출력값(y)는 항상 0에서 1사이

값이 된다.  0(미이수) , 1(이수) 

임계치(Threshold)는 pass냐 fail이냐 의 기준이된다. 0.5가되면 0.5를 넘으면 pass 0.5보다 작으면 fail

임계치(Threshold)는 기준이기에 조절이 가능하다. 합격여부가 중요 -> 0.8로 지정해서 0.8 넘어야 pass

0.8보다 낮으면 fail

아름다운 S자 곡선의 그래프

#논리회귀 = 실질적 계산은 선형회귀, 출력에 Sigmoid 함수를 붙여서 0~1 사이값을 가지도록 한다.

 

 

논리회귀의 손실함수의 수식은 굉장히 복잡하지만, 개념을 이해하도록한다.

CrossEntropy-손실함수를 사용해 손실함수 그래프를 빨간색모양으로 만든다.

검정색 그래프를 빨간색 그래프로 만들려고 노력하는 함수  = CrossEntropy

이진논리회귀 : 이수, 미이수,  Pass, fail 과 같은 출력값이 0 아니면 1 두가지인 경우 

 

 

2. Multinomial logistic regression 다항 논리 회귀

 

위와 같은 문제를 논리회귀로 풀려면 아래처럼 클래스를 5개로 나누게 된다.

이를 다항 논리회귀라고 한다.

다항논리회귀 문제를 풀때는 한가지 개념이 더 필요한데, One-hot encoding 이라는 개념이 필요하다.

One-hot encoding은 다항문제를 풀때 출력값의 형태를 예쁘게(컴퓨터한테) 표현할 수 있는 방법이다.

클래스의 갯수만큼 배열을 0으로 채우고 각 클래스에 해당하는 index에 1을 넣는 방식이다.

 

Sigmoid함수 0,1 로만은 다섯개를 표현 할수가 없어서 사용하는 함수가 Softmax함수이다.

Softmax 함수는 선형 모델에서 나온 결과를 다 더했을때 1(확률(=Confidence))이되도록 만들어주는 함수이다.

One-hot encoding을 할때에도 라벨의 값을 전부 더하면 1이다. 

이진 논리회귀와 마찬가지로 다항 논리회귀에서도 CrossEntropy함수를 사용해서 확률 분포의 

차이를 계산한다. 확률분포의 차이를 계산해서 확률분포의 차이를 최소화 하는것이 바로 

다항 논리 회귀가 되는것이다. 수식은 어려우니, 개념을 확실히 알고 가자.

 

이진 논리 회귀 : 출력값이 0 or 1 pass냐 fail이냐 , sigmoid함수사용,  binary_crossentropy 손실함수 사용

다항 논리 회귀 : 클래스가 여러개로 나뉘고, softmax함수사용, categorical_crossentropy 손실함수 사용

 

3. 실습

1. 이진 논리회귀 당뇨병 데이터셋

https://colab.research.google.com/drive/1JLaGOCI-3TOEhxdL0KJAbVj-qbUwy4-Y

 

Google Colaboratory Notebook

Run, share, and edit Python notebooks

colab.research.google.com

2. 다항 논리회귀 와인 데이터셋

https://colab.research.google.com/drive/1mv7llgP0-AHp9iB6uyALRH__8CBeXB0q

 

Google Colaboratory Notebook

Run, share, and edit Python notebooks

colab.research.google.com

 

Comments