paint-brush
機械学習のための特徴エンジニアリングby@sumitmakashir
705
705

機械学習のための特徴エンジニアリング

Sumit Makashir15m2024/05/15
Read on Terminal Reader

機械学習モデルのパフォーマンスを最大化するには、特徴エンジニアリングが不可欠です。意味のある特徴を作成して処理することで、単純なアルゴリズムでも優れた結果を得ることができます。主要な手法には、集計、差異と比率、年齢エンコーディング、インジケーターエンコーディング、ワンホットエンコーディング、ターゲットエンコーディングなどがあります。効果的な特徴処理には、外れ値の処理、欠損値の処理、スケーリング、次元削減、ターゲットの正規分布への変換が含まれます。
featured image - 機械学習のための特徴エンジニアリング
Sumit Makashir HackerNoon profile picture
0-item


「ゴミを入れればゴミが出る」ということわざを聞いたことがあるでしょう。このことわざは、機械学習モデルのトレーニングにまさに当てはまります。関連性のないデータを使用して機械学習モデルをトレーニングすると、最高の機械学習アルゴリズムでもあまり役に立ちません。逆に、よく設計された意味のある特徴を使用すれば、単純な機械学習アルゴリズムでも優れたパフォーマンスを実現できます。では、モデルのパフォーマンスを最大化するこれらの意味のある特徴をどのように作成すればよいのでしょうか。その答えは、特徴エンジニアリングです。特徴エンジニアリングに取り組むことは、回帰、決定木、サポートベクターマシンなど、数値入力を必要とする従来の機械学習アルゴリズムを使用する場合に特に重要です。ただし、これらの数値入力の作成は、データスキルだけの問題ではありません。創造性とドメイン知識が要求され、科学と同じくらい芸術的なプロセスです。

大まかに言えば、特徴エンジニアリングは 2 つの要素に分けられます。1) 新しい特徴を作成すること、2) これらの特徴を処理して、検討中の機械アルゴリズムで最適に機能するようにすることです。この記事では、横断的、構造化された、非 NLP データセットの特徴エンジニアリングのこれら 2 つの要素について説明します。


新機能の作成

生データの収集は大変な作業です。この作業が終わる頃には、追加の機能の作成に時間とエネルギーを費やすのが億劫になってしまうかもしれません。しかし、ここで、すぐにモデルのトレーニングに飛び込みたいという誘惑に抗う必要があります。その価値は十分にあるとお約束します。この段階で、立ち止まって、「自分のドメイン知識に基づいて手動で予測を行うとしたら、どのような機能があればうまくいっただろうか」と自問する必要があります。この質問をすることで、モデルが見逃していたかもしれない新しい意味のある機能を作成する可能性が開けるかもしれません。どのような追加機能が役立つかを検討したら、以下の手法を利用して生データから新しい機能を作成できます。


1. 集約

名前が示すように、この手法は複数のデータ ポイントを組み合わせて、より総合的なビューを作成するのに役立ちます。通常、カウント、合計、平均、最小値、最大値、パーセンタイル、標準偏差、変動係数などの標準関数を使用して、連続した数値データに集計を適用します。各関数はさまざまな情報要素をキャプチャできますが、使用する最適な関数は特定のユース ケースによって異なります。多くの場合、問題のコンテキストで意味のある特定の時間またはイベント ウィンドウに集計を適用できます。

特定のクレジットカード取引が不正かどうかを予測する例を見てみましょう。このユースケースでは、取引固有の機能を使用することは間違いありませんが、それらの機能と並行して、次のような集約された顧客レベルの機能を作成することもメリットになります。

  1. 過去 5 年間に顧客が詐欺被害に遭った回数: 以前に複数回詐欺被害に遭った顧客は、再び詐欺被害に遭う可能性が高くなります。したがって、この集約された顧客レベルのビューを使用すると、適切な予測シグナルを提供できます。

  2. 過去 5 回の取引金額の中央値: クレジットカードが不正使用されると、詐欺師はカードをテストするために複数の低額取引を試みることがよくあります。1 回の低額取引は非常に一般的であり、詐欺の兆候ではない可能性がありますが、短期間に連続して多数のこのような取引が見られる場合、クレジットカードが不正使用されている可能性があります。


