AI 웹 개발 과정/실전 머신러닝

03. 논리 회귀 / sigmoid / softmax / crossentropy / 전처리 (정규화, 표준화)

만 기 2022. 5. 14. 12:53

 

 

논리 회귀 Logistic regression

 

출력값이 불연속적으로 이진 클래스(Binary class)로 나누어질때 이진 논리 회귀(Binary logistic regression)를 사용하여 해결할 수 있다.

좌) 선형 회귀를 사용했을때, 우) 논리회귀를 사용했을때

출력값이 0과 1사이의 숫자로 나타낼 수 있게 된다. 이러한 S-커브를 함수로 표현해낸 것이 바로 Logistic function 이고, 딥러닝에서는 시그모이드 함수(Sigmoid function) 라고 부른다. x(입력)가 음수 방향으로 갈 수록 y(출력)가 0에 가까워지고, x(입력)가 양수 방향으로 갈 수록 y(출력)가 1에 가까워진다. 즉 시그모이드 함수를 통과하면 0 에서 1 사이 값이 나온다.

 

  • 이진논리회귀의 가설 Binary logistic regression hypothesis

 논리 회귀에서는 시그모이드 함수에 선형 회귀 식을 넣어주는 것이 가설이 된다.

  •  이진논리회귀의 손실함수 Binary logistic regression cost function

 - 확률 분포 그래프 : 가로축을 라벨(클래스), 세로축을 확률로 표시한 그래프

1. 출력값이 0인경우 : y = 0

  예측한 라벨이 0일 경우 확률이 1(=100%), 예측한 라벨이 1일 경우 확률이 0(=0%)이 되도록 만든다.

2. 출력값이 1인경우 : y = 1

  라벨 y가 1일 경우에는 확률이 1(=100%), 라벨 y가 0일 경우에는 확률이 0(=0%)이 되도록 만든다.

 

 - Crossentropy 함수 : 확률 분포 그래프의 차이를 비교한다.

y = 0 일때

 

crossentropy는 파란색 그래프를 빨간색 그래프처럼 만들어주기 위해 노력하는 함수이다. binary logistic regression 의 경우

binary_crossentropy 손실 함수를 사용한다.

 

 

 

 

 

 

 

 

다항 논리 회귀 Multinomial logistic regression

 

세개 이상의 클래스를 구분해야하는 문제를 해결할때 사용한다.

 

- One-hot encoding

다항 분류 (Multi-label classification) 문제를 풀 때 출력값의 형태를 가장 보기좋게 표현할 수 있는 방법이다. 여러개의 항을 0과 1로만 표현할 수 있다. (다항 논리 회귀는 다항 분류에 속한다.)

  • 다항 논리 회귀의 가설 Multinomial logistic regression hypothesis

- Softmax 함수 : 선형 모델에서 나온 결과(Logit)를 모두가 더하면 1이 되도록 만들어주는 함수이다.

 

다 더하면 1이 되도록 만드는 이유는 예측의 결과를 확률(=Confidence)로 표현하기 위해서이다. 우리가 One-hot encoding을 할때에도 라벨의 값을 전부 더하면 1(100%)이 되기 때문이다.

 

  • 다항 논리 회귀의 손실 함수 Multinomial logistic regression cost function

  - 이진 논리 회귀와 마찬가지로 Crossentropy 함수를 사용한다. 다항 논리 회귀의 경우 categorical_crossentropy 손실 함수를 사용한다. 

 

 

 

다양한 머신러닝 모델

 

정답을 구분하는 문제를 푸는 것은 분류 문제(classification problem) 이고 분류 문제를 푸는 모델을 분류기(Classifier) 라고 부른다.

 

- Support vector machine (SVM)

각 그래프의 축을 Feature(특징)라고 부르고 각 고양이, 강아지와 우리가 그린 빨간 벡터를 Support vector라고 부른다. 그리고 그 벡터의 거리를 Margin이라고 부른다. 우리는 Margin이 넓어지도록 이 모델을 학습시켜 훌륭한 Support vector machine을 만들어야 한다.

 

- k-Nearest neighbors (KNN)

KNN은 비슷한 특성을 가진 개체끼리 군집화한다. 예를 들어 하얀 고양이가 새로 나타났을 때 일정 거리안에 다른 개체들의 개수(k)를 보고 자신의 위치를 결정하게하는 알고리즘이다.

 

- Decision tree (의사결정나무)

예, 아니오를 반복하며 추론하는 방식. 생각보다 성능이 좋아 간단한 문제를 풀 때 자주 사용한다.

 

- Random forest

의사결정나무를 여러개 합친 모델. 의사결정나무는 한 사람이 결정하는 것이라고 하면 랜덤 포레스트는 자유민주주의라고 보면 이해가 빠르다. 각각의 의사결정나무들이 결정을 하고 마지막에 투표(Majority voting)을 통해 최종 답을 결정하게 된다.

 

각 모델마다 성능의 차이가 있다. 문제마다 푸는 방식이 다르고 어떤 모델을 쓰느냐에 따라서 정확도가 다르기 때문에 적합한 모델을 찾아 써야한다. 

 

 

전처리 Preprocessing

넓은 범위의 데이터 정제 작업을 뜻한다. 필요없는 데이터를 지우고 필요한 데이터만을 취하는 것, null 값이 있는 행을 삭제하는 것, 정규화(Normalization), 표준화(Standardization) 등의 많은 작업들을 포함한다.

 

- 정규화 Normalization

데이터를 0과 1사이의 범위를 가지도록 만든다. 같은 특성의 데이터 중에서 가장 작은 값을 0으로 만들고, 가장 큰 값을 1로 만들어준다.

- 표준화 Standardization

데이터의 평균이 0이 되도록하고 표준편차가 1이 되도록 만들어준다.

기존데이터, 정규화, 표준화 비교

어떤 방식이 더 좋은지는 데이터셋에 따라 다르기 때문에, 다른 방법의 전처리와 학습을 반복하면서 찾아야한다.