検索
ホームページテクノロジー周辺機器AI学習曲線を通じて過学習と過小学習を特定する

学習曲線を通じて過学習と過小学習を特定する

Apr 29, 2024 pm 06:50 PM
AI機械学習過学習モデル

この記事では、学習曲線を通じて機械学習モデルの過学習と過小学習を効果的に特定する方法を紹介します。

学習曲線を通じて過学習と過小学習を特定する

過適合と過適合

1. 過適合

モデルがデータからノイズを学習するまでデータ上で過剰トレーニングされた場合、モデルは過剰適合していると言われます。過学習モデルはすべての例を完璧に学習するため、見たことのない新しい例を誤って分類してしまいます。過適合モデルの場合、完璧/ほぼ完璧なトレーニング セット スコアとひどい検証セット/テスト スコアが得られます。

少し修正: 「過学習の理由: 複雑なモデルを使用して単純な問題を解決し、データからノイズを抽出します。小さなデータ セットはトレーニング セットとして使用できない可能性があるためです。」すべてのデータの正しい表現を表します。「

2. 過小適合

モデルがデータ内のパターンを正しく学習できない場合は、フィッティングが不十分だと言うだけです。アンダーフィッティングのモデルは、データセット内のすべての例を完全には学習しません。この場合、トレーニング セットと検証セットの両方でエラーが低いことがわかります。これは、モデルが単純すぎて、データに適合させるのに十分なパラメーターがないことが原因である可能性があります。アンダーフィッティングの問題を解決するには、モデルの複雑さを増し、層またはニューロンの数を増やすことを試みることができます。ただし、モデルの複雑さが増すと、過学習のリスクも高まることに注意してください。

不適切な理由: 単純なモデルを使用して複雑な問題を解決する場合、モデルはデータ内のすべてのパターンを学習できないか、モデルが基礎となるパターンを誤って学習します。データ。 データ分析と機械学習では、モデルの選択が非常に重要です。問題に対して適切なモデルを選択すると、予測の精度と信頼性が向上します。複雑な問題の場合は、データ内のすべてのパターンを捕捉するために、より複雑なモデルが必要になる場合があります。さらに、

学習曲線

学習曲線は、トレーニング サンプル自体のトレーニング合計を、段階的に追加することによって描画します。新しいトレーニング サンプルの損失。検証スコア (未確認データのスコア) を向上させるためにトレーニング サンプルを追加する必要があるかどうかを判断するのに役立ちます。モデルが過剰適合している場合、トレーニング例を追加すると、目に見えないデータに対するモデルのパフォーマンスが向上する可能性があります。同様に、モデルがアンダーフィットしている場合、トレーニング サンプルを追加しても役に立たない可能性があります。 「learning_curve」メソッドは、Scikit-Learn の「model_selection」モジュールからインポートできます。

from sklearn.model_selection import learning_curve

ロジスティック回帰とアイリス データを使用してデモンストレーションします。ロジスティック回帰モデルに適合し、相互検証スコア、トレーニング スコア、および学習曲線データを返す「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. 過学習モデルの学習曲線

変数/パラメーター 'c' を非正則化して 'learn_curve' 関数を使用します。過適合モデルを取得するには 10000 (「c」の値が大きいと過適合が発生します)。

うわー

学習曲線を通じて過学習と過小学習を特定する

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

学習曲線を通じて過学習と過小学習を特定する

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

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 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は51CTO.COMで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Microsoft Work Trend Index 2025は、職場の容量の緊張を示していますMicrosoft Work Trend Index 2025は、職場の容量の緊張を示していますApr 24, 2025 am 11:19 AM

AIの急速な統合により悪化した職場での急成長能力の危機は、増分調整を超えて戦略的な変化を要求します。 これは、WTIの調査結果によって強調されています。従業員の68%がワークロードに苦労しており、BURにつながります

AIは理解できますか?中国の部屋の議論はノーと言っていますが、それは正しいですか?AIは理解できますか?中国の部屋の議論はノーと言っていますが、それは正しいですか?Apr 24, 2025 am 11:18 AM

ジョン・サールの中国の部屋の議論:AIの理解への挑戦 Searleの思考実験は、人工知能が真に言語を理解できるのか、それとも真の意識を持っているのかを直接疑問に思っています。 チャインを無知な人を想像してください

中国の「スマート」AIアシスタントは、マイクロソフトのリコールのプライバシーの欠陥をエコーし​​ます中国の「スマート」AIアシスタントは、マイクロソフトのリコールのプライバシーの欠陥をエコーし​​ますApr 24, 2025 am 11:17 AM

中国のハイテク大手は、西部のカウンターパートと比較して、AI開発の別のコースを図っています。 技術的なベンチマークとAPI統合のみに焦点を当てるのではなく、「スクリーン認識」AIアシスタントを優先しています。

Dockerは、おなじみのコンテナワークフローをAIモデルとMCPツールにもたらしますDockerは、おなじみのコンテナワークフローをAIモデルとMCPツールにもたらしますApr 24, 2025 am 11:16 AM

MCP:AIシステムに外部ツールにアクセスできるようになります モデルコンテキストプロトコル(MCP)により、AIアプリケーションは標準化されたインターフェイスを介して外部ツールとデータソースと対話できます。人類によって開発され、主要なAIプロバイダーによってサポートされているMCPは、言語モデルとエージェントが利用可能なツールを発見し、適切なパラメーターでそれらを呼び出すことができます。ただし、環境紛争、セキュリティの脆弱性、一貫性のないクロスプラットフォーム動作など、MCPサーバーの実装にはいくつかの課題があります。 Forbesの記事「人類のモデルコンテキストプロトコルは、AIエージェントの開発における大きなステップです」著者:Janakiram MSVDockerは、コンテナ化を通じてこれらの問題を解決します。 Docker Hubインフラストラクチャに基づいて構築されたドキュメント

6億ドルのスタートアップを構築するために6つのAIストリートスマート戦略を使用する6億ドルのスタートアップを構築するために6つのAIストリートスマート戦略を使用するApr 24, 2025 am 11:15 AM

最先端のテクノロジーと巧妙なビジネスの洞察力を活用して、コントロールを維持しながら非常に収益性の高いスケーラブルな企業を作成する先見の明のある起業家によって採用された6つの戦略。このガイドは、建設を目指している起業家向けのためのものです

Googleフォトの更新は、すべての写真の見事なウルトラHDRのロックを解除しますGoogleフォトの更新は、すべての写真の見事なウルトラHDRのロックを解除しますApr 24, 2025 am 11:14 AM

Google Photosの新しいウルトラHDRツール:画像強化のゲームチェンジャー Google Photosは、強力なウルトラHDR変換ツールを導入し、標準的な写真を活気のある高ダイナミックレンジ画像に変換しました。この強化は写真家に利益をもたらします

Descopeは、AIエージェント統合の認証フレームワークを構築しますDescopeは、AIエージェント統合の認証フレームワークを構築しますApr 24, 2025 am 11:13 AM

技術アーキテクチャは、新たな認証の課題を解決します エージェントアイデンティティハブは、AIエージェントの実装を開始した後にのみ多くの組織が発見した問題に取り組んでいます。

Google Cloud Next2025と現代の仕事の接続された未来Google Cloud Next2025と現代の仕事の接続された未来Apr 24, 2025 am 11:12 AM

(注:Googleは私の会社であるMoor Insights&Strategyのアドバイザリークライアントです。) AI:実験からエンタープライズ財団まで Google Cloud Next 2025は、実験機能からエンタープライズテクノロジーのコアコンポーネント、ストリームへのAIの進化を紹介しました

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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。