머신러닝
오버피팅의 반대의미
언더피팅
언더피팅
과소적합은 모델이 데이터의 기본 패턴을 학습할 수 없을 때 발생하며
훈련 및 테스트 데이터 모두에서 성능이 저하될 수 있다.
이는 모델이 너무 복잡하여 기본 패턴을 학습하는 대신
훈련 데이터를 기억할 때 발생하는 과적합의 반대이다.
과소적합의 주요 원인은 다음과 같다.
- 너무 단순한 모델 사용 : 모델이 너무 단순하면 데이터의 기본 패턴을 학습하기에 충분한 용량이 없을 수 있다.
- 불충분한 교육 데이터: 교육 데이터가 너무 작거나 모집단을 대표하지 않는 경우 모델이 입력 기능과 출력 변수 간의 실제 관계를 캡처하지 못할 수 있다.
- 잘못된 기능 사용: 모델에 사용된 기능이 데이터의 관련 정보를 캡처하지 않으면 모델이 적합하지 않을 수 있다.
과소적합을 진단하기 위해
훈련 데이터와 테스트 데이터 모두에서 모델의 성능을 볼 수 있다.
모델의 성능이 둘 다 좋지 않은 경우 과소적합일 수 있다.
또한 시각화 기술을 사용하여 데이터의 패턴과 이를 포착하는 모델의 능력을 이해할 수 있다.
과소적합을 해결하기 위해 심층 신경망과 같이
더 높은 용량을 가진 더 복잡한 모델을 사용할 수 있다.
또 다른 접근 방식은 모집단을 대표하는 더 많은 훈련 데이터를 수집하는 것이다.
또한 기능 엔지니어링 기술을 사용하여 데이터에서
관련 정보를 캡처하는 더 나은 기능을 만들 수 있다.
마지막으로 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 |