• 회귀분석 및 선형회귀분석, 회귀분석 모델 평가지표 (MAE, MSE, RMSE 등)
  • Nearest Neighbor Classifier
  • kNN, k-Means 알고리즘



Regression 회귀

Regression analysis 회귀 분석

관찰된 연속형 변수들에 대해 두 변수 사이의 모형을 구한 뒤 적합도를 측정하는 분석 방법

  • 독립변수(설명변수) : 결과의 원인 (x)
  • 종속변수(응답변수) : 독립변수에 따라 값이 달라짐 (y)



Linear Regression 선형 회귀

종속 변수와 하나 이상의 독립 변수 간의 관계를 모델링하는 통계적 방법

→ 독립 변수의 값을 기반으로 종속 변수의 값을 예측하기 위함

  • y = mx + b
    • y : 종속변수 (목표)
    • x : 독립변수 (예측 변수)
    • m : 직선의 기울기 (회귀 계수)
    • b : y 절편 (상수항)

Linear Regression의 가정

  • 선형성: 종속 변수와 독립 변수 간의 관계가 선형적이어야 한다

  • 독립성: 관측값들은 서로 독립적이어야 한다

    • 잔차들이 무작위로 분포되어 있어야 함 → 시간의 흐름에 따라 잔차가 특정 패턴을 보이면 위배

      잔차 Residual

  • 등분산성: 오류의 분산이 일정해야 한다

    • 잔차들이 일정한 분포를 보여야 함 → 특정 구간에서 잔차의 분산이 커지거나 작아지면 위배
  • 정규성: 오류가 정규 분포를 따른다

    • 잔차들이 정규 분포를 따를 경우 점들이 대각선에 가깝게 위치함

최소 제곱법 OLS, Ordinary Least Squares

  • 관측 값과 예측 값의 차이(잔차)의 제곱합을 최소화하는 매개변수 m과 b를 추정하는 방법

다중 선형 회귀

  • 여러 독립 변수를 포함하도록 선형 회귀를 확장하여 종속 변수와의 관계를 모델링
    • 종속 변수와 독립 변수 사이의 관계가 선형이라는 가정을 따른다
  • 최소 제곱법(OLS)를 사용하여 회귀 계수를 추정할 수 있음
  • 독립 변수 간의 다중 공선성(multicollinearity) 문제를 가질 수 있음

(ex) 집 크기(x), 침실 수(x), 집값(y) 간의 관계 → y는 하나, x가 여럿


모델 평가 지표

  • 평균 절대 오차 MAE, Mean Absolute Error
    • 예측 값이 실제 값과 얼마나 차이나는지 절대값으로 계산해 평균화한 지표
  • 평균 제곱 오차 MSE, Mean Squared Error
    • 실제 값과 예측 값 간의 차이의 제곱을 평균 낸 값. 오차를 제곱하므로 큰 오차에 더 큰 패널티를 부여 → 모델의 큰 오차를 줄이는 데에 유용
    • 단위가 제곱된 형태라 실제 값과 다를 수 있음
  • 제곱근 평균 제곱 오차 RMSE, Root Mean Square Error
    • MSE에 제곱근을 취한 값으로, 오차를 원래 단위로 변환. MSE와 같은 장점을 가지면서도 단위 문제를 해결
    • 해석이 용이하고, 큰 오차에 민감하게 반응하는 동시에 실제 값과 같은 단위를 유지
  • 결정 계수 $R^{2}$
    • 모델이 종속 변수의 변동성을 얼마나 설명하는지를 나타내는 지표
    • 0에서 1 사이의 값을 가지며, 1에 가까울수록 모델이 데이터를 잘 설명하는 것
    • 모델의 설명력을 평가하는 데에 유용





Nearest Neighbor Classifier

  • 쿼리(테스트) 데이터 포인트에 대해 가장 가까운 (k개의) 학습 데이터 포인트를 (k)개 찾고, 레이블을 사용하여 예측
import numpy as np

class NearestNeighbor :
    def __init__ (self) :
        pass

    def train (self, images, labels) :
        # simpLy remembers ail the training data
        self.images = images
        self.labels = labels

    def predict (self, test image) :
        # assume that each image is vectozized to ID
        min_dist = sys.maxint # maximum integer in python
        for i in range(self.images.shape[0]) :
            dist = np.sum(np.abs(self.images[i, :] - test_image))
            if dist < min_dist :
                min_dist = dist
                min_index = i
return self.labels[min_index]
  • N개의 훈련 샘플이 있다고 할 때, 훈련 시 O(1), 예측 시 O(N)

Issues

  • 픽셀 거리에는 k-nn이 사용되지 않음
  • 거리 → Semantic한 정보를 제공하지 않음

k - Nearest Neighbor Classifier

  • 가장 가까운 k개 지점에서 과반수 득표를 받아야
  • k가 높으면 노이즈를 잡는 데에 유리하다




Linear Classifier

이미지는 기본적으로 3차원 행렬

인풋 이미지랑 똑같은 크기의 각 픽셀에 매핑되는 매개변수 w의 가중치(혹은 파라미터)

