AI 정리

딥러닝 기본적인 모델 유형

dawon-project 2025. 3. 22. 02:39

문제 유형에 대한 방법과 손실 함수를 구분하자(헷갈리기 쉽다.) 특히 OLS와 MSE의 경우

 

회귀 분석 : 종속 변수와 독립변수의 관계를 도출하는 것

변수들 간의 관계를 파악함으로써 어떤 특정한 변수의 값을 다른 변수들로 설명하고 예측하는 통계적 기법

-> 종속 변수 : 예측하고자 하는 변수

-> 독립 변수 : 종속 변수들을 설명하는 변수

 

  • 종류
    • 선형 회귀(Linear Regression)
    • 로지스틱 회귀 (Logistic Regression)

선형 회귀 (Linear Regression)

연속적인 숫자(실수 값)를 예측하는 문제

ex) 집값 예측, 온도 예측, 판매량 예측 등

  • 종류
    • 단순 선형 회귀 (Simple Linear Regression)
    • 다중 선형 회귀 (Multiple Linear Regression)
    • 다항 회귀 (Polynomial Regression)

단순 선형 회귀 (Simple Linear Regression)

가장 기본적인 회귀 모델로, 1개의 입력 변수(X)와 1개의 출력 변수(Y) 사이의 직선관계를 찾는 회귀 모델

-> 단순 선형 회귀(Simple Linear Regression) 또는 단순 회귀(Simple Regression)라고도 부른다.

  • 지도 학습(Supervised Learning)의 한 종류
  • 목적 값(반응 변수, Depenent Variable)이 연속형인 경우 사용
  • 입력 변수(Feature)가 하나이면서 선형 관계인 경우를 뜻함
  • 2D 직선의 형태를 띔
    • x = 공부 시간 -> y = 성적
  • y = wx + b
  • 비선형 관계를 가지게 하는 활성화 함수가 없다

다중 선형 회귀 (Multiple Linear Regression)

여러개의 입력 변수(X)와 1개의 출력 변수(Y) 사이의 직선관계를 찾는 회귀 모델

-> 다중 선형 회귀(Multiple Linear Regression) 또는 다중 회귀(Multiple Regression)라고도 부른다.

  • 입력 변수(Feature)가 여러개이면서 선형 관계인 경우를 뜻함
  • 3D 평면 or 고차원 형태를 띔
    • x1 = 공부 시간, x2 = 수면 시간 -> y = 성적
  • y = w1x1 + w2x2 + w3x3 + .......+ b
  • 비선형 관계를 가지게 하는 활성화 함수가 없다

다항 회귀(Polynomial Regression)
-> OLS 기법을 통해서 각 함수의 계수를 구함

차수가 2차 이상인 독립 변수(X)와 1개의 출력 변수(Y)  사이의 곡선 관계를 찾는 회귀 모델

단순 선형 회귀로 해결할 수 없는 곡선 관계(Non-linear Relationship, 비선형 관계)를 찾는 문제

  • 비선형 관계를 가지게 하는 활성화 함수 사용

데이터 샘플이 1개일 경우의 다항 회귀 신경망

최소 제곱 추정량 (OLS : Ordinary Least Square estimation)
-> 선형 회귀 계수(파라미터)를 구하는 방법(과정)

회귀 선이 데이터를 가장 잘 표현하도록 가중치(w)를 찾는 방법

-> 오차 (Residual : 잔차, 실제값 - 예측값) 의 제곱합을 최소화하는 방식

 

 MSE가 있는데 이것은 왜 있는 것일까?

MSE란 손실 함수를 의미하고 OLS는 MSE를 이용해서 함수의 계수를 구하기 위한 과정 즉 방법을 뜻하는 것이다.
-> 즉, OLS는 MSE를 최소화하는 파라미터를 찾는 알고리즘
MSE는 OLS가 최소화하고자하는 목적 함수(Loss)

  • 최소 제곱법의 기능
    • 오차의 제곱을 최소화하는 방식으로 최적의 회귀선을 찾음
    • 경사 하강법(Gradient Descent) 또는 행렬 연산을 이용하여 최적화 가능

 

로지스틱 회귀(Logistic Regression) : 선형 결합으로 이루어진 모델(Y = WX+ B)를 이용하여 어떤 사건을 분류하거나 예측하는 데 사용하는 기법(방법 == 과정)

-> 분류 : 종류를 예측하는 것

  • 종류
    • 이진 분류(Binary Classification)
    • 다중 분류(Multinomial Classification)

 

분류 모델 성능 평가 지표(Accuracy, Precision, Recall, F1 score 등)

