1. 序章

データセット内の外れ値の検出と処理は、機械学習の重要な問題です。 教師あり学習アルゴリズムはデータセット内のパターンを学習するため、ノイズの多いデータセットを使用してトレーニングすると、予測力の低いモデルになります。

kNN などの一部のアルゴリズムは、外れ値に対してより敏感です。 一方、ランダムフォレストなどのツリーベースの方法は、外れ値に対してより回復力があります。

この記事では、外れ値とは何かを学びます。 次に、それらを検出する方法について説明します。 最後に、それらの処理方法を検討します。

2. 外れ値

統計では、他のデータセットの外れ値とは大幅に異なるデータポイントを呼び出します。つまり、外れ値には、一貫性のない値、または一般的な動作に準拠していない値が含まれています。

複数の理由により、データセットに外れ値が表示されます。 この意味で、測定誤差または入力誤差は、外れ値の存在につながる可能性があります。

たとえば、年齢機能には正の整数のみが含まれると予想されます。 年齢値が「-1」または「abc」の観測値は存在できません。 したがって、間違いがあると結論付けます。

一方、年齢の値が112の場合、誤った入力である必要はありません。 データムは異常ですが、それでも有効である可能性があります。 その値を削除すると、情報が失われます。

さらに、外れ値は、不均衡なデータセットの分類問題で重要な役割を果たします。 たとえば、不正検出データセットのトランザクションは不均衡です。 さらに、平均から逸脱しているトランザクションは、不正なトランザクションである可能性が高くなります。 したがって、外れ値を削除すると、貴重な情報が失われます。

ただし、逆に、外れ値はデータセットにノイズを導入し、役に立たないことがわかります。 特に観測値の数が多い場合は、データセットの特性に適合しない観測値を削除する必要があります。 全体として、それらを維持すると、モデルのトレーニングが不十分になります。

データセットに線形回帰モデルを当てはめると考えてみましょう。 外れ値を削除する場合と削除しない場合は、最終モデルにかなりの影響を及ぼします。

3. 外れ値の検出

外れ値の検出は簡単な問題ではありません。 データセットの一般的な特性に適合しない観測値を特定しようとしています。

手元のデータセットに応じて、さまざまなアプローチから選択できます。 よく知られている外れ値検出手法のいくつかを調べてみましょう。

3.1. データの視覚化

データの視覚化は、外れ値を検出するためのシンプルで効果的なアプローチです。 特にデータセットが低次元の場合、外れ値を示す散布図を簡単に生成できます。

ただし、データセットの次元が大きくなると、データセットを視覚的に表現することが難しくなります。 したがって、視覚化によって多次元データセットの外れ値を検出することは困難です。 したがって、特に高次元のデータセットについては、他の手法に依存する必要があります。

3.2. 四分位数分析

または、機能の統計的特性に基づいて外れ値の候補を数学的に定義することもできます。 まず、採用するいくつかの用語を定義しましょう。

四分位数は、観測値を4つの部分に分割します。 は最初の四分位数と呼ばれ、データセットの25パーセンタイルを表します。 同様に、は3番目の四分位数を示し、データの75パーセンタイルを示します。

さらに進んで、四分位範囲を次のように定義します。

   

四分位数分析法では、範囲外の値を外れ値と定義します。

箱ひげ図を使用して、分位数分析を視覚化できます。 箱ひげ図の端は四分位数を示します。 さらに、中央値がプロットにマークされています。 ひげはデータ範囲を示します。

乗数に一般的に使用される値は1.5です。 したがって、1.5の範囲外にある値は外れ値です。

   

3.3. Zスコア

Zスコアは、正規分布を想定して、標準偏差の観点から平均からの観測値の分散を測定します。

zスコアを計算するために、データを平均と標準偏差の正規分布のベル曲線に変換します。 次に、観測値のzスコアを計算します。

   

最後に、しきい値範囲を定義し、範囲外の観測値を外れ値としてマークします。

平均の周りの標準偏差の経験則と適用範囲を思い出してみましょう。

  • 68.27%をカバー
  • 95.45%をカバー
  • 99.73%をカバー