上のグラフは個々の取引金額を示しており、低額取引が散発的に発生することは珍しくなく、詐欺を示すものではないことがわかります。ただし、低額取引が連続して複数発生する場合は詐欺の兆候です。下のグラフは、過去 5 件の取引金額のローリング中央値を示しており、低額取引が連続して複数発生するパターンがある場合にのみ低い値が返されます。この場合、下の集計ビューでは、取引金額を特徴として使用して、正当な低額取引と詐欺的な低額取引を区別できます。



2. 差異と比率

多くの種類の問題では、設定されたパターンの変化は予測や異常検出にとって貴重なシグナルとなります。差異と比率は、数値特徴の変化を表す効果的な手法です。集計と同様に、これらの手法を問題のコンテキストで意味のある時間枠に適用することもできます。

例:

  1. 過去 1 時間の新規加盟店取引の割合と過去 30 日間の新規加盟店取引の割合の差: 短期間に連続して発生する新規加盟店取引の割合が高い場合、それ自体が不正リスクを示している可能性がありますが、この行動が顧客の過去の行動と比較して変化していることがわかれば、さらに明らかなシグナルになります。

  2. 現在の取引件数と過去 30 日間の 1 日あたりの平均取引件数の比率: クレジットカードが不正使用されると、短期間に多数の取引が行われる可能性が高く、過去のクレジットカードの使用状況と一致しない場合があります。現在の取引件数と過去 30 日間の 1 日あたりの平均取引件数の比率が著しく高い場合は、不正使用パターンを示している可能性があります。


上記の表から、特定の日に取引件数が多いこと自体は、必ずしも異常な取引行動を示すものではないことがわかります。対照的に、比率ベースの機能を使用すると、顧客の現在の取引行動と過去の取引行動の比較が容易になり、異常をより効果的に捕捉できます。

3. 年齢のエンコーディング

年齢計算技術を使用すると、2 つのタイムスタンプまたは日付の差を計算することで、日付またはタイムスタンプの特徴を数値特徴に変換できます。また、特徴値に関連付けられた保有期間が予測にとって貴重なシグナルとなる場合は、この技術を使用して、特定の非数値特徴を意味のある数値特徴に変換することもできます。

例:

  1. クレジットカードが最後に使用されてからの日数: 長期間使用されていないクレジットカードで突然取引が行われると、不正行為のリスクが高くなります。クレジットカードが最後に使用されてからの日数と現在の取引日の時間差を計算することで、この機能を計算できます。
  2. 顧客のデバイスが最初に使用されてからの日数: 新しいデバイスからのトランザクションが確認された場合、顧客が長期間使用しているデバイスからのトランザクションよりもリスクが高い可能性があります。顧客がこのデバイスを最初に使用してからの日付と現在のトランザクション日付の差としてデバイスの古さを示す機能を作成できます。

上記の表は、年齢エンコーディングの例を示しています。ここでは、顧客のデバイスの最初の使用日と現在の取引日の間の日数の差として、「取引デバイスが最初に使用されてからの日数」という新しい数値機能を作成しました。


4. インジケーターのエンコード

インジケータ機能またはブール機能には、バイナリ値 {1, 0} または {True, False} があります。インジケータ機能は非常に一般的で、さまざまな種類のバイナリ情報を表すために使用されます。場合によっては、このようなバイナリ機能が数値形式ですでに存在することがありますが、他の場合には数値以外の値を持つことがあります。モデルのトレーニングに数値以外のバイナリ機能を使用するには、それらを数値にマッピングするだけです。

インジケーター機能のこれらの一般的な使用法を超えて、インジケーター エンコーディングを、非数値データ ポイント間の比較を表すツールとして活用できます。この属性により、非数値機能の変化を測定する方法が作成されるため、特に強力になります。

