데이터분석-머신러닝-AI/강의 정리

[혼자 공부하는 머신러닝+딥러닝] 9강. 로지스틱 회귀 알아보기 - 분류모델

bluebamus 2023. 11. 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

 

[머신러닝] 로지스틱 회귀(Logistic Regression)으로 분류 실습 - 생선 종류 예측

안녕하세요! 이번 시간에는 로지스틱 회귀를 이용하여 분류 문제를 풀어봅시다. 들어가기 앞서서 혹시 회귀가 뭔지, 로지스틱 회귀가 뭔지 헷갈리거나 들어는 봤지만 뭔지 정확히 모르겠다 하

perconsi.tistory.com

https://eunhye-zz.tistory.com/24

 

[혼자공부하는머신러닝+딥러닝] 4. 다양한 분류 알고리즘

아래 내용은 "혼자 공부하는 머신러닝+딥러닝" 을 공부하며 간략하게 정리한 내용입니다. 쉬운 사례로 어려운 수식 없이 설명하므로 입문자에게 강추하는 책입니다! 1. 시작하기 전에 한빛마켓

eunhye-zz.tistory.com

https://velog.io/@dnfl1563/chapter4.-%EB%8B%A4%EC%96%91%ED%95%9C-%EB%B6%84%EB%A5%98-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%981-%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1-%ED%9A%8C%EA%B7%80

 

chapter4. 다양한 분류 알고리즘(1)-로지스틱 회귀

('혼자 공부하는 머신러닝+딥러닝' 176~198 페이지의 내용을 정리한 것을 포함합니다.)통계학에서 '회귀'란, 여러 독립 변수와 한 개의 종속 변수 간의 상관관계를 모델링하는 기법을 통칭한다. \-

velog.io

 

댓글