ホームページ >バックエンド開発 >Python チュートリアル >特徴量エンジニアリング: データの力を解き放ち、優れた機械学習モデルを実現

特徴量エンジニアリング: データの力を解き放ち、優れた機械学習モデルを実現

WBOY
WBOYオリジナル
2024-08-21 22:24:43506ブラウズ

Feature Engineering: Unlocking the Power of Data for Superior Machine Learning Models

特徴エンジニアリングは、生データを選択、操作し、機械学習 (主に教師あり学習) で使用できる特徴に変換するプロセスです。これは、特徴作成、変換、特徴抽出、探索的データ分析、ベンチマークの 5 つのプロセスで構成されます。 この文脈では、「特徴」とは、予測モデルで使用できる測定可能な入力のことです。それは動物の鳴き声、色、誰かの声かもしれません。

この手法により、データ サイエンティストはデータから最も価値のある洞察を抽出でき、より正確な予測と実用的な洞察が保証されます。

機能の種類

上で述べたように、特徴とは、予測モデルで使用できる任意の測定可能な点です。機械学習の特徴量エンジニアリングの種類を見てみましょう -

  • 数値特徴: これらの特徴は、スケールで測定できる連続変数です。例: 年齢、体重、身長、収入。これらの機能は機械学習で直接使用できます。

  • カテゴリ特徴: これらは、カテゴリにグループ化できる離散値です。これらには、性別、郵便番号、肌の色が含まれます。機械学習のカテゴリ特徴は、通常、機械学習アルゴリズムで使用する前に数値特徴に変換する必要があります。これは、ワンホット、ラベル、序数エンコーディングを使用して簡単に行うことができます。

  • 時系列特徴: これらの特徴は、時間の経過とともに取得される測定値です。時系列機能には、株価、気象データ、センサーの測定値が含まれます。これらの機能を使用すると、将来の値を予測したり、データ内のパターンを識別したりできる機械学習モデルをトレーニングできます。

  • テキスト機能: これらは、単語、語句、または文を表すテキスト文字列です。テキスト機能の例には、製品レビュー、ソーシャル メディアの投稿、医療記録などがあります。テキスト機能を使用して、テキストの意味を理解したり、テキストをさまざまなカテゴリに分類したりできる機械学習モデルをトレーニングできます。

  • 機械学習パイプラインで最も重要なプロセスの 1 つは、特徴選択です。これは、モデルのトレーニングを容易にするために、データセット内で最も関連性の高い特徴を選択するプロセスです。これにより、モデルの予測パフォーマンスと堅牢性が強化され、トレーニング データに過剰適合する可能性が低くなります。このプロセスは、過学習の軽減、モデルの解釈可能性の向上、精度の向上、トレーニング時間の短縮に役立つため、非常に重要です。

特徴量エンジニアリングのテクニック

代入

この手法は、欠損値/データの処理を扱います。これは、データのクリーニングや標準化を準備するときに遭遇する問題の 1 つです。これは主に、プライバシー上の懸念、人的ミス、さらにはデータ フローの中断によって引き起こされます。それは 2 つのカテゴリに分類できます:

  • カテゴリ代入: 欠落しているカテゴリ変数は、通常、他のレコード (モード) で最も一般的に発生する値で置き換えられます。数値とカテゴリ値の両方で機能します。ただし、特徴の相関関係は無視されます。この代入メソッドには、Scikit-learn の「SimpleImputer」クラスを使用できます。このクラスは、以下に示すように、平均および中央値のアプローチによる代入にも機能します。
# impute Graduated and Family_Size features with most_frequent values

from sklearn.impute import SimpleImputer
impute_mode = SimpleImputer(strategy = 'most_frequent')
impute_mode.fit(df[['Graduated', 'age']])

