본문 바로가기

인공지능

머신러닝 - Underfitting

머신러닝

오버피팅의 반대의미

언더피팅

 

언더피팅

과소적합은 모델이 데이터의 기본 패턴을 학습할 수 없을 때 발생하며

훈련 및 테스트 데이터 모두에서 성능이 저하될 수 있다.

이는 모델이 너무 복잡하여 기본 패턴을 학습하는 대신

훈련 데이터를 기억할 때 발생하는 과적합의 반대이다.

 

과소적합의 주요 원인은 다음과 같다.

  1. 너무 단순한 모델 사용 : 모델이 너무 단순하면 데이터의 기본 패턴을 학습하기에 충분한 용량이 없을 수 있다.
  2. 불충분한 교육 데이터: 교육 데이터가 너무 작거나 모집단을 대표하지 않는 경우 모델이 입력 기능과 출력 변수 간의 실제 관계를 캡처하지 못할 수 있다.
  3. 잘못된 기능 사용: 모델에 사용된 기능이 데이터의 관련 정보를 캡처하지 않으면 모델이 적합하지 않을 수 있다.

과소적합을 진단하기 위해

훈련 데이터와 테스트 데이터 모두에서 모델의 성능을 볼 수 있다.

모델의 성능이 둘 다 좋지 않은 경우 과소적합일 수 있다.

또한 시각화 기술을 사용하여 데이터의 패턴과 이를 포착하는 모델의 능력을 이해할 수 있다.

 

과소적합을 해결하기 위해 심층 신경망과 같이

높은 용량을 가진 복잡한 모델을 사용할 있다.

다른 접근 방식은 모집단을 대표하는 많은 훈련 데이터를 수집하는 것이다.

또한 기능 엔지니어링 기술을 사용하여 데이터에서

관련 정보를 캡처하는 나은 기능을 만들 있다.

마지막으로 L1 또는 L2 정규화와 같은 정규화 기술을 사용하여

모델이 훈련 데이터에 과적합되는 것을 방지할 있습니다.

 

다음은 scikit-learn 라이브러리와 간단한 선형 회귀 모델을 사용하여 Python에서 과소적합하는 예다.

 

from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
import numpy as np

# Generate some random data
X = np.array([[0], [1], [2], [3], [4], [5]])
y = np.array([1, 2, 4, 6, 8, 10])

# Train a linear regression model
model = LinearRegression()
model.fit(X, y)

# Evaluate the model on the training data
y_pred_train = model.predict(X)
mse_train = mean_squared_error(y, y_pred_train)
print("Training MSE:", mse_train)

# Generate some test data
X_test = np.array([[6], [7], [8], [9], [10]])
y_test = np.array([12, 14, 16, 18, 20])

# Evaluate the model on the test data
y_pred_test = model.predict(X_test)
mse_test = mean_squared_error(y_test, y_pred_test)
print("Test MSE:", mse_test)

 

X이 예에서는 하나의 기능이 있는 기능 매트릭스이고

y출력 변수인 무작위 데이터를 생성한다.

 

LinearRegression()그런 다음 scikit-learn 라이브러리를 사용하여

선형 회귀 모델을 훈련한다 .

predict()방법을 사용하여 출력을 예측하고

함수를 사용하여 평균 제곱 오차를 계산하여

테스트 데이터에서 모델을 평가한다

 

mean_squared_error(). 훈련 MSE를 인쇄하고

모델이 훈련 데이터에 적합하기 때문에 낮아야 한다.

그러나 일부 테스트 데이터를 생성하고

훈련된 모델을 사용하여 출력을 예측하고 테스트 데이터에 대한

MSE를 계산할 때 MSE가 높음을 확인해야 한다.

 

이는 모델이 데이터에 과소적합되었음을 나타낸다.

이것은 단순한 예일 뿐이며 실제로는 복잡한 모델과 정교한 평가 기술을 사용하여 과소적합을 진단하고 해결한다.

 

'인공지능' 카테고리의 다른 글

지식그래프 - Semantic  (0) 2023.03.21
지식그래프 - Directed edge-labeled graph  (0) 2023.03.21
알고리즘 - Sorting Networks 예제  (0) 2023.03.21
지식그래프 - Data Graphs  (0) 2023.03.20
머신러닝 - Overfitting  (0) 2023.03.20