ドキュメント

モデルの精度の向上

評価指標(metric)を使って、機械学習モデルのパフォーマンスを調整します。

最新の英語ドキュメント

Improving Your Model’s Accuracy


概要

モデルを評価して向上させるには、まず、異なるデータセットでそのパフォーマンスを確認します。各データセットでの測定指標から、モデルの精度に最も影響を及ぼすのはどの変更であるかがわかります。

一つの評価指標で、モデルのパフォーマンスについてすべてがわかることはありません。モデルを向上させるには、トレーニング用、検証用、テスト用のデータセット間で測定指標(モデルのタイプによって、MLClassifierMetrics(英語)またはMLRegressorMetrics(英語))を比較します。たとえば、画像分類モデルの作成のドキュメントで説明した精度は、各データセットのclassificationError(英語)測定指標から得られます。

モデルを作成してテスト用データを読み込んだ後、プログラムでこれらの値にアクセスすることもできます。

print("Training Metrics\n", model.trainingMetrics)
print("Validation Metrics\n", model.validationMetrics)

let evaluationMetrics = model.evaluation(on: testData)
print("Evaluation Metrics\n", evaluationMetrics)

この場合、いくつかの異なる測定指標の出力(分類器の場合はclassificationError(英語)precisionRecall(英語)、およびconfusion(英語)、リグレッサーの場合はmaximumError(英語)rootMeanSquaredError(英語)など)を確認します。各データセットから得られたこれらの値を使って、モデルのどの部分を改善する必要があるか判断します。

モデルのトレーニング精度の向上

モデルのトレーニング精度が低い場合は、現在のモデル構成がデータの複雑さを捉えられていないことを示しています。

このような場合、トレーニングパラメータを調整してみましょう。画像データを扱っている場合、MLImageClassifierBuilder Playground UIでMax iterations(最大イテレーション数)を2倍にします(デフォルト値は10)。

MLImageClassifierBuilder Playground UIでイテレーションの最大数が20に設定されていることを示すスクリーンショット。

自然言語データの場合は、別の基本アルゴリズムを試します(MLTextClassifier.ModelAlgorithmType(英語)を参照)。より一般的なタスクでは、MLClassifier(英語)サポートしている分類器のタイプ(英語)を参照)またはMLRegressor(英語)サポートしているリグレッサーのタイプ(英語)を参照)によって決定されたタイプ以外の基本モデルを使います。

モデルの検証精度の向上

検証セットでモデルの精度が低い場合、またはモデルをトレーニングするたびに精度が上下に変動する場合は、より多くのデータが必要です。すでに収集したサンプルからより多くのデータを生成することができます。この技術はデータの拡張(水増し)と呼ばれます。画像データの場合、トリミング、回転、ぼかし、露出補正などの操作を組み合わせて、一つの画像から複数のサンプルを作成できます。

1枚のゾウの画像が、トリミング、回転、ぼかし、露出補正などの拡張を適用することによって多くの画像になることを示す図。

また、多くのデータがあっても、検証の精度がトレーニングの精度と比較して大幅に低下する場合があります。この場合はモデルが過学習(overfitting)になっています。これは、トレーニングセットについて、ほかのサンプルには一般的に適用できない細部まで学習しすぎてしまう現象です。この場合は、トレーニングイテレーションの数を減らし、モデルがトレーニングデータについて学習しすぎないようにする必要があります。

モデルの評価精度の向上

テストデータでのモデルの精度がトレーニングデータや検証データより低い場合は、通常、モデルのトレーニングに使ったデータの種類と、評価のために提供しているテスト用データとの間に有意な差があることを示します。

たとえば、屋内で撮影した多数の猫の画像を使ってMLImageClassifier(英語)をトレーニングしたけれども、テストでは屋外の猫の画像ばかりだった、という場合です。明るさ、露出、背景が異なるため、テストデータでよい結果は得られないでしょう。人間の目には明らかな画像の違いでも、モデルにとっては、十分なトレーニングデータがないと判断が難しい場合があります。

これを修正するには、トレーニングセットで、より多様なデータを提供します。一般に、サンプルが多いほどパフォーマンスが向上しますが、テストデータと同じくらい多様なサンプルをモデルに見せることも重要です。

関連項目

モデルの精度