- 회귀분석 및 선형회귀분석, 회귀분석 모델 평가지표 (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의 가정
선형성: 종속 변수와 독립 변수 간의 관계가 선형적이어야 한다
독립성: 관측값들은 서로 독립적이어야 한다
잔차들이 무작위로 분포되어 있어야 함 → 시간의 흐름에 따라 잔차가 특정 패턴을 보이면 위배
등분산성: 오류의 분산이 일정해야 한다
- 잔차들이 일정한 분포를 보여야 함 → 특정 구간에서 잔차의 분산이 커지거나 작아지면 위배
정규성: 오류가 정규 분포를 따른다
- 잔차들이 정규 분포를 따를 경우 점들이 대각선에 가깝게 위치함
최소 제곱법 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)로 볼 수 있기 때문에 해석이 더 쉽다
손실 함수 : 확률적 설정
이진 분류 문제에 대하여, 기준값은 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 |