찾다
기술 주변기기일체 포함학습 곡선을 통해 과적합과 과소적합 식별

학습 곡선을 통해 과적합과 과소적합 식별

Apr 29, 2024 pm 06:50 PM
일체 포함기계 학습과적합 모델

이 글에서는 학습 곡선을 통해 머신러닝 모델에서 과적합과 과소적합을 효과적으로 식별하는 방법을 소개합니다.

학습 곡선을 통해 과적합과 과소적합 식별

과소적합 및 과적합

1. 과적합

모델이 데이터에서 과도하게 학습되어 데이터로부터 노이즈를 학습하는 경우 이를 과적합이라고 합니다. 과적합된 모델은 모든 예를 너무 완벽하게 학습하므로 보이지 않거나 새로운 예를 잘못 분류합니다. 과대적합 모델의 경우 완벽/거의 완벽에 가까운 훈련 세트 점수와 형편없는 검증 세트/테스트 점수를 얻게 됩니다.

약간 수정됨: "과적합의 원인: 간단한 문제를 해결하기 위해 복잡한 모델을 사용하면 데이터에서 노이즈가 추출됩니다. 훈련 세트로 사용되는 작은 데이터 세트는 모든 데이터를 올바르게 표현하지 못할 수 있기 때문입니다." 2. 과소적합

모델이 데이터의 패턴을 올바르게 학습할 수 없는 경우 과소적합이라고 합니다. 과소적합 모델은 데이터 세트의 모든 예를 완전히 학습하지는 않습니다. 이 경우 훈련 세트와 검증 세트 모두의 오류가 낮다는 것을 알 수 있습니다. 이는 모델이 너무 단순하고 데이터에 맞는 매개변수가 충분하지 않기 때문일 수 있습니다. 과소적합 문제를 해결하기 위해 모델의 복잡성을 높이고, 레이어 또는 뉴런의 수를 늘리려고 노력할 수 있습니다. 그러나 모델 복잡성이 증가하면 과적합 위험도 증가한다는 점에 유의해야 합니다.

적합하지 않은 이유: 복잡한 문제를 해결하기 위해 간단한 모델을 사용합니다. 모델이 데이터의 모든 패턴을 학습할 수 없거나, 모델이 기본 데이터의 패턴을 잘못 학습합니다. 데이터 분석과 머신러닝에서는 모델 선택이 매우 중요합니다. 문제에 적합한 모델을 선택하면 예측의 정확성과 신뢰성이 향상될 수 있습니다. 복잡한 문제의 경우 데이터의 모든 패턴을 캡처하려면 더 복잡한 모델이 필요할 수 있습니다. 또한

Learning Curve

학습 곡선은 새로운 훈련 샘플을 점진적으로 추가하여 훈련 샘플 자체의 훈련 및 검증 손실을 표시합니다. 검증 점수(보이지 않는 데이터에 대한 점수)를 향상시키기 위해 추가 훈련 예제를 추가해야 하는지 결정하는 데 도움이 될 수 있습니다. 모델이 과적합된 경우 추가 학습 예제를 추가하면 보이지 않는 데이터에 대한 모델 성능이 향상될 수 있습니다. 마찬가지로, 모델이 과소적합한 경우 훈련 예제를 추가하는 것이 유용하지 않을 수 있습니다. 'learning_curve' 방법은 Scikit-Learn의 'model_selection' 모듈에서 가져올 수 있습니다.

from sklearn.model_selection import learning_curve

로지스틱 회귀와 Iris 데이터를 사용하여 시연해 보겠습니다. 로지스틱 회귀 모델에 적합하고 교차 검증 점수, 훈련 점수 및 학습 곡선 데이터를 반환하는 "learn_curve"라는 함수를 만듭니다.

