[혼공학습단 9기] 혼자 공부하는 머신러닝 + 딥러닝 Ch 04

수빈·2023년 1월 21일
0

04-1 로지스틱 회귀

타깃 데이터를 만들 때, 타깃 데이터에 2개 이상의 클래스가 포함된 문제를 다중 분류 (multi class classification)이라고 부른다.

로지스틱 회귀(logistic regression)는 이름은 회귀이지만, 분류 모델이다. 이 알고리즘은 선형 회귀와 동일하게 선형 방정식을 학습한다. 시그모이드 함수(sigmoid function) 또는 로지스틱 함수(logistic function)를 사용하면 가능하다.

로지스틱 회귀로 이진 분류 수행하기

numpy 배열은 True 혹은 False 값을 전달하여 행을 선택할 수 있다. 이를 불리언 인덱싱(boolean indexing)이라고 한다.

로지스틱 회귀는 선형회귀와 동일하게 선형 방정식을 학습한다. 그러므로 시그모이드 함수를 사용한다.

로지스틱 회귀로 다중 분류 수행하기

Logistic Regression 클래스는 기본적으로 반복적인 알고리즘을 사용한다. 그러므로 충분한 반복 횟수를 입력하여 훈련시켜야 한다.

또 Logistic Regression 클래스는 기본적으로 릿지 회귀와 같이 계수의 제곱을 규제한다. 이것을 L2 규제라고 부른다. 릿지 회귀에서는 alpha 매개변수로 규제의 양을 조절했다. alpha가 커지면 규제도 커진다. Logistic Regression에서 규제를 제어하는 매개변수는 C이다. 하지만 C는 alpha와 반대로 작을수록 규제가 커진다. C의 기본값은 1이다.

어쨌든 정리하자면, 이진 분류는 샘플마다 2개의 확률을 출력하고, 다중 분류는 샘플마다 클래스 개수만큼 확률을 출력한다. 이 중에서 가장 높은 확률이 예측 클래스가 된다.

그리고 이진 분류에서는 시그모이드 함수를 사용했었는데, 다중 분류는 이와 달리 소프트맥스(Softmax)함수를 사용한다.

[기본 미션:확인문제 2번]

로지스틱 회귀가 이진 분류에서 확률을 출력하기 위해 사용하는 함수는 시그모이드 함수이다.

04-2 확률적 경사 하강법

점진적인 학습

새로운 데이터가 추가되는 등의 일들이 일어날 때, 앞서 훈련한 모델을 버리지 않고 새로운 데이터에 대해서만 조금씩 더 훈련하는 방식을 점진적 학습 또는 온라인 학습이라고 부른다. 대표적인 점진적 학습 알고리즘은 확률적 경사 하강법(Stochastic Gradient Descent)이다.

확률적 경사 하강법

확률적 경사 하강법은 훈련 세트에서 랜덤하게 하나의 샘플을 선택하여 손실함수의 최솟값에 다다르는 과정(?)을 전체 샘플을 모두 사용할 때까지 반복하는 방식이다.

확률적 경사 하강법에서 훈련 세트를 한 번 모두 사용하는 과정을 에포크(epoch)라고 부른다. 그리고 여러 개의 샘플을 사용해 경사 하강법을 수행하는 방식을 미니배치 경사 하강법(minibatch gradient descent)이라고 한다. 하지만 극단적으로 한 번 경사로를 따라 이동하기 위해 전체 샘플을 사용할 수도 있는데, 이를 배치 경사 하강법(Batch gradient descent)이라고 부른다.

손실함수

손실함수(loss function)는 머신러닝 알고리즘이 얼마나 잘못된 것인지를 측정하는 기준이다. 그러므로 손실 함수의 값이 작을수록 좋다.

손실함수의 최솟값을 찾기 위해서 조금씩 이동하려면 위에서 언급한 확률적 경사 하강법을 사용해야 한다. 그렇기 때문에 손실함수는 미분 가능한, 연속적인 함수이어야 한다.

로지스틱 손실 함수

로지스틱 손실 함수(logistic loss function)는 이진 크로스엔트로피 손실 함수(binary cross-entropy loss function)라고도 한다. 다중 분류에서 사용하는 손실 함수를 크로스엔트로피 손실 함수(cross-entropy loss function)라고 부른다.

SGDClassifier

사이킷런에서 확률적 경사 하강법을 제공하는 대표적인 분류용 클래스는 SGDClassifier이다. SGDClassifier의 객체를 만들 때, 2개의 매개변수를 지정한다. loss는 손실 함수의 종류를 지정하고, max_iter는 수행할 에포크 횟수를 지정한다.

에포크와 과대/과소적합

에포크 횟수가 적으면 모델이 훈련 세트를 덜 학습한다. 에포크 횟수가 충분히 많으면 훈련 세트를 완전히 학습할 것이다.

그렇기 때문에 적은 에포크 횟수 동안에 훈련한 모델은 훈련 세트와 테스트 세트에 잘 맞지 않는 과소적합된 모델일 가능성이 높다. 그리고 반대로 많은 에포크 횟수 동안에 훈련한 모델은 훈련 세트에 너무 잘 맞아 테스트 세트에는 오히려 점수가 나쁜 과대적합된 모델일 가능성이 높다.

과대적합이 시작되기 전에 훈련을 멈출 수도 있는데, 이것을 조기 종료(early stopping)이라고 한다.

힌지 손실(hinge loss)은 서포트 벡터 머신(support vector machine)이라고 불리는 또 다른 머신러닝 알고리즘을 위한 손실함수이다.

profile
CS공부 하고 있는 수빈입니다.

0개의 댓글