1. トレーニングセット、検証セット、テストセット#
人工知能と機械学習のプロセスでは、元のデータをトレーニングセット、検証セット、テストセットの 3 つに分割することができます。図 1 を参照してください。それぞれの説明は以下の通りです:
- トレーニングセット(Training set):機械学習モデルの構築に使用されるデータセットです。
- 検証セット(Validation set):検証セットはトレーニングセットに含めることも、独立して分割することもできます。独立して分割する場合は、交差検証後の機械学習モデルの評価やモデルパラメータの選択に使用することができます。
- テストセット(Test set):モデルにとって未知のデータであり、最終的なモデルの評価に使用されます。
図 1 トレーニングセット、検証セット、テストセット
2. 汎化、過学習、適合不足#
もしアルゴリズムが未知のデータに対して正確な予測を行うことができる場合、それはトレーニングセットからテストセットに汎化(generalize)できると言います。一般的に、できるだけ高い汎化精度を持つアルゴリズムを構築したいと考えます。アルゴリズムが新しいデータでどれくらい良いパフォーマンスを示すかを判断する唯一の尺度は、テストセットでの評価です。一般的に、シンプルなモデルほど新しいデータに対する汎化能力が高くなります。既存の情報に過度に複雑なモデルを構築することを過学習(overfitting)と呼びます。この場合、モデルはトレーニングセットで非常に良いパフォーマンスを示しますが、テストセットや新しいデータに対しては汎化できません。逆に、モデルがあまりにも単純な場合、データの全体的な内容や変動を捉えることができず、初期のトレーニングセットでのパフォーマンスが低くなります。これを適合不足(underfitting)と呼びます。
モデルが複雑であるほど、トレーニングセットでの予測結果は良くなりますが、モデルがあまりにも複雑であるため、トレーニングセットの各データポイントに過度に注意を払ってしまい、新しいデータにうまく汎化できなくなります。過学習と適合不足の間には最適な位置があり、図 2 の中間位置に最適な汎化モデルが得られます。これがモデル探索の最終目標です。
図 2 モデルの複雑さと予測誤差の関係
(出典:CNBLOG[2])
3. 交差検証#
交差検証(Cross-validation)は、一度のトレーニングセットとテストセットの分割よりも安定して総合的な汎化性能を評価する統計的手法です。交差検証では、データを複数回トレーニングセットとテストセットに分割するか、テストセットを固定してトレーニングセットを複数回トレーニングセットと検証セットに分割します。
一般的な交差検証方法は、K 分割交差検証(k-fold cross-validation)です。ここで、K はユーザーが指定する数字です。K 分割交差検証では、まずトレーニングセットをおおよそ同じ大きさの K 部分に分割し、それぞれをフォールド(fold)と呼びます。次に、一連のモデルをトレーニングします。K 番目のフォールドを検証セットとして使用し、他のフォールド(1〜K-1)をトレーニングセットとして使用して最初のモデルをトレーニングします。K-1、K-2、.....2、1 のフォールドを順番に検証セットとして使用し、他のフォールドをトレーニングセットとして使用して異なるモデルをトレーニングし、各回で精度を計算し、最終的に K 個の精度値を得ます。K = 10 の場合、10 分割交差検証は図 3 を参照してください。
図 3 10 分割交差検証の例
(出典:CSDN[3])
交差検証の利点は、各サンプルがテストセットにちょうど 1 回出現することです。各サンプルは 1 つのフォールドにあり、各フォールドはテストセットに 1 回出現します。したがって、モデルはデータセットのすべてのサンプルの汎化能力が良い必要があり、すべての交差検証スコア(通常は平均値)が高くなるようにする必要があります。データの単一の分割と比較して、交差検証のもう一つの利点はデータの効率的な使用です。10 分割交差検証の場合、90%のデータをモデルに適合させることができます。ただし、交差検証の欠点は計算コストの増加です。1 つのモデルではなく K 個のモデルをトレーニングするため、交差検証は通常、データの単一の分割よりも約 K 倍遅くなります。また、注意すべき点として、交差検証はモデルの構築方法ではありません。交差検証の目的は、特定のデータセットでトレーニングされたアルゴリズムの汎化性能を評価することであり、モデルを返すものではありません。
4. グリッドサーチ#
モデルの汎化能力は、パラメータの調整によって向上させることができます。ただし、モデルの重要なパラメータ(最適な汎化性能を提供するパラメータ)の値を見つけることは困難な作業ですが、ほとんどのモデルとデータセットにとって必要な作業です。パラメータチューニングに関する研究は多くありますが、非パラメトリックノイズ法推定、遺伝アルゴリズムパラメータ最適化などがあります。最も一般的な方法はグリッドサーチ(grid search)であり、興味のあるパラメータのすべての可能な組み合わせを試すことを意味します。SVR を例に取ると、重要なパラメータはカーネル幅の gamma と正則化パラメータの C です。C の値を 0.001、0.01、0.1、1、10、100 とし、gamma の値を 0.001、0.01、0.1、1、10 とする場合、合計 30 のパラメータの組み合わせがあります。図 4 を参照してください。すべての可能な組み合わせが SVR のパラメータグリッドを構成します。
図 4 SVR のパラメータグリッド
より良い汎化性能の推定を得るために、グリッドサーチは通常交差検証と組み合わせて使用されます。交差検証付きのグリッドサーチの最大の欠点は、モデルのトレーニングにかかる時間が非常に長くなることです。図 4 のグリッドを使用して C と gamma の特定の値に対する SVR の精度を 5 分割交差検証で評価する場合、120 のモデルをトレーニングする必要があります。
5. ローリング予測#
ローリング予測手法は、大量のサンプルデータから連続的に選択する手法です。その本質は、時間ウィンドウを後方に移動させながら、市場の最新データをモデリングに組み込み、モデルを常に更新することです。このアルゴリズムの使用前提条件は、モデリングプロセスで新しいデータの重要性が古いデータよりも大きいことです。新しいデータの意義は、市場の変化に適したものであるということです。
このようなアルゴリズムには、主に 2 つの研究方向があります。第一の方法は、時間ウィンドウを固定することです。これにより、時間ウィンドウのサイズは新しいデータと新しいサンプルの追加によって変化せず、古いデータと古いサンプルは常に削除され、新しいデータの追加に十分なスペースが提供されます。したがって、ウィンドウのサイズはこのアルゴリズムにとって非常に重要であり、最適化が必要です。第二の方法は、時間ウィンドウのサイズが新しいデータと新しいサンプルの追加によって変化することができることです。この場合、新しいデータの追加により、時間ウィンドウは新しいデータと新しいサンプルの特性に応じて適時にサイズを調整する必要があります。このメカニズムの特徴は、古いデータがまだアルゴリズムに残っていることであり、トレーニングは最新のデータをモデルに組み込むだけであり、この方法はモデルが市場の要求にどれだけ適合しているかを総合的に考慮していますが、2 つの主な欠点があります。1 つ目は、古いデータの存在により、モデルに新しいデータを追加するプロセスが進むにつれて、計算量が増加し、トレーニングの効率が低下することです。2 つ目は、一部の古いデータが市場の要求に合わないため、古いデータの妨げによりアルゴリズムの精度に影響を与えることです。したがって、このアルゴリズムの使用中には総合的な考慮が必要です。
過去の多要素モデルの研究成果は、ほとんどのモデルが科学技術と時代の進歩に基づいてアップグレードされていないことを示しています。これらのモデルの構築は、市場の運営原則が変わらないか、または短期間で変化しないことを前提としています。そのため、モデルの構築者はモデルのデータとサンプルを頻繁に更新する必要はありません。このアプローチは有効ですが、一定の合理性があります。しかし、実際の状況に応じて、市場の状況は秒単位で変化しています。以前に採用された市場のルールは、次の開発段階では適用されない可能性があります。したがって、このようなモデルは市場の発展に完全に追いつくことができず、構築者はモデルのデータとサンプルを適時に調整する必要があります。したがって、このような問題が発生しないように、ローリング時間ウィンドウメカニズムを使用することをお勧めします。
参考文献:
[1] https://blog.csdn.net/lhx878619717/article/details/49079785
[2] https://www.cnblogs.com/sthinker/p/6837597.html
[3] https://blog.csdn.net/lhx878619717/article/details/49079785