df[['Graduated', 'age']] = impute_mode.transform(df[['Graduated', 'age']])
  • 数値補完: 欠落している数値は、通常、他のレコード内の対応する値の平均によって置き換えられます。平均による代入とも呼ばれます。この方法はシンプルかつ高速で、小規模なデータセットに適しています。ただし、この方法にはいくつかの制限があります。たとえば、列内の外れ値により結果の平均が歪められ、ML モデルの精度に影響を与える可能性があります。また、欠損値を代入する際に特徴の相関関係を考慮することもできません。 'fillna' 関数を使用して、列平均の欠損値を代入できます。
# Impute Work_Experience feature by its mean in our dataset

df['Work_Experience'] = df['Work_Experience'].fillna(df['Work_Experience'].mean())

エンコーディング

これは、カテゴリデータを数値(連続)データに変換するプロセスです。以下は、特徴エンコーディングの手法の一部です:

  • ラベル エンコーディング: ラベル エンコーディングは、データセット内の変数または特徴をエンコードする方法です。これには、カテゴリ変数を数値変数に変換することが含まれます。

  • ワンホット エンコーディング: ワンホット エンコーディングは、カテゴリ変数を ML アルゴリズムで使用できる形式に変換するプロセスです。

  • バイナリ エンコード: バイナリ エンコードは、バイナリ コードを使用してデータをエンコードするプロセスです。バイナリ エンコードでは、各文字は 0 と 1 の組み合わせで表されます。

スケーリングと正規化

特徴スケーリングは、データの独立変数または特徴の範囲を正規化するために使用される方法です。データ処理では、これはデータ正規化とも呼ばれ、通常はデータの前処理ステップ中に実行されます。たとえば、年齢、給与、身長などの独立変数が複数ある場合。それぞれの範囲が (18 ~ 100 年)、(25,000 ~ 75,000 ユーロ)、および (1 ~ 2 メートル) であるため、特徴量のスケーリングは、それらすべてを同じ範囲内 (たとえば、0 を中心とするか、または 0 の範囲内) に収めるのに役立ちます。 (0,1) スケーリング手法に応じて異なります。

正規化は、最終的に 0 と 1 の間の範囲になるように値をシフトおよび再スケーリングするスケーリング手法です。Min-Max スケーリングとも呼ばれます。ここで、Xmax と Xmin はそれぞれ特徴量の最大値と最小値です。

ビニング

ビニング (バケット化とも呼ばれる) は、さまざまな数値部分範囲をビンまたはバケットにグループ化する特徴エンジニアリング手法です。多くの場合、ビニングにより数値データがカテゴリ データに変換されます。たとえば、最低値が 15、最高値が 425 である X という名前の特徴について考えてみましょう。ビニングを使用すると、X を次の 5 つのビンで表すことができます。

  • ビン 1: 15 ~ 34
  • ビン 2: 35 ~ 117
  • ビン 3: 118 ~ 279
  • ビン 4: 280 ~ 392
  • ビン 5: 393 ~ 425

ビン 1 は 15 ~ 34 の範囲にわたるため、15 ~ 34 の間の X のすべての値は最終的にビン 1 になります。これらのビンでトレーニングされたモデルは、両方の値がビンにあるため、17 と 29 の X 値に対して同様に反応します。 1.

次元削減

これは、元のデータの意味のあるプロパティを取得しながら、より少ない数の特徴 (つまり、次元) を使用して特定のデータセットを表現する方法です。1 これは、モデルを作成するために、無関係または冗長な特徴、または単純にノイズの多いデータを削除することになります。変数の数が少なくなります。基本的には高次元データを低次元データに変換します。次元削減には主に 2 つのアプローチがあります -

  • 特徴の選択: 特徴の選択には、当面の問題に最も関連する元の特徴のサブセットを選択することが含まれます。目標は、最も重要な特徴を維持しながらデータセットの次元を削減することです。機能の選択には、フィルター メソッド、ラッパー メソッド、埋め込みメソッドなど、いくつかの方法があります。フィルター メソッドはターゲット変数との関連性に基づいて特徴をランク付けし、ラッパー メソッドは特徴を選択する基準としてモデルのパフォーマンスを使用し、埋め込みメソッドは特徴の選択とモデルのトレーニング プロセスを組み合わせます。

  • 特徴抽出: 特徴抽出には、元の特徴を結合または変換して新しい特徴を作​​成することが含まれます。目標は、低次元空間で元のデータの本質を捉える一連の特徴を作成することです。特徴抽出には、主成分分析 (PCA)、線形判別分析 (LDA)、t 分布確率的近傍埋め込み (t-SNE) など、いくつかの方法があります。 PCA は、分散をできるだけ維持しながら、元の特徴を低次元空間に投影する一般的な手法です。