분류 모델(Classifier)을 평가할 때 주로 Confusion Matrix를 기반으로 Accuracy, Precision, Recall, F1 score를 측정한다.

  • Confusion Matrix(혼동 행렬, 오차 행렬)
    • 분류 모델의 성능을 측정하는데 자주 사용되는 표로 모델이 두 개 이상의 클래스를 얼마나 헷갈려하는지 알 수 있다.

  • T(True) : 예측한 것이 정답
  • F(False) : 예측한 것이 오답
  • P(Positive) : 모델이 positive라고 예측
  • N(Negative) : 모델이 negative라고 예측
  • TP(True Positive) : 모델이 Positive라고 예측했는데 실제로 정답이 positive (정답)
  • TN(True Negative) : 모델이 Negative라고 예측했는데 실제로 정답이 negative (정답)
  • FP(False Positive) : 모델이 Positive라고 예측했는데 실제로 정답이 negative (오답)
  • FN(False Negative) : 모델이 Negative라고 예측했는데 실제로 정답이 Positive (오답)

 

  • Accuracy(정확도) -> ACC
    • 모델이 전체 문제 중에서 정답을 맞춘 비율
    • 하지만 데이터가 불균형 할때 (ex. positive : negative = 9:1)는 Accuracy만으로 제대로 분류했는지는 알 수 없기 때문에 Recall과 Precision을 사용한다.
    • 0~ 1 사이의 값을 가지며, 1에 가까울수록 좋다

  • Precision(정밀도) = PPV(Positive Predictive Value)
    • 모델이 Positive라고 예측한 것들 중에서 실제로 정답이 Positive인 비율
    • 실제 정답이 negative인 데이터를 positive라고 잘못 예측하면 안되는 경우에 중요한 지표가 될 수 있다.
    • Precision을 높이기 위해선 FP를 낮추는 것이 중요하다
    • 0 ~ 1 사이의 값을 가지며 1에 가까울 수록 좋다.

 

  • Recall(재현율) = Sensitivity(민감도) = TPR(True Positive Rate)
    • 실제로 정답이 positive인 것들 중에서 모델이 positive라고 예측한 비율
    • 실제 정답이 positive인 데이터를 negative라고 잘못 예측하면 안되는 경우에 중요한 지표가 될 수 있다.
    • Recall 을 높이기 위해선 FN을 낮추는 것이 중요하다
    • 0 ~ 1 사이의 값을 가지며, 1에 가까울 수록 좋다.

  • F1 score
    • Recall과 Precision의 조화 평균
    • Recall과 Precision은 상호 보완적인 평가지표이기 때문에 F1 score을 사용한다.
    • Recall과 Precision이 한쪽으로 치우쳐지지 않고, 모두 클 때 큰 값을 가진다
    • 0 ~ 1 사이의 값을 가지며, 1에 가까울수록 좋다.
    • 이진 분류 문제에서 데이터의 클래스 비율이 극단적으로 다른 경우 적합한 평가지표

  • Error Rate(오분류율)
    • 모델이 전체 데이터에서 잘못 맞춘 비율

 

  • Specificity(특이도) = TNR(True Negative Rate)
    • 실제 정답이 negative인 것들 중에서 모델이 negative라고 예측한 비율

 

  • Fall out(위양성률) = FPR(False Positive Rate)
    • 실제 정답이 negative인 것들 중에서 모델이 positive라고 예측한 비율

  • 평가 지표 선택
    • 정밀도를 중시 : 거짓 양성이 문제일때 (ex. 스팸 필터)
    • 재현율을 중시 : 거짓 음성이 문제일때 (ex. 암 진단)
    • F1 - 점수 : Precision과 Recall이 모두 중요할 때
    • ROC-AUC : 확률 기반 모델의 전반적인 성능 평가

 

https://ai-creator.tistory.com/578 ->성능 평가 지표 정리본

 

https://ai-creator.tistory.com/579 -> 다중 분류일때의 성능 평가 참고 자료

 

ROC -AUC 그래프 분석

다양한 threshold에 대한 이진 분류기의 성능을 한번에 표시한 것

-> 좌상단에 붙어 있는 커브가 더 좋은 분류기를 의미한다.

-> x축 : 모델이 Positive라 예측했지만 실제로는 Negative인 경우(오답)

-> y축 : 모델이 Positive라 예측했고, 실제 정답도 Positive인 경우(정답)

 

True Positive와 False Positive를 그림으로 나타낸 것
threshold 변화에 따른 ROC 커브 위의 점 위치 변화
두 그룹을 더 잘 구별할 수 있을수록 ROC 커브는 좌상단에 붙게 된다.

https://angeloyeo.github.io/2020/08/05/ROC.html ->ROC 그래프 참고 자료

