外れ値検出の詳細と、Python で 3 つのシンプルで直感的かつ強力な外れ値検出アルゴリズムを実装する方法を学びます。 > Flickr の Scott.T による写真 次のような状況に遭遇したことがあると思います。
おめでとうございます。おそらくデータに外れ値があるはずです。 外れ値とは何ですか? > 写真はStackExchangeで見つかります 統計学では、外れ値とは他の観測値と大きく異なるデータ ポイントのことです。 上の図から、ほとんどの点が線形超平面内またはその周囲にあるにもかかわらず、1 つの点が他の超散乱点と異なることがわかります。 これは外れ値です。 たとえば、次のリストを見てください。
ここで、1 と 4500 がデータセット内の外れ値であることが簡単にわかります。 データに外れ値があるのはなぜですか? 通常、例外は次のいずれかの状況で発生する可能性があります。
外れ値はなぜ問題になるのでしょうか? 理由は次のとおりです。 線形モデル あるデータがあり、線形回帰を使用してそのデータから住宅価格を予測したいとします。 考えられる仮説は次のとおりです。 > 出典: http> 写真提供: 著者:://arxiv.org/pdf/1811.06965.pdf この場合、実際にはデータがあまりにも適合しすぎています (過剰適合)。 ただし、すべてのポイントがほぼ同じ範囲内にあることに注意してください。 それでは、外れ値を追加すると何が起こるか見てみましょう。 > 著者撮影 明らかに、仮定に変化が見られるため、外れ値がなければ推論はさらに悪くなるでしょう。 線形モデルには以下が含まれます。
データ補間 よくある状況として、データが欠落しているというものがあります。これは、次の 2 つの方法のいずれかで対処できます。
2 番目のアプローチを選択した場合、外れ値によって統計手法の価値が大幅に変わる可能性があるため、疑わしい推論を導き出す可能性があります。 たとえば、外れ値のない架空のデータに戻ってみましょう。
明らかにこの類推は極端ですが、考え方は同じです。 データ内の外れ値は、統計分析やモデリングにおいて深刻な問題を引き起こす可能性があるため、しばしば問題となります。 ただし、この記事では、それらを検出して対処するいくつかの方法について説明します。 ソリューション 1: DBSCAN > 写真提供:Wikipedia KMeans と同様に、ノイズを含むアプリケーションの密度ベースの空間クラスタリング (または、より簡単に DBSCAN) は、実際には教師なしクラスタリング アルゴリズムです。 ただし、その用途の 1 つは、データ内の外れ値を検出する機能でもあります。 DBSCAN は、KMeans やガウス混合ではできない、非線形に分離可能なクラスターを見つけることができるため人気があります。 クラスターが十分に密集していて、低密度領域によって分離されている場合にうまく機能します。 DBSCAN の仕組みの概要 このアルゴリズムは、クラスターを高密度の連続した領域として定義します。 アルゴリズムは非常にシンプルです:
DBSCAN の活用 DBSCAN アルゴリズムは、Scikit-Learn の直感的な API のおかげで非常に簡単に使用できます。 アルゴリズムの動作例を見てみましょう。
ここでは、ε 近傍長が 0.05 の DBSCAN をインスタンス化し、インスタンスがコア インスタンスと見なされるために必要なサンプルの最小数を 5 に設定します。 覚えておいてください、これは教師なしアルゴリズムなので、ラベルは渡されません。 次のコマンドを使用して、ラベル、つまりアルゴリズムによって生成されたラベルを表示できます。
いくつかのラベルの値が -1 になっていることに注意してください。これらは外れ値です。 DBSCAN には、predict メソッドはなく、fit_predict メソッドのみがあるため、新しいインスタンスをクラスタ化することはできません。 代わりに、トレーニングと予測に他の分類器を使用できます。 この例では、KNN を使用します。
ここでは、コアサンプルとそれぞれの近傍に KNN 分類器を適合させます。 しかし、問題が発生しました。 当社が提供する KNN データには外れ値はありません。 これは、新しいインスタンスが実際には外れ値であっても、KNN に新しいインスタンスのクラスターを選択させる必要があるため、問題となります。 この問題に対処するために、KNN 分類器の kneighbors メソッドを使用します。このメソッドは、インスタンスのセットが与えられると、トレーニング セットの k 個の最近傍の距離とインデックスを返します。 次に、インスタンスを外れ値として分類する最大距離を設定できます。
ここでは、異常検出のための DBSCAN について説明し、実装しました。 DBSCAN は、高速で、ハイパーパラメータが 2 つだけであり、外れ値に対して堅牢であるため優れています。 解決策 2: IsolationForest > 著者撮影 IsolationForest は、高次元データセット内の外れ値を検出するのに特に役立つ、アンサンブル学習異常検出アルゴリズムです。 アルゴリズムは基本的に次のことを行います。
森林の活動 ここでも、Scikit-Learn の直感的な API の助けを借りて、IsolationForest クラスを簡単に実装できます。 アルゴリズムの動作例を見てみましょう。
エラーを測定するために、mean_absolute_error もインポートします。 データについては、Jason Brownlee の GitHub から入手できるデータセットを使用します。
分離フォレストをフィッティングする前に、データにバニラ線形回帰モデルをフィッティングして MAE を取得してみましょう。
スコアは良くなりました。 それでは、Isolation Forest が外れ値を排除することでスコアを向上できるかどうかを見てみましょう。 まず、IsolationForest をインスタンス化します。
おそらく、このアルゴリズムで最も重要なハイパーパラメータは、データセット内の外れ値を推定するために使用される汚染パラメータです。 これは0.0から0.5の間の値で、デフォルトでは0.1に設定されています。 ただし、本質的にはランダム化されたランダム フォレストであるため、ランダム フォレストのすべてのハイパーパラメータもアルゴリズムで使用できます。 次に、データをアルゴリズムに適合させます。
DBSCAN と同様に、予測値 = -1 も外れ値としてフィルター処理されていることに注意してください。 ここで、外れ値をフィルタリングしたデータを使用して、X と Y を再配布します。
それでは、線形回帰モデルをデータに当てはめて MAE を測定してみましょう。
すごいですね、大幅なコスト削減ですね。 これは明らかに隔離林の威力を示しています。 解決策 3: ボックスプロット + タッキー法 箱ひげ図は外れ値を識別する一般的な方法ですが、後者はおそらく外れ値を識別する最も過小評価されている方法だと思います。 しかし、「タッキー法」に入る前に、ボックスプロットについて説明しましょう。 ボックスプロット > 写真提供:Wikipedia 箱ひげ図は基本的に、数値データを四分位数でグラフィカルに表示するもので、外れ値を視覚化する非常にシンプルかつ効果的な方法です。 上ヒゲと下ヒゲは分布の境界を示し、それより上または下の値は外れ値とみなされます。 上記のグラフでは、約 80 を超える値と約 62 を下回る値は外れ値と見なされます。 ボックスプロットの仕組み 基本的に、ボックス プロットはデータセットを 5 つの部分に分割することによって機能します。 > StackOverflowからの写真
四分位範囲 (IQR) は外れ値を定義するため重要です。 本質的には、次のようになります。
ボックス プロットでは、測定された距離は 1.5 * IQR であり、データセットのより高い観測値が含まれます。 同様に、データセットの下位の観測ポイントで測定された距離は 1.5 * IQR です。 これらの距離外の値は外れ値となります。 具体的には:
> 写真提供:Wikipedia 箱ひげ図の実際の動作 Python で Boxplot を使用して外れ値を検出する方法を見てみましょう。
データのボックスプロットを作成しましょう。
> 著者撮影 したがって、箱ひげ図に基づくと、データの中央値は 50 で、外れ値は 3 つあることがわかります。 以下の点をまず説明しましょう:
> 著者撮影 ここでは基本的に、-50 未満および 150 を超えるすべてのポイントが除外されるようにしきい値を設定しました。 結果は均等に分配されます! 外れ値検出のためのTukey法 ホッケースティック法による外れ値検出は、実際にはボックス プロットに対する非視覚的なアプローチです。視覚化がないことを除けば、アプローチは同じです。 私がボックスプロットよりもこのアプローチを好む理由は、視覚化を見てしきい値をどの程度に設定すべきかを大まかに見積もっても、実際にはうまくいかないことがあるからです。 代わりに、外れ値として定義したインスタンスを実際に返すアルゴリズムを作成できます。 この実装のコードは次のとおりです。
基本的に、このコードは次のことを行います。
2. 次に、ボックスプロットと同様に、外れ値ステップを1.5 * IQRとして定義します。 3. 次の方法で外れ値を検出します。
4. 次に、選択した観測値にk個の外れ値があることを確認します(この場合、k = 2) 結論は まとめると、外れ値検出アルゴリズムは多数ありますが、ここでは最も一般的な 3 つのアルゴリズム、DBSCAN、IsolationForest、Boxplots について説明しました。 以下のことをおすすめします:
私はフォロワーの皆さんに心から感謝しており、これからも記事を書き続けて皆さんに考える材料を提供したいと考えています。 でも今は、さよならを言わなければなりません;} |
<<: MITチームがCOVID-19の早期警告に役立つ可能性のある咳分析AIを開発
>>: 脱ぐ!ドローンは1000億元の農薬市場の発展を加速させている
近年、生成的事前トレーニング済みモデル (GPT など) の台頭により、自然言語処理の分野に革命が起...
10月13日、The Informationは現地時間12日、複数の関係者の話として、OpenAI...
人工知能 (AI) という用語は、流行語の地位を超え、業界全体にわたる技術革新の基礎となっています。...
最近また「AI変顔」が流行っていますね。 Leiphone.com(公式アカウント:Leiphone...
[[415853]]失語症の人は再び話せるようになり、聴覚障害の人は再び聞こえるようになり、四肢麻...
これは、「Hacker News のランキング アルゴリズムの仕組み」に続く、ランキング アルゴリズ...
ディープラーニングが人気を集めている今、誰もが自分の研究分野でそれを活用できないか考えています。その...
「生成AIは2023年に世界を席巻します。その未来、そして私たちの未来は、私たちの次の一手によって決...
人工知能などのハイテク手段を基盤として構築された都市脳は、都市の経済発展のための「ブラックテクノロジ...
人口の高齢化は世界中の発展途上国や先進国が直面する深刻な問題となっている。 少数の人間が大多数の人間...
人工知能は、脳内の機能的接続のスキャンを分析するだけで、人の政治的イデオロギーを予測することができま...