ホームページ >バックエンド開発 >Python チュートリアル >Python データの外れ値の検出と処理 (詳細な例)

Python データの外れ値の検出と処理 (詳細な例)

WBOY
WBOY転載
2022-03-04 17:58:2820634ブラウズ

この記事では、python に関する関連知識を提供します, 主にデータ分析における外れ値に関連する問題を紹介します. 一般に、外れ値の検出方法には、統計的手法とクラスターベースの手法が含まれます。以下に、外れ値の検出に特化した方法をいくつか紹介しますので、皆様の参考になれば幸いです。

Python データの外れ値の検出と処理 (詳細な例)

推奨学習: Python 学習チュートリアル

1 外れ値とは何ですか?

機械学習では、異常の検出と処理は比較的小さな分岐、または機械学習の副産物です。これは、一般的な予測問題では、 モデルは通常、式であるためです。サンプル全体のデータ構造の一般的な特性を表すこの式は通常、サンプル全体の一般的な特性を捉えており、これらの特性に関してサンプル全体と完全に矛盾する点は異常点と呼ばれますが、通常、異常点はそうではありません。予測問題では通常、サンプル全体の特性に焦点が当てられており、異常点の生成メカニズムはサンプル全体と完全に一致していないため、予測問題の開発者によって歓迎されています。アルゴリズムが異常を検出した場合、モデルが点に敏感な場合、生成されたモデルはサンプル全体をうまく表現できないため、予測は不正確になります。 一方、異常な点は、病気の予測などの特定のシナリオでは分析者にとって非常に興味深いものです。通常、健康な人の身体的指標は、ある面では類似しています。身体的指標を分析する場合、彼の身体状態はいくつかの側面で変化したはずです。もちろん、この変化は必ずしも病気によって引き起こされるわけではありません(ノイズポイントと呼ばれることが多い)が、異常の発生と検出は病気の予測となる重要な出発点です。同様のシナリオは、信用詐欺やサイバー攻撃などにも適用できます。

2 外れ値の検出方法

一般に、外れ値の検出方法には統計的手法、クラスタリングベースの手法、および外れ値の検出に特化した手法などがあり、これらについては以下で説明します。それに応じて。

1. 単純な統計

pandas を使用する場合、describe() を直接使用して、データの統計的記述を観察できます (いくつかの統計を大まかに観察します) が、統計データは次のように連続的です:

df.describe()

または、単純に散布図を使用して外れ値の存在を明確に観察します。以下に示すように:

2. 3∂ 原則

この原則には条件があります: データは正規分布に従う必要があります 。 3∂ 原則の下では、外れ値が標準偏差の 3 倍を超える場合、それは外れ値と見なされます。正または負の 3∂ の確率は 99.7% であるため、平均値から 3∂ 以外の値が出現する確率は P(|x-u| > 3∂)

#赤い矢印は外れ値を指します。

3. 箱ひげ図

このメソッドは、箱ひげ図の

四分位範囲 (IQR) を使用して異常値を検出します ( Tukey の検定 とも呼ばれます)。箱ひげ図の定義は次のとおりです。

四分位範囲 (IQR) は、上位四分位と下位四分位の差です。標準として IQR の 1.5 倍を使用し、IQR 距離の

上位四分位の 1.5 倍、または下位四分位の IQR 距離の -1.5 倍 を超えるポイントを外れ値と規定します。以下は、主に numpypercentile メソッドを使用した Python でのコード実装です。

Percentile = np.percentile(df['length'],[0,25,50,75,100])
IQR = Percentile[3] - Percentile[1]
UpLimit = Percentile[3]+ageIQR*1.5
DownLimit = Percentile[1]-ageIQR*1.5

seaborn の視覚化メソッド boxplot を使用して、次のことを実現することもできます。

f,ax=plt.subplots(figsize=(10,8))
sns.boxplot(y='length',data=df,ax=ax)
plt.show()

赤矢印は外れ値です。

上記は、外れ値を決定するために一般的に使用される簡単な方法です。より複雑な外れ値検出アルゴリズムをいくつか紹介します。内容が多いため、核となるアイデアのみを紹介します。興味のある友人は自分で詳しく学習してください。

4. モデル検出に基づく

この方法は通常、

確率分布モデルを構築し、オブジェクトがモデルに適合する確率を計算し、オブジェクトを低い値で扱います。外れ値としての確率。モデルがクラスターの集合である場合、異常はどのクラスターにも大きく属さないオブジェクトであり、モデルが回帰の場合、異常は予測値から比較的離れているオブジェクトです。

外れ値の確率の定義:

外れ値とは、データの確率分布モデルに関して、確率が低いオブジェクトです。この状況の前提条件は、データセットがどのような分布に従っているかを知ることですが、その推定が間違っていると、裾の重い分布が発生します。

たとえば、特徴エンジニアリングの RobustScaler メソッドは、データ特徴値をスケーリングするときに、データ特徴の分位分布を使用してデータを分位に従って複数のセグメントに分割し、中央のセグメントはスケーリングに使用されます。たとえば、25% 分位数から 75% 分位数までのデータのみがスケーリングに使用されます。これにより、異常なデータの影響が軽減されます。

長所と短所: (1) 統計における強固な理論的基礎を備えたこれらのテストは、使用されるテストの種類に関する十分なデータと知識がある場合に非常に効果的です。(2)多変量データの場合、使用できるオプションは少なくなり、高次元データの場合、これらの検出の可能性は低くなります。

5. 近接性に基づく外れ値の検出