편향 bias : 인풋 데이터에게 영향을 받지 않으면서 아웃풋 데이터에 영향을 주는 파라미터

→ 데이터셋이 어떤 데이터에 편향되어 있는지에 대한 지표

f(x, W) = Wx + b → 행렬 곱을 이용하여 f(x, W) = W’x’

‘ 생략 → f(x, W) = Wx

매개변수적 모델의 장점 :

  • 학습이 완료되면 가중치 W만을 필요로 함 방대한 학습 데이터 셋을 저장할 필요가 없다
    → 공간 효율성이 높음
  • 테스트 시 단일 행렬-벡터 곱(Wx)으로 예제를 평가할 수 있다
    → 모든 훈련 데이터와 비교하는 것보다 훨씬 빠르다




Softmax Classifier

소프트맥스 함수의 수치적 불안정성(numerical instability)을 해결하기 위한 가장 적절한 방법은 무엇일까?

소프트맥스 함수는 입력 값의 지수화를 통해 각 클래스에 속할 확률을 계산한다. 그러나, 지수화를 할 때 큰 수를 다루게 되면 수치적 불안정성이 발생할 수 있다.

이를 방지하기 위해 흔히 사용되는 방법은 입력 값의 최대값을 계산하여 모든 입력 값에서 이를 빼는 것!

이렇게 하면 가장 큰 값이 0이 되어 지수화할 때 수치적으로 안정적인 값을 유지할 수 있다. 이 방법은 소프트맥스 함수의 수치적 안정성을 높이고 오버플로우를 방지하는 데 효과적이다.




Loss Function

이진 분류의 경우, 기준값(ground truth)은 y ={+1,-1}

  • 모델은 하나의 점수 ŷ ∈ ℝ 를 예측
  • ŷ이 0보다 크면 포지티브 클래스로, 그렇지 않으면 네거티브 클래스로 분류

마진 기반 손실

  • 손실은 yŷ에 따라 결정
  • 부호가 같으면(즉, 분류가 정확하면) 손실이 작아지거나 0
  • 부호가 다르면(잘못된 분류) 손실이 커짐

0/1 손실

  • 모델이 예제를 잘못 분류하면 일정한 손실 발생
  • 올바르게 분류하면 손실이 없음
  • yŷ = 0 일 때 (Step Function) 미분 불가능한 영역이 존재 → 실제로 사용하기 어려움

로그 손실

  • 예측이 정확할수록 패널티가 작아진다 (0은 아님)
  • 연속 함수 → 어느 지점에서나 미분 가능
  • 확률 값으로 아웃풋을 냄 → 사용하기 좋음

지수 손실

  • 로그 손실과 비슷하지만 잘못된 경우 더 큰 패널티를 주고 올바른 경우 적은 패널티를 준다
  • 어느 지점에서나 미분 가능

Hinge 힌지 손실

  • 오류에 대한 패널티가 선형적으로 증가
  • 오차 범위 내에서 정답인 경우에도 약간의 패널티
  • 미분 값이 항상 상수? → 계산이 효율적

장단점

  • 지수 손실은 아웃라이어에 매우 큰 손실을 할당하므로 아웃라이어의 영향을 강하게 받음

    틀린 것에 대해 많은 영향을 받으므로 → 노이즈가 많은 데이터에 적합하지 않음

  • 힌지 손실과 로그 손실은 널리 사용

  • 힌지 손실(SVM)이 계산적으로 더 효율적

  • 로그 손실(로지스틱 회귀)은 출력을 p(y|x)로 볼 수 있기 때문에 해석이 더 쉽다

SVM, Support Vector Machine

로지스틱 회귀




손실 함수 : 확률적 설정

이진 분류 문제에 대하여, 기준값은 y ={0,1}입니다.

  • 이 모델은 한 클래스의 확률인 하나의 점수 ŷ를 예측함
  • 다른 클래스의 확률은 1-ŷ
  • 점수 차이에 시그모이드 함수를 적용하는 것이 그 예시!
    • 자연스럽게 K >2 클래스까지 확장됨
  • 기준값은 1열 벡터로 표현됨 -> y=[0,0,0,0,1,0,0].
  • 모델은 K - 1 점수를 예측하고 마지막 점수를 ‘1-합계’로 남긴다
  • 소프트맥스가 그 예시 -> 예측값이 0에서 1 사이이고 합계가 1
    • 이 설정에서 손실 함수는 기본적으로 두 개의 (GT와 예측)확률 분포를 비교

Cross Entropy

  • $y_{ik}$ → i번째 데이터의 k번째 클래스에 대한 정답 값
  • $\hat y_{ik}$ → i번째 데이터의 k번째 클래스에 해당하는 예측 값
  • {log(예측 값) * 정답 값}를 다 더하고 N(데이터 수)으로 나누고 마이너스



'Study - AI > Machine Learning' 카테고리의 다른 글

Transformer  (0) 2025.01.10
Machine Learning Life Cycle  (0) 2025.01.06