struct MLClassifierMetrics (英語)
struct MLRegressorMetrics (英語)
struct MLWordTaggerMetrics (英語)
struct MLRecommenderMetrics (英語)
struct MLObjectDetectorMetrics (英語)
モデルを評価して向上させるには、まず、異なるデータセットでそのパフォーマンスを確認します。各データセットでの測定指標から、モデルの精度に最も影響を及ぼすのはどの変更であるかがわかります。
一つの評価指標で、モデルのパフォーマンスについてすべてがわかることはありません。モデルを向上させるには、トレーニング用、検証用、テスト用のデータセット間で測定指標(モデルのタイプによって、MLClassifier
(英語)またはMLRegressor
(英語))を比較します。たとえば、画像分類モデルの作成のドキュメントで説明した精度は、各データセットのclassification
(英語)測定指標から得られます。
モデルを作成してテスト用データを読み込んだ後、プログラムでこれらの値にアクセスすることもできます。
この場合、いくつかの異なる測定指標の出力(分類器の場合はclassification
(英語)、precision
(英語)、およびconfusion
(英語)、リグレッサーの場合はmaximum
(英語)とroot
(英語)など)を確認します。各データセットから得られたこれらの値を使って、モデルのどの部分を改善する必要があるか判断します。
モデルのトレーニング精度が低い場合は、現在のモデル構成がデータの複雑さを捉えられていないことを示しています。
このような場合、トレーニングパラメータを調整してみましょう。画像データを扱っている場合、MLImage
Playground UIでMax iterations(最大イテレーション数)を2倍にします(デフォルト値は10)。
自然言語データの場合は、別の基本アルゴリズムを試します(MLText
(英語)を参照)。より一般的なタスクでは、MLClassifier
(英語)(サポートしている分類器のタイプ(英語)を参照)またはMLRegressor
(英語)(サポートしているリグレッサーのタイプ(英語)を参照)によって決定されたタイプ以外の基本モデルを使います。
検証セットでモデルの精度が低い場合、またはモデルをトレーニングするたびに精度が上下に変動する場合は、より多くのデータが必要です。すでに収集したサンプルからより多くのデータを生成することができます。この技術はデータの拡張(水増し)と呼ばれます。画像データの場合、トリミング、回転、ぼかし、露出補正などの操作を組み合わせて、一つの画像から複数のサンプルを作成できます。
また、多くのデータがあっても、検証の精度がトレーニングの精度と比較して大幅に低下する場合があります。この場合はモデルが過学習(overfitting)になっています。これは、トレーニングセットについて、ほかのサンプルには一般的に適用できない細部まで学習しすぎてしまう現象です。この場合は、トレーニングイテレーションの数を減らし、モデルがトレーニングデータについて学習しすぎないようにする必要があります。
テストデータでのモデルの精度がトレーニングデータや検証データより低い場合は、通常、モデルのトレーニングに使ったデータの種類と、評価のために提供しているテスト用データとの間に有意な差があることを示します。
たとえば、屋内で撮影した多数の猫の画像を使ってMLImage
(英語)をトレーニングしたけれども、テストでは屋外の猫の画像ばかりだった、という場合です。明るさ、露出、背景が異なるため、テストデータでよい結果は得られないでしょう。人間の目には明らかな画像の違いでも、モデルにとっては、十分なトレーニングデータがないと判断が難しい場合があります。
これを修正するには、トレーニングセットで、より多様なデータを提供します。一般に、サンプルが多いほどパフォーマンスが向上しますが、テストデータと同じくらい多様なサンプルをモデルに見せることも重要です。
struct MLClassifierMetrics (英語)
struct MLRegressorMetrics (英語)
struct MLWordTaggerMetrics (英語)
struct MLRecommenderMetrics (英語)
struct MLObjectDetectorMetrics (英語)