#The function below builds the model and returns cross validation scores, train score and learning curve data def learn_curve(X,y,c): ''' param X: Matrix of input featuresparam y: Vector of Target/Labelc: Inverse Regularization variable to control overfitting (high value causes overfitting, low value causes underfitting)''' '''We aren't splitting the data into train and test because we will use StratifiedKFoldCV.KFold CV is a preferred method compared to hold out CV, since the model is tested on all the examples.Hold out CV is preferred when the model takes too long to train and we have a huge test set that truly represents the universe'''  le = LabelEncoder() # Label encoding the target sc = StandardScaler() # Scaling the input features y = le.fit_transform(y)#Label Encoding the target log_reg = LogisticRegression(max_iter=200,random_state=11,C=c) # LogisticRegression model # Pipeline with scaling and classification as steps, must use a pipelne since we are using KFoldCV lr = Pipeline(steps=(['scaler',sc],['classifier',log_reg]))   cv = StratifiedKFold(n_splits=5,random_state=11,shuffle=True) # Creating a StratifiedKFold object with 5 folds cv_scores = cross_val_score(lr,X,y,scoring="accuracy",cv=cv) # Storing the CV scores (accuracy) of each fold   lr.fit(X,y) # Fitting the model  train_score = lr.score(X,y) # Scoring the model on train set  #Building the learning curve train_size,train_scores,test_scores =learning_curve(estimator=lr,X=X,y=y,cv=cv,scoring="accuracy",random_state=11) train_scores = 1-np.mean(train_scores,axis=1)#converting the accuracy score to misclassification rate test_scores = 1-np.mean(test_scores,axis=1)#converting the accuracy score to misclassification rate lc =pd.DataFrame({"Training_size":train_size,"Training_loss":train_scores,"Validation_loss":test_scores}).melt(id_vars="Training_size") return {"cv_scores":cv_scores,"train_score":train_score,"learning_curve":lc}

위의 코드는 매우 간단합니다. 이제 학습 곡선의 사용을 소개하기 시작합니다

1. 피팅 모델의 학습 곡선

'learn_curve' 함수를 사용하세요. 반정규화 변수/매개변수 'c'를 1로 설정하면 좋은 피팅 모델을 얻을 수 있습니다(즉, 정규화를 수행하지 않습니다).

lc = learn_curve(X,y,1) print(f'Cross Validation Accuracies:\n{"-"*25}\n{list(lc["cv_scores"])}\n\n\ Mean Cross Validation Accuracy:\n{"-"*25}\n{np.mean(lc["cv_scores"])}\n\n\ Standard Deviation of Deep HUB Cross Validation Accuracy:\n{"-"*25}\n{np.std(lc["cv_scores"])}\n\n\ Training Accuracy:\n{"-"*15}\n{lc["train_score"]}\n\n') sns.lineplot(data=lc["learning_curve"],x="Training_size",y="value",hue="variable") plt.title("Learning Curve of Good Fit Model") plt.ylabel("Misclassification Rate/Loss");

학습 곡선을 통해 과적합과 과소적합 식별위 결과에서 교차 검증 정확도는 훈련 정확도에 가깝습니다.

학습 곡선을 통해 과적합과 과소적합 식별훈련 손실(파란색): 잘 맞는 모델의 학습 곡선은 훈련 사례 수가 증가함에 따라 점차적으로 감소하고 평탄해집니다. 이는 더 많은 훈련 사례를 추가해도 모델의 성능을 향상시킬 수 없음을 나타냅니다. 훈련 데이터.

검증 손실(노란색): 잘 맞는 모델의 학습 곡선은 처음에는 검증 손실이 높으며 훈련 샘플 수가 증가함에 따라 점차적으로 감소하고 평탄해집니다. 이는 샘플이 많을수록 더 많은 패턴을 배울 수 있으며 이는 "보이지 않는" 데이터에 도움이 될 것입니다

마지막으로, 합리적인 수의 훈련 예제를 추가한 후에 훈련 손실과 검증 손실이 서로 가깝다는 것을 알 수 있습니다.

2. 과적합 모델의 학습 곡선

'learn_curve' 함수를 사용하여 과적합 모델의 높은 값을 얻습니다('c' 값은 과적합으로 이어짐).

