ホームページ  >  記事  >  テクノロジー周辺機器  >  ソフトウェア アーキテクトとしての 15 年の経験の要約: ML の分野で初心者が遭遇する 5 つの落とし穴

ソフトウェア アーキテクトとしての 15 年の経験の要約: ML の分野で初心者が遭遇する 5 つの落とし穴

王林
王林転載
2023-04-11 19:31:251360ブラウズ

データ サイエンスと機械学習の人気はますます高まっており、この分野に携わる人々の数は日々増加しています。これは、最初の機械学習モデルの構築にあまり経験のないデータ サイエンティストがたくさんいることを意味しており、ここで間違いが発生する可能性があります。

最近、ソフトウェア アーキテクト、データ サイエンティスト、そして Kaggle マスターである Agnis Liukis が、機械学習における最も一般的な初心者の間違いを解決する方法について説明した記事を書きました。初心者はそれらを理解して避けてください。

ソフトウェア アーキテクトとしての 15 年の経験の要約: ML の分野で初心者が遭遇する 5 つの落とし穴

Agnis Liukis はソフトウェア アーキテクチャと開発において 15 年以上の経験があり、 Java、JavaScript、Spring Boot、React.JS、Python などの言語に精通しています。また、Liukis はデータサイエンスや機械学習にも興味があり、Kaggle コンペティションに何度も参加して好成績を収め、Kaggle コンペティションのマスターレベルに到達しています。

この記事の内容は次のとおりです:

機械学習の分野で、次の 5 つの落とし穴を踏んだことがありますか?

1. 必要な場合にはデータ正規化は使用されません

データを正規化し、特徴を取得してモデルに入力すると、モデルに予測をさせるのが非常に簡単になります。ただし、場合によっては、この単純なアプローチでは非常に重要な部分が欠けているため、残念な結果になる可能性があります。

線形回帰、従来のニューラル ネットワークなど、一部のタイプのモデルではデータの正規化が必要です。このタイプのモデルは、特徴値を使用してトレーニング値の重みを乗算します。正規化されていない特徴の場合、ある特徴値の可能な範囲は、別の特徴値の可能な範囲と異なる場合があります。

一方の特徴の値が [0, 0.001] の範囲内にあり、もう一方の特徴の値が [100000, 200000] の範囲内にあるとします。 2 つの特徴を同等に重要にするモデルの場合、最初の特徴の重みは 2 番目の特徴の重みの 1 億倍になります。重みが大きいと、外れ値がある場合など、モデルに深刻な問題が発生する可能性があります。さらに、重みが大きいということはその特徴が重要であることを意味する場合もあれば、単にその特徴量が小さいことを意味する場合もあるため、さまざまな特徴の重要度を推定することは困難になります。

正規化後、すべての特徴の値は同じ範囲内 (通常は [0, 1] または [-1, 1]) になります。この場合、重みは同様の範囲内になり、各特徴の実際の重要性に密接に対応します。

全体として、必要に応じてデータ正規化を使用すると、より適切で正確な予測が得られます。

2. 機能は多ければ多いほど良いと考える

一部の人々は、モデルが自動的に選択して使用するものと考え、すべての機能を追加するのが良い考えであると考えるかもしれません。最高の機能。実際、このアイデアを実現するのは困難です。

モデルの特徴が多いほど、過学習のリスクが高くなります。完全にランダムなデータであっても、モデルはいくつかの特徴 (シグナル) を見つけることができますが、それらが弱い場合もあれば強い場合もあります。もちろん、ランダム ノイズには実際の信号は存在しません。ただし、ノイズの多い列が十分にある場合は、モデルが検出された障害信号に基づいてそれらの一部を使用することが可能です。これが発生すると、モデル予測はランダム ノイズに部分的に基づいているため、品質が低下します。

特徴選択の実行に役立つテクニックはたくさんあります。ただし、持っているすべての機能と、その機能がモデルに役立つ理由を説明する必要があることを覚えておく必要があります。

3. 外挿が必要な場合は、ツリーベースのモデルを使用します

ツリーベースのモデルは使いやすく強力であるため、人気があります。ただし、場合によっては、ツリーベースのモデルを使用することが間違っている可能性があります。

ツリーベースのモデルは外挿できません。これらのモデルの予測値がトレーニング データの最大値より大きくなることはなく、トレーニングの出力値がこれより小さくなることはありません。最小値、予測値、

タスクによっては、推定する能力が非常に重要になる場合があります。たとえば、モデルが株価を予測する場合、株価は将来これまでよりも高くなる可能性があります。この場合、ツリーベースのモデルの予測は過去の最高価格をほぼ超えるため、ツリーベースのモデルは直接役に立ちません。

この問題には複数の解決策がありますが、1 つの解決策は、値を直接予測するのではなく、変化や差異を予測することです。別の解決策は、そのようなタスクにさまざまなタイプのモデルを使用することです。線形回帰またはニューラル ネットワークは外挿を実行できます。

4. 必要のない場合はデータ正規化を使用する

前の記事ではデータ正規化の必要性について説明しましたが、常にそうとは限りません。ツリーベースのモデルにはデータは必要ありません。正規化されました。 Keras ライブラリの BatchNormalization 操作など、一部のネットワークにはすでに内部に正規化層が含まれているため、ニューラル ネットワークでは明示的な正規化が必要ない場合もあります。

場合によっては、線形回帰でもデータの正規化が必要ない場合があります。これは、すべての特徴がすでに同様の値の範囲内にあり、同じ意味を持っていることを意味します。たとえば、モデルが時系列データに適用され、すべての特徴が同じパラメーターの履歴値である場合です。

5. トレーニング セットと検証/テスト セット間の情報漏洩

データ漏洩の原因は人々が考えているよりも簡単であるため、次のコード スニペットを考慮してください:

ソフトウェア アーキテクトとしての 15 年の経験の要約: ML の分野で初心者が遭遇する 5 つの落とし穴

データ漏洩の特徴の例

実際の両方の特徴 ( sum_feature と diff_feature) が正しくありません。トレーニング/テスト セットに分割した後、トレーニング データを含む部分にはテストからの情報が含まれるため、情報が漏洩しています。これにより、検証スコアは高くなりますが、実際のデータ モデルに適用するとパフォーマンスが低下します。

正しいアプローチは、最初にトレーニング セット/テスト セットを分離し、その後でのみ特徴生成関数を適用することです。一般に、トレーニング セットとテスト セットを別々に処理するのは、優れた特徴エンジニアリング パターンです。

場合によっては、2 つの間で何らかの情報を渡す必要がある場合があります。たとえば、テスト セットとトレーニング セットで同じ StandardScaler を使用したい場合があります。

全体として、間違いから学ぶのは良いことです。上記の間違いの例が役立つことを願っています。

以上がソフトウェア アーキテクトとしての 15 年の経験の要約: ML の分野で初心者が遭遇する 5 つの落とし穴の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。