通常、番号を丸めて、カバレッジを 68 – 95 –99.7と呼びます。

一般的なzスコアのしきい値には、2.5、3.0、および3.5があります。 選択したしきい値に基づいて、観測値をより大きな絶対zスコアで外れ値としてマークします:

   

3.4. DBSCANクラスタリング

モデルを利用してデータセットをクラスター化できます。 次に、クラスターの中心から離れすぎているポイントは外れ値になります。

DBSCANは、外れ値の検出に広く利用されているクラスタリング手法です。これは非パラメトリックモデルです。 DBSCANは、クラスターが密集していることを前提としています。 したがって、クラスターを検出するために、大規模なデータセット内の局所的に密集した領域を調査します。

データセット内の各ポイントをコア、ボーダー、またはノイズポイントのいずれかに分類します。 その出力により、ノイズとしてマークされた外れ値を簡単に識別できます:

DBSCANなどの距離ベースのアルゴリズムを適用する前に、データセットをスケーリングすることをお勧めします。 さらに、データセットの次元に応じて空間メトリックを選択する必要があります。

3.5. 隔離の森

外れ値を検出する別の方法は、分離フォレストアルゴリズムを使用することです。 このアイデアは、異常検出のために最初に提案されました。

分離フォレストは、機能に基づいてランダムなパーティションを作成します。 ツリー構造は、分割の形成方法を視覚化します。したがって、ルートからサンプルまでのエッジの数は、その特定の観測値を分離するために必要な分割の数を表します。

このようなツリーの平均パス長は、決定関数として機能します。 すべての観測値に異常スコアを割り当てます。 外れ値は、分離が容易なため、パスの長さが短くなります。 逆に、非外れ値は他の外れ値から分離するのが難しく、ルートからのパスが長くなります。

その結果、このようなランダムなツリーのフォレストを形成すると、それらは集合的に特定の観測のパス長を生成します。 集合的に短い平均は外れ値である可能性が高くなります:

4. 外れ値の処理

外れ値の検出と処理は、データサイエンスと機械学習の基本的な問題です。 この問題の解決は、値の欠落の問題と同じように簡単ではありません。

すでに述べたように、外れ値をそのままにしておくと、モデルのパフォーマンスが低下します。 モデルは、データセットパターンと、外れ値からのエラーとノイズを学習します。 したがって、トレーニングフェーズの前にそれらを削除する必要があります。

外れ値を処理する方法はいくつかあります。 原因と密度に応じて、外れ値に対処するための適切な方法を選択できます。 それでも、ほとんどの場合、値を修正することはできません。

観測結果がデータ入力エラーまたは測定エラー(年齢フィールドの「abc」)に起因すると考えます。 次に、それを処理する最良の方法は、データポイントを削除することです。 データが無効で正しくないことがわかっているため、データを修正する方法はありません。

データポイントの置換を置換インピュティングと呼びます。 他の機能に基づいて欠落値を予測するか、値を代入する機能平均に置き換えるのが一般的です。

データセットが十分に大きい場合、極値(年齢フィールドの「114」)が表示される可能性が高くなります。 この場合、外れ値を保持またはトリミングできます。 たとえば、年齢の例では、80より大きいすべての値を80に置き換えることができます。 この方法は、クリッピングまたはウィンザー化とも呼ばれます。

または、統計的でない方法を使用して外れ値を処理することもできます。利害関係者やドメインの専門家に、機能の可能な値について尋ねることができます。 いくつかの観測値が残りのデータセットから逸脱している理由を特定するために、彼らとブレインストーミングを行うことができます。 ドメイン知識で形作られたアイデアは、目前の問題に対するより良い解決策につながります。

5. 結論

このチュートリアルでは、外れ値とそれらが重要である理由について学習しました。 データセットに外れ値が存在するいくつかの考えられる理由について説明しました。

次に、外れ値を検出するために最も広く使用されている方法のいくつかについて学びました。 データの視覚化、四分位数分析、zスコア、DBSCANクラスタリング、および分離フォレストの方法について説明しました。

最後に、外れ値を処理するためのいくつかの方法について説明し、結論を出しました。