例:

  1. 最近のログイン イベントでの検証の失敗: 最近のログイン イベントの失敗は、不正なトランザクションのリスクが高いことと関連している可能性があります。この場合、生データにはこの機能の Yes または No の値がある可能性があります。ここで行う必要があるのは、これらの値を 1 または 0 にマッピングすることだけです。

  2. 最後の取引からの国の場所の変更: 国の場所の変更は、クレジットカードが侵害されたことを示している可能性があります。ここでは、非数値機能「国の場所」の変更を表すインジケーター機能を作成することで、この国の変更情報を取得します。


上記の表は、インジケーターのエンコードの例を示しています。ここでは、顧客の現在の取引国と以前の取引国を比較して、「前回の取引からの国の変更」という新しい数値機能を作成しました。


5. ワンホットエンコーディング

この手法は、特徴データが数値または非数値のカテゴリ形式である場合に適用できます。数値カテゴリ形式とは、地理的地域コード、店舗 ID、その他の同様のタイプのデータなど、非連続または非測定データを含む数値データを指します。1 つのホット エンコーディング手法により、このような特徴を、機械学習モデルのトレーニングで使用できるインジケーター特徴のセットに変換できます。カテゴリ特徴に 1 つのホット エンコーディングを適用すると、そのカテゴリ変数のすべてのカテゴリに対して 1 つの新しいバイナリ特徴が作成されます。カテゴリの数が増えると新しい特徴の数も増えるため、この手法はカテゴリの数が少ない特徴、特にデータセットが小さい場合に適しています。標準的な経験則の 1 つは、カテゴリごとに少なくとも 10 件のレコードがある場合にこの手法を適用することを推奨しています。

例:

  1. 取引購入カテゴリ: 特定の種類の購入カテゴリは、詐欺のリスクが高い場合があります。購入カテゴリ名はテキスト データであるため、ワンホット エンコーディング手法を適用して、この機能を数値インジケーター機能のセットに変換できます。10 種類の異なる購入カテゴリ名がある場合、ワンホット エンコーディングにより、購入カテゴリ名ごとに 1 つずつ、合計 10 個の新しいインジケーター機能が作成されます。
  2. デバイスの種類: オンライン取引は、iPhone、Android フォン、Windows PC、Mac など、さまざまな種類のデバイスを介して行われる可能性があります。これらのデバイスの中には、マルウェアの影響を受けやすいものや詐欺師が簡単にアクセスできるものがあり、詐欺のリスクが高い可能性があります。デバイスの種類情報を数値形式で含めるには、デバイスの種類にワンホット エンコーディングを適用します。これにより、デバイスの種類ごとに新しいインジケーター機能が作成されます。

上記の表は、ワンホット エンコーディングの例を示しています。ここでは、非数値カテゴリ機能「デバイス タイプ」にワンホット エンコーディング手法を適用して、一連の新しい数値インジケーター機能を作成しました。


6. ターゲットエンコーディング

この手法は、ワンホット エンコーディングを適用するのと同じタイプの特徴に適用されますが、ワンホット エンコーディングに比べていくつかの利点と欠点があります。カテゴリの数が多い (カーディナリティが高い) 場合、ワンホット エンコーディングを使用すると、望ましくない特徴の数が増え、モデルの過剰適合につながる可能性があります。ターゲット エンコーディングは、教師あり学習の問題に取り組んでいる場合に効果的な手法です。これは、各カテゴリ値をそのカテゴリのターゲットの期待値にマッピングする手法です。連続ターゲットを持つ回帰問題に取り組んでいる場合、この計算により、カテゴリがそのカテゴリの平均ターゲット値にマッピングされます。バイナリ ターゲットを持つ分類問題の場合、ターゲット エンコーディングにより、カテゴリがそのカテゴリの正のイベント確率にマッピングされます。ワンホット エンコーディングとは異なり、この手法には特徴の数が増えないという利点があります。この手法の欠点は、教師あり学習の問題にしか適用できないことです。この手法を適用すると、特に一部のカテゴリの観測数が少ない場合に、モデルが過剰適合しやすくなる可能性もあります。