自動化された特徴量エンジニアリング ツール

特徴量エンジニアリングを自動化するために使用されるツールがいくつかあります。その一部を見てみましょう。

FeatureTools - これは、自動特徴量エンジニアリング用の人気のあるオープンソース Python フレームワークです。これは複数の関連テーブルにわたって機能し、特徴生成のためにさまざまな変換を適用します。プロセス全体は、エンティティ セット全体に変換を再帰的に適用して複雑な特徴を生成する「深部特徴合成」(DFS) と呼ばれる手法を使用して実行されます。

Autofeat - これは、自動化された特徴エンジニアリングと特徴選択を、AutoFeatRegressorAutoFeatClassifier などのモデルとともに提供する Python ライブラリです。これらは多くの科学計算に基づいて構築されており、優れた計算能力を必要とします。以下はライブラリの機能の一部です:

  • fit()、 fit_transform()、predict()、score()。
  • ワンホットエンコーディングでカテゴリ特徴量を処理できます。
  • 適切な機能を選択するための機能セレクター クラスが含まれています。
  • 特徴の物理単位を渡すことができ、関連付け可能な特徴は
  • バッキンガム円周率の定理が含まれています – 無次元の計算に使用されます 数量。表形式のデータにのみ使用されます。
  • 表形式のデータにのみ使用されます。

AutoML - 簡単に言えば、自動機械学習は、ML パイプラインの各コンポーネント部分に最適なソリューションを見つけるための特殊な検索アルゴリズムを備えた検索概念として定義できます。これには、自動化された特徴エンジニアリング、自動化されたハイパーパラメータ最適化、ニューラル アーキテクチャ検索(NAS

) が含まれます。

特徴エンジニアリングにおける一般的な問題とベスト プラクティス

一般的な問題

  • 無関係な特徴の無視: 無関係な特徴は出力に寄与せず、データにノイズを追加する可能性があるため、モデルの予測パフォーマンスが低下する可能性があります。この間違いは、さまざまなデータセットとターゲット変数の間の関係の理解と分析が不足していることが原因で発生します。

機械学習を使用して月次売上を予測したいと考えている企業を想像してください。従業員数やオフィスの規模など、売上高とは関係のないデータを入力します。
修正: 徹底的な特徴分析を実施して、どのデータ変数が必要かを理解し、不要なデータ変数を削除することで、これを回避します。

  • 特徴が多すぎることによる過学習: モデルはトレーニング データに対しては完璧なパフォーマンスを発揮しますが (データを効果的に「記憶」しているため)、新しい未確認のデータに対してはパフォーマンスが低下する可能性があります。これは過学習として知られています。この間違いは通常、「多ければ多いほど良い」という誤解が原因です。モデルに追加する機能が多すぎると複雑さが増し、モデルの解釈が難しくなる可能性があります。

100 個の特徴をモデルに入力するが、そのほとんどが重複する情報を共有する、将来のユーザーの増加を予測するアプリについて考えてみましょう。
修正: 次元削減や特徴選択などの戦略を使用して入力数を最小限に抑え、モデルの複雑さを軽減することでこれに対抗します。

  • 特徴を正規化しない: アルゴリズムは、スケールが大きい特徴により多くの重みを与える可能性があり、不正確な予測につながる可能性があります。この間違いは、機械学習アルゴリズムがどのように機能するかを理解していないために発生することがよくあります。ほとんどのアルゴリズムは、すべての特徴が同様のスケールにある場合にパフォーマンスが向上します。

