상세 컨텐츠

본문 제목

[혼공머] 4장 다양한 분류 알고리즘

통계, ML 방법론

by eun_00 2024. 5. 9. 21:17

본문

출처: [혼자 공부하는 머신러닝+딥러닝] 책

혼자 공부하는 머신러닝+딥러닝 - 예스24

- 혼자 해도 충분하다! 1:1 과외하듯 배우는 인공지능 자습서 이 책은 수식과 이론으로 중무장한 머신러닝, 딥러닝 책에 지친 ‘독학하는 입문자’가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있


💡 로지스틱 회귀 알고리즘을 배우고, 이진 분류 문제에서 클래스 확률을 예측해보자

 

  • 표준화할 때는 반드시 훈련세트의 통계값으로 테스트 세트를 변환해야한다.
  • 이중분류에서 확률이 0~1 사이에 있으려면 z가 아주 큰 음수일 땐 0이 되고, 큰 양수일 때는 1이 되도록 바꿔주는 시그모이드 함수를 사용한다.
  • 다중분류에서는 여러개의 선형방정식 출력값을 0~1 사이로 압축하고 전체 합이 1이 되도록 하는 소프트맥스 함수를 사용한다.

proba 배열과 확률로 뽑힌 값의 결과가 일치하는 것을 알 수 있다. axis =1는 지정하여 각 행 샘플에 대해 소프트맥스를 계산한다. 그렇지 않으면 배열 전체에 대해 소프트맥스를 계산하게된다.

 

 

📍 Logistic Regression 정리
선형 분류 알고리즘
Scikit-learn LogisticRegression 클래스
solver 매개변수 : 기본값 'lbfgs', 'sag' 확률적 평균경사하강법 알고리즘 많이 사용
penalty 매개변수: 기본값 L2규제(릿지), L1규제(라쏘)
C 매개변수: 기본값 1.0, 값이 작을수록 규제가 강해짐 즉 과소적합 유도

💡 경사하강법 알고리즘을 이해하고, 대량의 데이터에서 분류 모델을 훈련하는 방법을 알아보자.
  • 훈련한 모델을 버리지는 않되, 새로운 데이터에 대해서만 조금씩 더 훈련하는 것이 점진적 학습 방법이다.
  • 확률적경사하강법은 훈련세트에서 샘플 하나씩 꺼내 손실함수의 경사를 따라 최적의 모델을 찾는 알고리즘이다. 
  • 훈련세트에서 랜덤하게 하나의 샘플을 선택하여 경사를 내려가고, 또 다른 샘플을 랜덤하게 선택하여 내려가고 이런식으로 모든 샘플을 계속한다.
  • 이 모든 샘플로 1회 경사를 내려가면, 다시 처음부터 시작하는데 만족할만한 위치에 도달할 때까지 계속 내려간다. 확률적경사하강법에서 훈련세트를 한번 모두 사용하는 과정을 에포크라고 한다
 

손실함수

  • 머신러닝 알고리즘이 얼마나 엉터리인지를 측정하는 기준. 확률적 경사하강법이 최적화할 대상이다.
  • 손실함수는 미분 가능해야한다.
  • 이진분류 손실함수: binary cross-entropy loss function
  • 다중분류 손실함수: cross entrophy loss function
  • 회귀: 평균제곱오차 MSE or 평균절대값오차

사이킷런은 학습량이 부족하면 ConvergenceWarning이 뜬다. 이 경우 에포크 수를 늘려 학습하는 것이 좋다.

에포크 수가 많으면 과대적합, 에포크 수가 적으면 과소적합될 우려가 있다.

이 그래프에서 epoch 수가 100이 넘어가면서 과대적합이 되는 것을 볼 수 있다. 또한 초기에는 과소적합된걸 볼 수 있다. epoch 수를 100으로 맞춰서 학습시켜보자.

확률적경사하강법을 통해 성능이 많이 높아진걸 볼 수 있다!!

 

📍 경사하강법 정리
Scikit-learn SGDClassifier 이용
loss 매개변수 : log는 로지스틱 손실함수
max_iter 매개변수: 에포크 횟수 지정
tol 매개변수: 반복을 멈출 조건. None 선택 시 성능이 올라가도 정해진 epoch 수만큼 이른 중단 없이 무조건 학습

 

관련글 더보기