ホームページ > 記事 > テクノロジー周辺機器 > 時系列機械学習データセットの型破りな分割手法
未知の環境で機械学習モデルを確実に一般化するための 1 つの試みは、データを分割することです。これは、3 方向 (トレーニング、テスト、評価) 分割から相互検証された K 分割まで、さまざまな方法で実現できます。基本原理は、データのサブセットで機械学習モデルをトレーニングし、未知のデータでそれを評価することにより、トレーニング中にモデルがアンダーフィットしていたかオーバーフィットしていたかをより適切に推論できるということです。
ほとんどのジョブでは、単純な 3-way で十分です。実際の運用では、一般化の問題を確実にするために、分割メソッドにはより複雑なメソッドが必要になることがよくあります。これらの分割は、通常の分割方法の基礎となるデータ構造ではなく、実際のデータから派生するため、より複雑になります。この記事では、機械学習開発におけるデータを分割するいくつかの型破りな方法と、その背後にある理由について説明します。
わかりやすくするために、表形式を使用して単純な多変量時系列データセットを表します。データは、3 つの数値特徴、1 つのカテゴリ特徴、および 1 つのタイムスタンプ特徴で構成されます。これが視覚化です:
# このタイプのデータセットは、機械学習の多くのユースケースや業界で一般的です。具体的な例としては、工場フロアの複数のセンサーから送信されるタイム ストリーム データが挙げられます。カテゴリ変数はマシンの ID、数値特徴はセンサーが記録している情報 (圧力、温度など)、タイムスタンプはデータが転送されてデータベースに記録された時刻になります。
このデータセットをデータ エンジニアリング部門から CSV ファイルとして受け取り、分類モデルまたは回帰モデルを作成する任務を与えられたとします。この場合、ラベルは任意の機能または追加の列にすることができます。最初に行うことは、データを意味のあるサブセットに分割することです。
便宜上、単純にトレーニング セットとテスト セットに分割することができます。問題がすぐに発生すると、ここではデータの単純な分割は機能しません。データは、時間でインデックス付けされた複数のセンサー データ ストリームで構成されます。では、順序が維持され、後続の機械学習モデルが適切に一般化されるようにデータを分割するにはどうすればよいでしょうか?
できること 最も簡単な変換は次のとおりです。各分類クラスのデータを表します (実行中の例では、各マシンのデータを視覚化しています)。これにより、次の結果が生成されます。
水平分割
グループ化すると、分割の問題が少し簡単になりますが、それは主にあなたの仮定次第です。 「あるグループでトレーニングされた機械学習モデルは他のグループにどのように一般化されるのでしょうか。つまり、モデルが class_1、class_2、および class_3 タイム ストリームでトレーニングされた場合、モデルは class_4 および class_5 タイム ストリームではどのように実行されるでしょうか?以下は、この分割を視覚化したものです。
上記の分割方法は、私が水平分割と呼んでいるものです。ほとんどの機械学習ライブラリでは、この分割は、カテゴリ特徴ごとにグループ化し、カテゴリに沿って分割するだけで簡単に実現できます。この分割を使用してトレーニングすることにより、モデルは未知のグループ全体を一般化する情報を収集しました。
分割では、分割自体の基礎として時間を使用しないことに注意してください。ただし、データ内のこの関係を維持するために、各タイム ストリームの時間順序によって分割することも想定されます。これで次の分割に進みます。
しかし、時間自体をスパンしたい場合はどうすればよいでしょうか? ほとんどの時系列モデリングでは、データを分割する一般的な方法は過去と未来です。つまり、トレーニング セットの履歴データと評価セットのデータを比較します。この場合の仮説は次のとおりです: 各グループの履歴データでトレーニングされた機械学習モデルは、各グループの将来のデータにどのように一般化されますか? この質問は、いわゆる垂直分割によって答えることができます:
#この分割のトレーニングが成功すると、モデルがこれまでに見たタイム ストリーム内のパターンを抽出し、将来の動作について正確に予測できることがわかります。ただし、これ自体は、モデルが異なるグループの他の時間ストリームによく一般化していることを示しているわけではありません。もちろん、複数のタイム ストリームを個別に並べ替える必要があるため、グループ化する必要があります。しかし今回は、グループをまたぐのではなく、過去の各グループからサンプルを抽出して train に入れ、それに応じて将来のグループを eval に入れます。この理想的な例では、すべてのタイム ストリームは同じ長さを持ちます。つまり、各タイム ストリームはまったく同じ数のデータ ポイントを持ちます。ただし、現実の世界ではこれは当てはまらない可能性があるため、分割するために各グループにインデックスを付けるシステムが必要です。
疑問に思っているかもしれませんが、水平分割と垂直分割の両方の制約の下で適切に一般化できるモデルを生成できるのでしょうか?この場合の仮説は次のようになります: 過去のデータの一部のグループでトレーニングされた機械学習モデルは、それらのグループの将来のデータと他のグループのすべてのデータにどのように一般化されますか? このハイブリッド分割を視覚化すると次のようになります:
もちろん、モデルのトレーニングが成功すれば、このモデルは現実世界において他のモデルよりも確実に堅牢になります。一部のグループの学習パターンを確認したことを実証できるだけでなく、グループ全体に一般化する情報を取得したことも実証できます。これは、将来的に工場に同様の機械をさらに追加する場合に役立つ可能性があります。
水平分割と垂直分割の概念は、多くの次元に一般化できます。たとえば、データ内のサブグループをさらに分離し、サブグループごとに並べ替えるために、1 つではなく 2 つのカテゴリ特徴に基づいてグループ化することができます。サンプル サイズが小さいグループをフィルタリングするための複雑なロジックや、ドメインに関連するその他のビジネス レベルのロジックが中間に存在する場合もあります。
この仮説的な例は、作成できるさまざまな機械学習の分割の無限の可能性を説明するのに役立ちます。モデルを評価する際に機械学習の公平性を確保することが重要であるのと同様に、データセットの分割と、それが下流モデルにバイアスを与える結果について検討するのに十分な時間を費やすことも同様に重要です。
以上が時系列機械学習データセットの型破りな分割手法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。