医療提供者が患者の年齢と収入レベルを使用して特定の病気のリスクを予測しますが、尺度が異なるこれらの特徴を正規化していないことを想像してください。
修正: この問題を回避するには、特徴スケーリング手法を適用して、すべての変数を同様のスケールにします。

  • 欠損値の処理を怠っている モデルは欠損値に直面すると予測できない動作をする可能性があり、場合によっては誤った予測につながる可能性があります。この落とし穴は、見落としや、欠損値の存在がモデルに悪影響を及ぼさないという思い込みが原因で発生することがよくあります。

たとえば、顧客離れを予測するオンライン小売業者は購入履歴データを使用しますが、購入データが存在しないインスタンスには対処しません。
修正: 欠損値を統計的推定値に置き換えるデータ補完など、欠損値に対処する戦略を実装します。

ベストプラクティス

  • 入力フィーチャ内の欠損データを必ず処理してください: プロジェクトが住宅価格の予測を目的とする現実のケースでは、すべてのデータ エントリに住宅の築年数に関する情報が含まれているわけではありません。これらのエントリを破棄する代わりに、データセットからの家の築年数の平均値を使用する「平均代入」のような戦略を使用して欠損データを代入することもできます。欠損データを単に破棄するのではなく正しく処理することで、モデルはより多くのデータから学習できるようになり、モデルのパフォーマンスの向上につながる可能性があります。

  • カテゴリ データにワンホット エンコーディングを使用する: たとえば、車に関するデータセットに「色」という特徴があり、「赤」、「青」、「緑」の値が考えられる場合、これを 3 つの個別のバイナリ特徴、「is_red」、「is_blue」、および「is_green」に変換します。この戦略により、モデルはカテゴリデータを正しく解釈できるようになり、モデルの所見と予測の品質が向上します。

  • 特徴量のスケーリングを検討します。実際の例として、病気を予測するためのデータセットには年齢 (1100) と血糖値の測定値 (70180) が含まれる場合があります。スケーリングにより、これら 2 つのフィーチャが同じスケールに配置され、K 最近傍 (KNN) アルゴリズムと同様に、それぞれが距離の計算に均等に寄与できるようになります。特徴スケーリングにより、多くの機械学習アルゴリズムのパフォーマンスが向上し、より効率的にレンダリングされ、計算時間が短縮される可能性があります。

  • 必要に応じてインタラクション機能を作成する: 例には、住宅価格のインタラクションの予測が含まれ、これは有益である可能性があります。バスルームの数と総面積を乗算する新しいフィーチャを作成すると、モデルに貴重な新しい情報が与えられる可能性があります。インタラクション機能を使用すると、線形モデルでは認識できないデータ内のパターンをキャプチャできるため、モデルのパフォーマンスが向上する可能性があります。

  • 無関係な特徴を削除する: スマートフォンの価格を予測する必要がある問題では、スマートフォンの色は予測にほとんど影響を及ぼさない可能性があるため、省略できます。無関係な特徴を削除すると、モデルが簡素化され、より速く、より解釈しやすくなり、過学習のリスクが軽減されます。

特徴量エンジニアリングは、機械学習における単なる前処理ステップではありません。これはモデルの成功を左右する基本的な側面です。適切に設計された機能は、より正確な予測とより適切な一般化につながります。データ表現: 特徴は、機械学習アルゴリズムが動作する基盤として機能します。特徴エンジニアリングにより、データを効果的に表現することで、アルゴリズムが意味のあるパターンを識別できるようになります。したがって、意欲的なデータ サイエンティスト、さらには経験豊富なデータ サイエンティスト、機械学習の愛好家、エンジニアは、データから有意義な洞察を抽出する際に機能エンジニアリングが果たす極めて重要な役割を認識する必要があります。特徴量エンジニアリングの技術を理解し、それをうまく適用することで、機械学習アルゴリズムの真の可能性を解き放ち、さまざまなドメインにわたって影響力のあるソリューションを推進できます。

ご質問がある場合、または記事を改善できる方法がある場合は、コメント欄に残してください。ありがとうございます!

以上が特徴量エンジニアリング: データの力を解き放ち、優れた機械学習モデルを実現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。