例:

  1. 販売業者名: 特定の販売業者に対して行われた取引は、不正行為を示している可能性があります。このような販売業者は数千社ある可能性があり、それぞれに不正取引のリスクが異なります。販売業者名を含む特徴にワンホット エンコーディングを適用すると、何千もの新しい特徴が導入される可能性があり、これは望ましくありません。このような場合、ターゲット エンコーディングを使用すると、特徴の数を増やすことなく、販売業者の不正リスク情報を取得できます。
  2. 取引の郵便番号: 商店と同様に、異なる郵便番号で行われた取引は、異なる詐欺リスク レベルを表す可能性があります。郵便番号には数値がありますが、連続測定変数ではないため、そのままモデルで使用することはできません。代わりに、ターゲット エンコーディングなどの手法を適用して、各郵便番号に関連付けられた詐欺リスク情報を組み込むことができます。

上記の表は、ターゲット エンコーディングの例を示しています。ここでは、ターゲット エンコーディング手法を非数値カテゴリ特徴「Merchant Name」に適用して、1 つの新しい数値特徴「Merchant Name ターゲット エンコーディング」を作成しました。名前が示すように、この手法はターゲット値に依存して新しい特徴値を計算します。



生データから新しい特徴を作成したら、次のステップは、最適なモデル パフォーマンスを得るためにそれらを処理することです。これは、次のセクションで説明する特徴処理によって実現します。

機能処理

特徴処理とは、機械学習モデルが意図したとおりにデータに適合することを保証する一連のデータ処理手順を指します。これらの処理手順の一部は、特定の機械学習アルゴリズムを使用するときに必要ですが、その他の処理手順は、検討中の特徴と機械学習アルゴリズムの間で良好な相性を実現できるようにします。このセクションでは、一般的な特徴処理手順と、それが必要な理由について説明します。

1. 外れ値の処理

いくつかの機械学習アルゴリズム、特に回帰モデルなどのパラメトリック アルゴリズムは、外れ値によって深刻な影響を受けます。これらの機械学習アルゴリズムは外れ値に対応しようとしますが、モデル パラメータに深刻な影響を与え、全体的なパフォーマンスが低下します。外れ値を処理するには、まず外れ値を特定する必要があります。特定の機能の外れ値を検出するには、絶対値が平均値プラス 3 標準偏差より大きいか、最も近いウィスカー値 (最も近い四分位値プラス四分位範囲値の 1.5 倍) の外にあるなどの一定の経験則を適用します。特定の機能の外れ値を特定したら、以下の手法を使用して外れ値を処理できます。

  1. 削除: 少なくとも 1 つの外れ値を持つ観測値を削除できます。ただし、データにさまざまな機能にわたって外れ値が多すぎる場合は、多くの観測値が失われる可能性があります。
  2. 置換: 外れ値の値を、特定の特徴の平均値、中央値、最頻値などの平均値に置き換えることができます。
  3. 特徴変換または標準化: 対数変換または特徴標準化 (スケーリングで説明) を使用して、外れ値の大きさを減らすことができます。
  4. キャッピングとフロアリング: 特定の値を超える外れ値をその値に置き換えることができます。たとえば、99 パーセンタイルを超えるすべての値を 99 パーセンタイル値に置き換え、1 パーセンタイル未満のすべての値を 1 パーセンタイル値に置き換えます。


上の画像は、単変量外れ値を検出するために一般的に使用される 2 つの手法を示しています。2 つの手法では、異なる外れ値のセットが生成されることがわかります。データが正規分布に従う場合は、平均 + 3 SD 手法を使用する必要があります。ボックスプロット ウィスカー ベースの手法はより汎用的で、任意の分布のデータに適用できます。


上記の表は、外れ値処理に一般的に使用される手法の適用を示しています。


