[혼자 공부하는 머신러닝+딥러닝] 9강. 로지스틱 회귀 알아보기 - 분류모델
https://www.youtube.com/watch?v=pO27UnTsYQU&list=PLJN246lAkhQjoU0C4v8FgtbjOIXxSs_4Q&index=9
- 대각선길이, 전체길이, 높이, 두께, 무게의 특성을 이용하여 분류 기반의 확률 계산 모델을 만든다.
1. k-최근접 이웃 뷴류기의 확률 예측
- 이번 강의에서는 7개의 생선 종류(클래스)를 가지고 분류를 하는 과정을 수행한다.
- 이렇게 2개 이상 클래스가 포함된 문제의 분류를 다중분류(multi class classification)이라 한다.
- 사이킷런에서는 편리하게 클래스가 문자열인 경우 그대로 사용할 수 있는 장점이 있으나 알파벳순으로 자동으로 순서가 할당되기 때문에 사용할 때 유의해야 한다.
- 자동으로 정렬된 타겟값은 classes_ 속성에 저장되어 있다.
- 사이킷런의 분류 모델은 predict_proba() 메서드를 이용해 각 클래스별 확률값을 확인할 수 있다.
- 대부분의 사이킷런은 predict_proba() 메서드를 제공한다.
2. 로지스틱 회귀
- 로지스틱회귀는(logistic regression) 이름은 회귀지만 사실 분류모델이다.
- 이 알고리즘은 선형 회귀와 동일하게 선형 방정식을 학습하지만, 분류 모델이기에 타겟값이 확률을 가지기 위해서는 0~1 사이의 값이어야 하기에 시그모이드함수(sigmoid function)을 사용한다.
- 타겟값이 무한하게 큰 음수의 경우, 0에 근접해지고 무한하게 큰 양수의 경우 1에 가까워진다.
- 0인 경우에는 0.5가 된다.
- 때문에 어떤 값이 되더라도 0과 1사이의 범위에 존재하게 된다.
- 그러므로 0~100%의 확률로 해석을 할 수 있다.
- 로지스틱 회귀는 기본적으로 반복적인 알고리즘을 사용하기 때문에 max_iter 매개변수로 반복 횟수를 지정할 수 있다.
- 이전 강의에서 사용한 라쏘(lasso)모델처럼 반복 횟수가 충분하지 못하면 경고가 발생한다.
- 릿지 회귀와 같이 계수의 제곱을 규제한다. 이런 규제를 L2규제라 하는데 이 규제의 양을 조절하는 alpha가 LogisticRegression에서는 C라는 변수로 조정된다.
- alpha와는 반대로 C는 작을수록 규제가 커진다. 기본값은 1이다.
print(lr.coef_.shape, lr.intercept_.shape)
→ (7, 5) (7,)
# 타겟값 확인
print(kn.classes_)
→ ['Bream' 'Parkki' 'Perch' 'Pike' 'Roach' 'Smelt' 'Whitefish']
- 해당 데이터는 5개의 특성을 사용하기 때문에 ceof_의 열은 5개다. 그런데 행이 7개라는 것은 각 클래스별로 확률값을 하나씩 계산한 것이다.
- 이진 분류의 경우 시그모이드 함수를 사용하여 0~1 사이의 값으로 변환을 시키는데 다중 분류의 경우 소프트맥스(softmax) 함수를 이용해 7개의 타겟값을 확률로 변환한다.
- 중요한 점에서 이전분류와 다중분류의 차이점이 있다.
- 이중 분류 : 시그모이드 함수를 이용해 z값을 0~1 사이의 값으로 변환하여 확률을 구함
- 다중 분류 : 이 7개의 z값을 소프트맥스 함수를 사용해 확률로 변환한다.
- 이 모든 일련의 과정을 간단히 정리하면 다음과 같다.
- 회귀 식으로 y 값 구함 -> 시그모이드 함수 통과 -> 0.5 넘으면 해당 클래스 정답으로 예측
3. 시그모이드 vs 소프트맥스
- 둘의 공통점은 활성화 함수라는 것이다.
- 활성화 함수란?
- 딥러닝은 다양한 레이어들에서 데이터를 연산하고, 이후 다음 레이어로 값을 전달하는 구조이다.
- 이 과정에서 데이터를 다음 레이어로 바로 전달하는 것이 아니라 비선형 함수를 통과시켜 데이터를 정리해준 다음 전달을 한다. 이 때 데이터를 정리해주는 비선형 함수를 활성화 함수라 한다.
- 여러개의 특징을 찾아 클래스별로 분류하는 모델을 가지고 분류를 수행할 때, 과정에서 불필요한 데이터가 생성되거나 애매한 데이터가 있을 수 있다.
- 이러한 경우 해당 값을 제외시켜야 할 경우가 발생한다. 혹 수치가 너무 커서 다른 연산값에 영향을 미칠 때도 마찬가지이다.
- 이러한 상황을 미연에 방지하기 위해 활성화 함수를 사용해 데이터의 폭을 어느정도 재정의한다.
- reference : https://needjarvis.tistory.com/564
- reference : https://blog.naver.com/th9231/221989350922
4. 확률적 경사하강법
- 학습할때 데이터가 충분치 않거나 지속적으로 추가된다면 매번 모델을 다시 훈련해야 한다. 이러면 비용이나 시간이 기하급수적으로 증가할 수 있다. 그렇다고 데이터셋의 크기를 줄이기 위해 이전 데이터를 지운다면 과정에서 중요한 데이터가 손실될 수도 있다.
- 앞선 훈련과정에 새로운 데이터를 더해 조금씩 훈련하게 되면 데이터를 모두 유지할 필요도 없고 앞서 학습한 중요한 데이터도 까먹을 일이 없을 것이다.
- 이러한 훈련 방식을 점진적 학습, 혹은 온라인 학습이라 부른다.
- 대표적인 점진적 학습 알고리즘은 확률적 경사 하강법(stochastic gradient descent)이다.
- 경사 하강법은 가장 가파른 평사를 따라 원하는 지점에 도달하는 것을 목표로 한다.
- 만약 내려오는 폭이 크다면 내려가지 못하고 올라갈 수도 있다.
- 가장 가파른 길을 찾아 내려오지만 조금씩 내려오는 것이 중요하다.
- 이렇게 내려오는 과정이 바로 경사 하강법 모델을 훈련하는 것이다.
- 확률적 경사 하강법이란 훈련셋에서 랜덤하게 하나의 샘플을 골라 가파른 경사를 조금 내려오고 그다음 훈련셋에서 랜덤하게 또 다른 샘플을 하나 선택해 경사를 조금 내려오는 것으로 전체 샘플을 모두 사용할 때까지 반복한다.
- 만약, 모든 샘플을 다 사용하였는데도 원하는 지점까지 도달하지 못했다면, 처음부터 다시 시작한다.
- 이렇게 훈련셋을 모두 사용하는 과정을 에포크(epoch)라 한다.
- 경사하강법을 1개가 아닌 무작위로 몇 개의 샘플을 선택해 경사를 내려가는 방식도 있다. 이를 미니배치 경사하강법 (minibatch gradient descent)라 한다.
- 전체 샘플을 다 사용할 수도 있다. 이를 배치경사하강법(batch gradient descent)라 한다.
- 전체 데이터를 다 사용하면 안정적인 방법이 될 수 있지만, 컴퓨터 자원이 그만큼 많이 요구된다.
5. 손실함수
- 손실함수(loss function)는 어떤 문제에서 머신러닝 알고리즘이 잘못된 학습을 하고 있는지 여부를 측정하는 기준이다.
- 지도학습(supervised learning)시 알고리즘이 예측한 값과 실제 정답의 차이를 비교하기 위한 함수이다.
- 이 손실 함수를 로지스틱 손실 함수(logistic loss function) 또는 이진 크로스엔트로피 손실 함수(binary cross-entropy loss function)이라 부른다.
- 최적화를 위해 최소화하는 것이 목적인 함수이다. 때문에 목적함수(objective function)이라 부르기도 한다.
- 분야에 따라 비용함수(cost function), 에너지 함수(energy function)등으로 다양하게 부르기도 한다.
- 손실한수는 성능척도(performance measuer)와는 다른 개념이다.
- 성능 척도는 학습된 알고리즘의 성능을 정량적으로 평가하기 위한 지표로 정확도, f1점수, 정밀도 등이 있다.
- 성능 지표는 알고리즘 학슴의 종료시 모델 성능을 평가하기 위한 지표로 학습 중에는 사용되자 않으나 손실 함수는 학습 중에 평가하기 위한 지표이다.
- 회귀 모델에 쓰이는 손실함수에는 MSE, MAE, RMES 등이 있다.
- 분류 모델에 쓰이는 손실함수에는 Binary cross-entropy, Categorical cross-entropy 등이 있다.
- 일반적으로 신경망 학습에서는 평균제곱오차(MSE)와 교차 엔트로피 오차(cross entropy error)를 사용한다
- reference :
best!!! : https://perconsi.tistory.com/83
https://eunhye-zz.tistory.com/24
'데이터분석-머신러닝-AI > 강의 정리' 카테고리의 다른 글
[혼자 공부하는 머신러닝+딥러닝] 11강. 로지스틱 회귀로 와인 분류하기 & 결정 트리 - 와인 분류하기 (1) | 2023.11.12 |
---|---|
[혼자 공부하는 머신러닝+딥러닝] 10강. 확률적 경사 하강법 알아보기 - 점진적 학습, 온라인 학습 (0) | 2023.11.11 |
[혼자 공부하는 머신러닝+딥러닝] 8강. 특성 공학과 규제 알아보기 - 다중회귀 (1) | 2023.10.25 |
[혼자 공부하는 머신러닝+딥러닝] 7강. 사이킷런으로 선형 회귀 모델 만들어 보기 - 선형 회귀, 다항회귀 (0) | 2023.10.24 |
[혼자 공부하는 머신러닝+딥러닝] 6강. 회귀 문제를 이해하고 k-최근접 이웃 알고리즘으로 풀어 보기 - reshape, 과대적합, 과소적합 (1) | 2023.10.24 |
댓글