lc = learn_curve(X,y,10000) print(f'Cross Validation Accuracies:\n{"-"*25}\n{list(lc["cv_scores"])}\n\n\ Mean Cross Validation Deep HUB Accuracy:\n{"-"*25}\n{np.mean(lc["cv_scores"])}\n\n\ Standard Deviation of Cross Validation Accuracy:\n{"-"*25}\n{np.std(lc["cv_scores"])} (High Variance)\n\n\ Training Accuracy:\n{"-"*15}\n{lc["train_score"]}\n\n') sns.lineplot(data=lc["learning_curve"],x="Training_size",y="value",hue="variable") plt.title("Learning Curve of an Overfit Model") plt.ylabel("Misclassification Rate/Loss");

학습 곡선을 통해 과적합과 과소적합 식별

与拟合模型相比,交叉验证精度的标准差较高。

학습 곡선을 통해 과적합과 과소적합 식별

过拟合模型的学习曲线一开始的训练损失很低,随着训练样例的增加,学习曲线逐渐增加,但不会变平。过拟合模型的学习曲线在开始时具有较高的验证损失,随着训练样例的增加逐渐减小并且不趋于平坦,说明增加更多的训练样例可以提高模型在未知数据上的性能。同时还可以看到,训练损失和验证损失彼此相差很远,在增加额外的训练数据时,它们可能会彼此接近。

3、欠拟合模型的学习曲线

将反正则化变量/参数' c '设置为1/10000来获得欠拟合模型(' c '的低值导致欠拟合)。

lc = learn_curve(X,y,1/10000) print(f'Cross Validation Accuracies:\n{"-"*25}\n{list(lc["cv_scores"])}\n\n\ Mean Cross Validation Accuracy:\n{"-"*25}\n{np.mean(lc["cv_scores"])}\n\n\ Standard Deviation of Cross Validation Accuracy:\n{"-"*25}\n{np.std(lc["cv_scores"])} (Low variance)\n\n\ Training Deep HUB Accuracy:\n{"-"*15}\n{lc["train_score"]}\n\n') sns.lineplot(data=lc["learning_curve"],x="Training_size",y="value",hue="variable") plt.title("Learning Curve of an Underfit Model") plt.ylabel("Misclassification Rate/Loss");

학습 곡선을 통해 과적합과 과소적합 식별

与过拟合和良好拟合模型相比,交叉验证精度的标准差较低。

학습 곡선을 통해 과적합과 과소적합 식별

欠拟合模型的学习曲线在开始时具有较低的训练损失,随着训练样例的增加逐渐增加,并在最后突然下降到任意最小点(最小并不意味着零损失)。这种最后的突然下跌可能并不总是会发生。这表明增加更多的训练样例并不能提高模型在未知数据上的性能。

总结

在机器学习和统计建模中,过拟合(Overfitting)和欠拟合(Underfitting)是两种常见的问题,它们描述了模型与训练数据的拟合程度如何影响模型在新数据上的表现。

分析生成的学习曲线时,可以关注以下几个方面:

  • 欠拟合:如果学习曲线显示训练集和验证集的性能都比较低,或者两者都随着训练样本数量的增加而缓慢提升,这通常表明模型欠拟合。这种情况下,模型可能太简单,无法捕捉数据中的基本模式。
  • 过拟合:如果训练集的性能随着样本数量的增加而提高,而验证集的性能在一定点后开始下降或停滞不前,这通常表示模型过拟合。在这种情况下,模型可能太复杂,过度适应了训练数据中的噪声而非潜在的数据模式。

根据学习曲线的分析,你可以采取以下策略进行调整:

  • 对于欠拟合
  • 增加模型复杂度,例如使用更多的特征、更深的网络或更多的参数。
  • 改善特征工程,尝试不同的特征组合或转换。
  • 增加迭代次数或调整学习率。
  • 对于过拟合
  • 使用正则化技术(如L1、L2正则化)。

  • 减少模型的复杂性,比如减少参数数量、层数或特征数量。

  • 增加更多的训练数据。

  • 应用数据增强技术。

  • 使用早停(early stopping)等技术来避免过度训练。

通过这样的分析和调整,学习曲线能够帮助你更有效地优化模型,并提高其在未知数据上的泛化能力。