이진 분류 (Binary Classification)

 

입력 값에 따라 모델이 분류한 카테고리가 두가지인 분류 알고리즘

->집합의 요소를 두개의 그룹(각각을 클래스라 한다.) 중 하나로 분류하는 작업

-> 참(True,1)/ 거짓(False,0)

-> 여러 개의 독립 변수와 1개의 종속 변수를 가진 신경망 구조( 즉, 출력 노드는 하나)

  • 지도 학습
  • Target(반응 변수)이 두 개의 클래스로 분류
    • 시험: Pass/Fail
    • 종양 : 악성/ 양성
  • 손실 함수는 Binary Cross Entropy Loss를 사용
  • 출력층에서의 활성화 함수로 Sigmoid 사용

결과 값이 0 또는 1

 

다중 분류 ( Multinomial Classification )

입력값에 따라 모델이 분류한 카테고리가 세가지 이상인 분류 알고리즘

-> 타겟(target, = 종속 변수)이 가지는 값에 대응되는 데이터의 집합을 클래스 혹은 레이블이라고 함

  • 지도 학습
  • Target(종속(반응) 변수)이 다중 분류인 경우
    • 등급 : 상/ 중 / 하
    • 신용 등급 : 매우 양호/ 양호/ 보통/ 불량/ 매우 불량
    • 붓꽃의 종류 : Setosa/ Versicolor/ Virginica
  • 다중 분류 모델은 여러 개의 출력 값을 가지며  각각의 출력 값은 대응되는 타겟(클래스)와 매칭 될 확률을 의미함
  • 출력 층에서 활성화 함수로 Softmax 를 사용함로써 확률 값들로 바꿔줌
  • 그 확률 값들을 one-hot encoding 기법을 사용해서 범주형 데이터로 탈바꿈
    • one- hot encoding : 데이터 값들 중 확률이 가장 높은 값만 1로 남겨두고, 나머지 값들은 0으로 세팅하는 과정
      • 범주형 데이터와 데이터가 연속적인 특징을 갖지 않는 수치형 데이터에서 많이 사용되는 기법
      • 왜 사용하는가?
        • 텍스트 형태의 범주형 데이터를 컴퓨터가 이해하려면 해당 데이터를 숫자 데이터로 바꾸어줘야한다.
        • 이 과정을 통해 컴퓨터가 숫자를 통해 해당 범주형 데이터를 인지할 수 있게 되었지만 숫자 간의 크기(순서) 관계가 생겨버려서 컴퓨터가 범주형 데이터들을 연속적인 값처럼 오해하게 되는 문제가 발생한다.
        • 그래서 연속성이 없다는 것을 확실히 하기 위해서 원 핫 인코딩(One-Hot Encoding)이라는 기법을 사용한다.
          -> 각각의 데이터 범주에 대해 연속성 또는 순서에 대한 의미가 사라짐

  • 손실 함수는 Categorical Cross Entropy Loss를 주로 사용
    • pytorch에서 CrossEntropyLoss 함수 내부는 softmax(정확하게는 LogSoftmax)와 NLLLoss가 합쳐진 형태다
      • NLLLoss(Negative Log Likelihood)는 input 값에 대해 그냥 음의 값만을 취해주는 것
      • input 값은 log(P)가 들어온다. 즉, LogSoftmax의 확률 값이 input임 
      • Cross Entropy Loss = Softmax + log + NLLLoss
      • Cross Entropy Loss =  LogSoftmax  + NLLLoss

-> 확률 값이 클 수록 오차가 줄어든다.( 0~1 )

-> h는 softmax 활성화 함수를 통해서 확률값으로 변환된 값이 들어간다.

->y 는 실제 값이 one- hot encoding을 거쳐서 나온 결과물이 들어간다.

필자는 output 직전의 hidden layer 노드 개수가 더 적긴하지만 실제로 학습할 때는 hidden layer의 노드 개수가 output의 노드 개수보다 많아야한다.

-> 즉 학습시킬때는 정답 Label을 one-hot encoding해서 손실함수를 구한다.

-> 학습이 끝난 후에는 잘 학습이 되었는지 확인을 위해 순전파 과정 마지막에 one-hot encoding을 적용한다.

 

 

5. 다중분류 문제에서 클래스 불균형 문제를 완화하기 위한 방법으로 적합한 것은 무엇인가요? 모두 정답

① Oversampling

② Data Augmentation

③ Class Weighting

④ Under-samplin

 

참고 문헌:

https://076923.github.io/posts/Python-pytorch-13/

https://ai-creator.tistory.com/579 

https://white-joy.tistory.com/9  -> 이진 분류 평가지표