多変量外れ値 (複数の特徴に関する外れ値) である観測値を検出する手法はありますが、それらはより複雑であり、一般的に機械学習モデルのトレーニングという点ではそれほど価値を追加しません。また、サポート ベクター マシンなどのほとんどの非パラメトリック機械学習モデルや、決定木、ランダム フォレスト、XGBoost などのツリーベースのアルゴリズムを使用する場合、外れ値は問題にならないことにも注意してください。


2. 欠損値の処理

実世界のデータセットでは、欠損データは非常に一般的です。XGBoost などの一部のアルゴリズムを除き、従来の機械学習アルゴリズムのほとんどは、トレーニング データセットで欠損値を許可しません。したがって、欠損値の修正は、機械学習モデリングにおける日常的なタスクの 1 つです。欠損値を処理する手法はいくつかありますが、どの手法を実装する前にも、欠損データの原因を理解すること、または少なくともデータがランダムに欠損しているかどうかを知ることが重要です。データがランダムに欠損していない場合、つまり特定のサブグループに欠損データがある可能性が高い場合、特に利用可能なデータがほとんどまたはまったくない場合は、それらの値を補完することが困難になる可能性があります。データがランダムに欠損している場合は、以下で説明する一般的な処理手法のいくつかを使用できます。これらにはすべて長所と短所があり、どの方法がユースケースに最適であるかを決定するのは私たち次第です。

  1. 削除: 少なくとも 1 つの欠損値を持つ観測値を削除できます。ただし、データにさまざまな機能にわたって欠損値が多すぎると、多くの観測値が失われる可能性があります。
  2. ドロップ: 特徴に多数の欠損値がある場合は、それをドロップすることを選択できます。
  3. 平均値による代用: 欠損値の代わりに、特定の特徴の平均値、中央値、最頻値などの平均値を使用できます。この方法は実装が簡単ですが、すべての種類の観測値に対して適切な推定値が得られない場合があります。たとえば、不正リスクの高い取引の平均取引額は不正リスクの低い取引額と異なる場合があり、欠損している不正リスクの高い取引額に全体の平均を使用することは適切な代用ではない可能性があります。
  4. 最尤法、多重代入法、K 近傍法: これらは、データセット内の他の機能との関係を考慮したより複雑な方法であり、全体の平均よりも正確な推定値を提供できます。ただし、これらの方法を実装するには、追加のモデリングまたはアルゴリズムの実装が必要になります。

上記の表は、欠損値の処理に一般的に使用される手法の適用を示しています。

3. スケーリング

多くの場合、機械学習モデルで使用する特徴にはさまざまな範囲があります。スケーリングせずにそれらを使用すると、絶対値の大きい特徴が予測結果を支配します。代わりに、各特徴が予測結果に貢献する公平な機会を与えるには、すべての特徴を同じスケールにする必要があります。最も一般的な 2 つのスケーリング手法は次のとおりです。

  1. 正規化: このスケーリング手法は、特徴値を 0 から 1 の間に制限します。正規化を適用するには、最小の特徴値を減算し、その特徴の範囲 (最小値と最大値の差) で割ります。一部の特徴に急激な偏りがあったり、極端な外れ値がいくつかあったりする場合は、正規化は適切な手法ではない可能性があります。
  2. 標準化: この手法は、特徴データの分布を標準正規分布に変換します。平均を減算し、それを標準偏差で割ることで、この手法を実装できます。この手法は、特徴に急激な偏りがある場合や、極端な外れ値がいくつかある場合に一般的に好まれます。

決定木、ランダム フォレスト、XGBoost などのツリーベースのアルゴリズムは、スケーリングされていないデータで動作し、これらのアルゴリズムを使用するときにスケーリングする必要がないことに注意してください。

上の表は、一般的に使用される 2 つの機能スケーリング手法の適用を示しています。


上の画像は、元の、正規化された、標準化された特徴値間のスケールの違いを示しています。ご覧のとおり、スケーリングはデータ分布の形状に影響を与えません。

4. 次元削減