統計手法では、データの分布を使用して外れ値を観察します。一部の方法では、いくつかの分布条件も必要ですが、実際にはデータの分布は非常に困難です。いくつかの前提条件を満たすため、使用には特定の制限があります。

データ セットの統計的分布を決定するよりも、データ セットの近さの意味のある尺度を決定する方が簡単です。 オブジェクトの外れ値スコアはその k 最近傍 (KNN) までの距離によって与えられるため、この方法は統計的方法よりも一般的で使いやすいです。

外れ値スコアは k の値に非常に敏感であることに注意してください。 k が小さすぎる場合、近くにある少数の外れ値によって低い外れ値スコアが発生する可能性があり、K が大きすぎる場合、k 点未満のクラスター内のすべてのオブジェクトが外れ値になる可能性があります。このスキームを k の選択に対してより堅牢にするために、k の最近傍の平均距離を使用できます。

長所と短所: (1) シンプル; (2) 短所: 近接ベースの方法は O(m2) 時間を必要とし、大規模なデータセットには適していません。 3) この方法はパラメータの選択にも敏感です; (4) この方法はグローバルしきい値を使用し、そのような密度の変化を考慮できないため、異なる密度の領域を含むデータセットを処理できません。

5. 密度ベースの外れ値の検出

密度ベースの観点から見ると、外れ値は低密度領域にあるオブジェクトです。密度は近接性に関して定義されることが多いため、密度ベースの外れ値検出は近接ベースの外れ値検出と密接に関連しています。 密度を定義する一般的な方法は、k 個の最近傍までの平均距離の逆数として密度を定義することです。この距離が小さければ密度は高く、その逆も同様です。 もう 1 つの密度定義は DBSCAN クラスタリング アルゴリズムで使用される密度定義です。つまり、オブジェクトの周囲の密度は、オブジェクトから指定された距離 d 内にあるオブジェクトの数に等しくなります。

利点と欠点: (1) オブジェクトが外れ値であるという定量的な尺度が得られ、データの領域が異なる場合でも適切に処理できます。(2) ) 距離ベースの方法と同様に、これらの方法の時間計算量は必然的に O(m2) になります。低次元データの場合、特定のデータ構造を使用すると O(mlogm) を達成できます; (3) パラメーターの選択が困難です。 LOF アルゴリズムは、さまざまな k 値を観察し、最大外れ値スコアを取得することでこの問題を処理しますが、これらの値の上限と下限を選択する必要があります。

6. クラスタリングベースの外れ値検出方法

クラスタリングベースの外れ値:オブジェクトはクラスタリングに基づいた外れ値であり、そのオブジェクトがどのクラスタにも強く属していない場合、オブジェクトは外れ値に属します。

初期クラスタリングに対する外れ値の影響: クラスタリングを通じて外れ値が検出された場合、外れ値はクラスタリングに影響を与えるため、構造が有効であるかどうかという疑問が生じます。これは、異常値の影響を受けやすい k-means アルゴリズムの欠点でもあります。この問題に対処するには、オブジェクトをクラスタリングし、外れ値を削除し、オブジェクトを再度クラスタ化するという方法を使用できます (これは最適な結果を保証するものではありません)。

長所と短所: (1) 線形および線形に近い複雑さ (K 平均法) に基づくクラスタリング手法は、外れ値の発見に非常に効果的である可能性があります; (2) クラスターの定義通常は外れ値の補数であるため、クラスターと外れ値が同時に検出される可能性があります; (3) 結果として得られる外れ値セットとそのスコアは、使用されるクラスターの数とデータ内の外れ値の存在に大きく依存する可能性があります; (4)クラスタリング アルゴリズムによって生成されるクラスターの品質は、アルゴリズムによって生成される外れ値の品質に大きな影響を与えます。

7. 特殊な外れ値の検出

実際、上記のクラスタリング手法の本来の目的は、外れ値を見つけることではなく教師なし分類ですが、たまたまその機能が外れ値の検出を可能にするだけです。派生関数です。

上記の方法に加えて、特に異常点の検出に使用される 2 つの一般的な方法があります。One Class SVMIsolation Forest です。詳細は次のとおりです。詳細な調査を行ってください。

3 異常値の処理方法

異常値が検出されたため、ある程度の処理が必要です。外れ値を処理する一般的な方法は、次のカテゴリに大まかに分類できます。

  • 異常値を含むレコードを削除: 異常値を含むレコードを直接削除;
  • 欠損値として扱う: 異常値を欠損値として扱う欠損値は欠損値処理方法を使用して処理されます;
  • 平均値補正: 外れ値は前後 2 つの観測値の平均で補正できます;
  • 処理なし: 外れ値のあるデータセットに対して直接データマイニングを実行します;

外れ値を削除する必要があるかどうかは、実際の状況に基づいて検討できます。一部のモデルは外れ値にあまり敏感ではないため、外れ値があってもモデルの効果には影響しません。ただし、ロジスティック回帰 LR などの一部のモデルは外れ値に非常に敏感です。処理しないと、過剰適合などの非常に悪い効果が発生する可能性があります。起こる。

4 外れ値の概要

上記は、外れ値の検出および処理方法の概要です。

いくつかの検出方法で外れ値を見つけることはできますが、得られる結果が絶対に正しいわけではなく、具体的な状況はビジネスの理解に基づいて判断する必要があります。同様に、外れ値をどのように処理するか、削除するのか、修正するのか、処理しないのかについても、実態に応じて検討する必要があり、固定されたものではない。

推奨学習: Python チュートリアル

以上がPython データの外れ値の検出と処理 (詳細な例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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