위 내용은 학습 곡선을 통해 과적합과 과소적합 식별의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 51CTO.COM에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
외삽에 대한 포괄적 인 가이드외삽에 대한 포괄적 인 가이드Apr 15, 2025 am 11:38 AM

소개 매일 몇 주 만에 작물의 진행 상황을 관찰하는 농부가 있다고 가정합니다. 그는 성장률을보고 몇 주 안에 식물이 얼마나 키가 커질 수 있는지에 대해 숙고하기 시작합니다. Th

소프트 AI의 부상과 오늘날 비즈니스의 의미소프트 AI의 부상과 오늘날 비즈니스의 의미Apr 15, 2025 am 11:36 AM

Soft AI-대략적인 추론, 패턴 인식 및 유연한 의사 결정을 사용하여 구체적이고 좁은 작업을 수행하도록 설계된 AI 시스템으로 정의 된 것은 모호성을 수용하여 인간과 같은 사고를 모방하려고합니다. 그러나 이것이 바이러스의 의미는 무엇입니까?

AI 국경을위한 진화 보안 프레임 워크AI 국경을위한 진화 보안 프레임 워크Apr 15, 2025 am 11:34 AM

클라우드 컴퓨팅이 클라우드 네이티브 보안 도구로의 전환이 필요했기 때문에 AI는 AI의 고유 한 요구를 위해 특별히 설계된 새로운 유형의 보안 솔루션을 요구합니다. 클라우드 컴퓨팅 및 보안 수업의 상승이 배웠습니다 th

3 가지 방법 생성 AI 기업가를 증폭시킵니다 : 평균을 조심하십시오!3 가지 방법 생성 AI 기업가를 증폭시킵니다 : 평균을 조심하십시오!Apr 15, 2025 am 11:33 AM

기업가와 AI 및 생성 AI를 사용하여 비즈니스를 개선합니다. 동시에, 모든 기술과 마찬가지로 생성 AI를 기억하는 것이 중요합니다. 앰프는 앰프입니다. 엄격한 2024 연구 o

Andrew Ng의 모델 임베딩에 대한 새로운 단기 과정Andrew Ng의 모델 임베딩에 대한 새로운 단기 과정Apr 15, 2025 am 11:32 AM

임베딩 모델의 힘 잠금 해제 : Andrew Ng의 새로운 코스에 대한 깊은 다이빙 기계가 완벽한 정확도로 질문을 이해하고 응답하는 미래를 상상해보십시오. 이것은 공상 과학이 아닙니다. AI의 발전 덕분에 R이되었습니다

대형 언어 모델 (LLMS)에서 환각이 불가피합니까?대형 언어 모델 (LLMS)에서 환각이 불가피합니까?Apr 15, 2025 am 11:31 AM

대형 언어 모델 (LLM) 및 환각의 피할 수없는 문제 Chatgpt, Claude 및 Gemini와 같은 AI 모델을 사용했을 것입니다. 이들은 대규모 텍스트 데이터 세트에 대해 교육을받은 강력한 AI 시스템의 대형 언어 모델 (LLM)의 예입니다.

60% 문제 - AI 검색이 트래픽을 배출하는 방법60% 문제 - AI 검색이 트래픽을 배출하는 방법Apr 15, 2025 am 11:28 AM

최근의 연구에 따르면 AI 개요는 산업 및 검색 유형에 따라 유기 트래픽이 15-64% 감소 할 수 있습니다. 이러한 급격한 변화로 인해 마케팅 담당자는 디지털 가시성에 관한 전체 전략을 재고하게합니다. 새로운

AI R & D의 중심에 인간 번성을하는 MIT Media LabAI R & D의 중심에 인간 번성을하는 MIT Media LabApr 15, 2025 am 11:26 AM

Elon University의 Digital Future Center를 상상 한 최근 보고서는 거의 300 명의 글로벌 기술 전문가를 조사했습니다. 결과적인 보고서 인‘2035 년에 인간이되는 것’은 대부분 AI 시스템의 심화가 T에 대한 우려가 있다고 결론지었습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음