現在、膨大なデータがあり、モデルをトレーニングするための膨大な機能のコレクションを構築できます。ほとんどのアルゴリズムでは、機能が多いほどモデルのパフォーマンスを向上させるオプションが増えるため、良いことです。ただし、これはすべてのアルゴリズムに当てはまるわけではありません。距離メトリックに基づくアルゴリズムは次元の呪いに悩まされています。つまり、機能の数が大幅に増加すると、2 つの観測値間の距離値が無意味になります。したがって、距離メトリックに依存するアルゴリズムを使用するには、多数の機能を使用していないことを確認する必要があります。データセットに多数の機能があり、どの機能を保持してどの機能を破棄するかわからない場合は、主成分分析 (PCA) などの手法を使用できます。PCA は、古い機能のセットを新しい機能のセットに変換します。最も高い固有値を持つ機能が古い機能からほとんどの情報を取得するように、新しい機能を作成します。次に、上位の数個の新しい機能のみを保持し、残りを破棄できます。

相関分析や特徴選択アルゴリズムなどの他の統計手法は、教師あり学習の問題で特徴の数を減らすために使用できます。ただし、通常、同じ数の特徴で PCA が取得するのと同じレベルの情報は取得できません。

上の表は、特徴削減のための PCA の適用を示しています。最初の 3 つの特徴は、元のデータセットに含まれる情報の 87% 以上をキャプチャしていることがわかります。この場合、2 つの特徴 (f4 と f5) を除外して、情報の損失を 13% 未満に抑えることができます。保持する特徴の数と削除する特徴の数は、さまざまな要因に応じて問題ごとに異なります。


5. 正規分布への変換

このステップは例外です。ターゲットにのみ適用され、特徴には適用されないためです。また、ほとんどの機械学習アルゴリズムでは、ターゲットの分布に制限はありませんが、線形回帰などの特定のアルゴリズムでは、ターゲットが正規分布している必要があります。線形回帰では、エラー値が対称で、すべてのデータ ポイントでゼロの周囲に集中していると想定されます (正規分布の形状と同様)。また、ターゲット変数が正規分布している場合は、この想定が満たされます。ヒストグラムをプロットすることで、ターゲットの分布を把握できます。シャピロ ウィルク テストなどの統計テストでは、この仮説をテストすることで正規性について知ることができます。ターゲットが正規分布していない場合は、対数変換、平方変換、平方根変換などのさまざまな変換を試して、どの変換でターゲット分布が正規になるかを確認できます。複数のパラメーター値を試す Box-Cox 変換もあり、ターゲットの分布を正規分布に最もよく変換するものを選択できます。

上の画像は、元のターゲット データの 3 つの変換を示しています。この特定のケースでは、対数変換が元のデータ分布を正規分布に変換するのに最適であることがわかります。


注: 特徴処理手順は任意の順序で実装できますが、適用順序を十分に考慮する必要があります。たとえば、値平均置換を使用した欠損値処理は、外れ値検出の前または後に実装できます。ただし、欠損値を外れ値処理の前または後のどちらで処理するかによって、置換に使用される平均値が異なる場合があります。この記事で概説した特徴処理の順序では、後続の処理手順に影響を及ぼす可能性のある順序で問題を処理します。したがって、この順序に従うと、ほとんどの問題に対処するのに一般的に効果的です。


結論

はじめに述べたように、特徴エンジニアリングは機械学習の一側面であり、モデルのパフォーマンスを非常に高いレベルで制御できます。特徴エンジニアリングの可能性を最大限に引き出すために、この記事では、新しい特徴を作成し、それを機械学習モデルで最適に機能するように処理するさまざまな手法を学びました。この記事のどの特徴エンジニアリングの原則と手法を使用するかに関係なく、ここで重要なメッセージは、機械学習とはアルゴリズムにパターンを見つけ出すように求めることだけではないことを理解することです。必要な種類のデータを提供することで、アルゴリズムが効果的に仕事を行えるようにすることが機械学習です。