Python で外れ値を検出するための分離フォレスト アルゴリズム

外れ値の検出は、機械学習の分野における重要なタスクです。これは、データセットの一般的な傾向から逸脱した異常な観測値またはデータ ポイントを識別するために使用されます。外れ値検出に効果的なアルゴリズムの 1 つは、Isolation Forestアルゴリズムです。 

今日のブログでは、Isolation Forest アルゴリズムの基本を説明し、それを使用してPythonを使用してデータセット内の外れ値を検出する方法を説明します。このチュートリアルのビデオ全体は、このブログの下部でご覧いただけます

目次

分離フォレストアルゴリズムと箱ひげ図法 

以下に、外れ値検出用の 2 つのビジュアルを示します。外れ値検出のための隔離林 ML モデルを使用した場合と比較して、 使用した場合の視覚的表現に大きな違いがあることに注目してください。

Python で外れ値を検出するための分離フォレスト アルゴリズム

Isolation Forest ML モデルでは、IS 異常検出アルゴリズムによって検出された外れ値の割合は32.56% です。同じアルゴリズムを使用すると、データの残りの67.44%は正常範囲内に収まりますが、これは非常に重要です。私たちの目標は、 Pythonを使用してこの感度を微調整することです。 

Python で外れ値を検出するための分離フォレスト アルゴリズム

従来の外れ値検出方法

外れ値を見つける従来の方法は、箱ひげ図法を使用することです。この方法では、IQR を使用して、データの予想範囲外にあるものを見つけます。 

Python で外れ値を検出するための分離フォレスト アルゴリズム

この例では、ひげの上のこの 1 つの点が外れ値です。

Python で外れ値を検出するための分離フォレスト アルゴリズム

この視覚的なグラフを円グラフに変換すると、データ全体の 2.33%に相当する 1 つの特定の外れ値が得られます。

Python で外れ値を検出するための分離フォレスト アルゴリズム

このブログでは、Isolation Forest ML メソッドの使用方法、従来のメソッドに一致するように微調整する方法、感度を増減する方法を学びます。

隔離林アルゴリズムのデータセット

LuckyTemplates でデータセットを開きます。次に、「データの変換」をクリックします。 

Python で外れ値を検出するための分離フォレスト アルゴリズム

このチュートリアルのデータセットが表示されます。これには、Date、number of UsersIndex およびIsolation Forest Outlier が含まれており、正常範囲の場合は出力 1、外れ値の場合は -1 が出力されます。 

また、 「Traditional Outlier」の列と、「 Isolation Forest Outlier」を反映する「IS Anomaly Detection」というタイトルの条件付き列もあります。 

Python で外れ値を検出するための分離フォレスト アルゴリズム

2 番目のクエリは、すべてを組み合わせる方法を学習するデータ フレームを示しています。 

Python で外れ値を検出するための分離フォレスト アルゴリズム

Python コード

[プロパティ]ペインには、実行中の 2 つのPythonスクリプトが表示されます。これらのPythonスクリプトの 1 つで Isolation Forest 出力を作成し、もう 1 つで従来の外れ値を生成します。 

Python で外れ値を検出するための分離フォレスト アルゴリズム

隔離フォレストのアルゴリズム Python コード

「Python スクリプトを実行」をクリックしてコードを表示します。 

Python で外れ値を検出するための分離フォレスト アルゴリズム

この Python コードでは、パンダを pd としてインポートし、Isolation Forest と呼ばれるものを使用します 

Python で外れ値を検出するための分離フォレスト アルゴリズム

分離フォレストは、ツリー構造に基づいて意思決定を行い、それが外れ値であるかどうかを決定するツリーベースのモデルです。特定の外れ値を見つけるために 2 つの異なる方法を使用するため、 これをアンサンブル モデルと呼びます。

また、デフォルトでデータセットを保持するデータセット変数をdfとして置き換えます。 

Python で外れ値を検出するための分離フォレスト アルゴリズム

データセットを考えると、以下で強調表示されている 2 行のコードは必要ないので、これらの行を削除するだけで済みます。 

Python で外れ値を検出するための分離フォレスト アルゴリズム

私たちがやっていることはモデルをインスタンス化することです。

モデルをIsolationForestとして保存し、 モデルにユーザーのデータを学習させます。次に、異常検出という新しい列を作成します。この列は、学習したすべてのデータを遡って、どれが外れ値であるべきかどうかを予測します。 

Python で外れ値を検出するための分離フォレスト アルゴリズム

この関数では、汚染のデフォルトは0.5に設定されています。したがって、現時点では非常に敏感であり、多くの外れ値を探すことになります。先ほどの円グラフでは、32.56% という非常に高い範囲の外れ値が示されているのはこのためです。 

Python で外れ値を検出するための分離フォレスト アルゴリズム

感度を低くするには、 IsolationForest関数にcontamination = .1を追加します。

Python で外れ値を検出するための分離フォレスト アルゴリズム

最後に、インデックスをリセットし、「OK」をクリックします。

結果には要約表が表示されます。「適用されたステップ」ペインに移動し、「df」をクリックします。

Python で外れ値を検出するための分離フォレスト アルゴリズム

出力では、[異常検出]列で外れ値を見つけることができます。 

Python で外れ値を検出するための分離フォレスト アルゴリズム

また、従来の外れ値と比較してどのようなパフォーマンスを発揮するのかも確認したいと考えています。 

従来の外れ値 Python コード

別の Python スクリプトを実行します。この例では、Run Python script1 です。

Python で外れ値を検出するための分離フォレスト アルゴリズム

このコードは、第 1 四分位数と第 3 四分位数を使用して外れ値関数を追加します。q3 から q1を減算すると、四分位範囲 (IQR)が得られます。 

Python で外れ値を検出するための分離フォレスト アルゴリズム

次の 2 行では、外れ値の条件を設定します。最初の行は、 1.5 * iqr未満のものはすべて負の値、またはより低い外れ値とみなされることを示していますこれは、従来の方法で外れ値を見つける方法でもあります。

また、データの最高点として外れ値が 1 つあることもわかります。これを考慮して、2 行目では、 q3 + 1.5 * iqrよりも高いデータ ポイントも外れ値とみなされると述べています。 

Python で外れ値を検出するための分離フォレスト アルゴリズム

そのデータセットを返し、関数outliers(df, 'Users')を使用します。次に「OK」をクリックします。

Python で外れ値を検出するための分離フォレスト アルゴリズム

先ほどと同様の概要表が表示されます。 

[適用されたステップ]ペインに移動して[変更されたタイプ 1]をクリックすると、 [従来の外れ値] 列と[異常検出]列が並べて表示されます。後者では、1 と -1 を使用して外れ値を示すかどうかを示します。

Python で外れ値を検出するための分離フォレスト アルゴリズム

ただし、Python で日付を使用すると、日付が乱れて表示される場合があります。 

Python で外れ値を検出するための分離フォレスト アルゴリズム

実行できることは、[列の追加]インデックスを使用して追加の列を作成することです。

Python で外れ値を検出するための分離フォレスト アルゴリズム

次に、Mergeを使用して前の列にIndexを追加すると、元の列/データ セット内のすべての情報を保存できます。 

Python で外れ値を検出するための分離フォレスト アルゴリズム

すべてが揃ったら、コードを実行してビジュアルを更新できます。外れ値の汚染度を 0.5 から 0.1 に変更したため、グラフのこの部分がかなり縮小していることがわかります。 

Python で外れ値を検出するための分離フォレスト アルゴリズム

ビジュアルに戻り、「変更を適用」をクリックします。 

Python で外れ値を検出するための分離フォレスト アルゴリズム

異常検出がデータの 32.56% から 11.63% までどのように低下​​したかに注目してください。 

Python で外れ値を検出するための分離フォレスト アルゴリズム

結果から分かるように、これは外れ値の検出を最適化する良い方法です。 

また、従来の方法を使用する場合、1.5 より低い値を使用する可能性がありますが、それでも1.5​​ x IQRが従来の方法であることに注意してください。 

Python で外れ値を検出するための分離フォレスト アルゴリズム

Python で外れ値を検出するための分離フォレスト アルゴリズム


LuckyTemplates での外れ値の検出と結果の表示
LuckyTemplates での動的な外れ値トリガー ポイントの作成
LuckyTemplates の異常検出機能: 仕組み

結論

Isolation Forest アルゴリズムを使用すると、異常な観測値を簡単に特定してデータセットから除外できるため、分析の精度が向上します。このチュートリアルでは、Python を使用して外れ値検出に Isolation Forest アルゴリズムを使用する方法について段階的なガイドを提供しました。これは、独自のプロジェクトでの実装を開始するのに役立ちます。

私たちが行ったのは、 Pythonコードを使用して異常を見つける非常に簡単な方法でした。汚染や、 Python のコード ページ を通じて学習できるその他の変数を変更することで、アルゴリズムをさらに最適化できます。

ではごきげんよう、

Leave a Comment

Power Automate の文字列関数: Substring と IndexOf

Power Automate の文字列関数: Substring と IndexOf

Microsoft フローで使用できる 2 つの複雑な Power Automate String 関数、substring 関数とindexOf 関数を簡単に学習します。

LuckyTemplates でビジュアル ツールチップを作成する

LuckyTemplates でビジュアル ツールチップを作成する

LuckyTemplates ツールチップを使用すると、より多くの情報を 1 つのレポート ページに圧縮できます。効果的な視覚化の手法を学ぶことができます。

Power Automate で HTTP 要求を行う

Power Automate で HTTP 要求を行う

Power Automate で HTTP 要求を作成し、データを受信する方法を学んでいます。

LuckyTemplates で日付テーブルを作成する方法

LuckyTemplates で日付テーブルを作成する方法

LuckyTemplates で簡単に日付テーブルを作成する方法について学びましょう。データの分析と視覚化のための効果的なツールとして活用できます。

2 つの方法による SharePoint 列の検証

2 つの方法による SharePoint 列の検証

SharePoint 列の検証の数式を使用して、ユーザーからの入力を制限および検証する方法を学びます。

SharePoint リストを Excel または CSV ファイルにエクスポート

SharePoint リストを Excel または CSV ファイルにエクスポート

SharePoint リストを Excel ファイルおよび CSV ファイルにエクスポートする方法を学び、さまざまな状況に最適なエクスポート方法を決定できるようにします。

Power Automate のオンプレミス データ ゲートウェイ

Power Automate のオンプレミス データ ゲートウェイ

ユーザーがコンピューターから離れているときに、オンプレミス データ ゲートウェイを使用して Power Automate がデスクトップ アプリケーションにアクセスできるようにする方法を説明します。

DAX 数式での LASTNONBLANK の使用

DAX 数式での LASTNONBLANK の使用

DAX 数式で LASTNONBLANK 関数を使用して、データ分析の深い洞察を得る方法を学びます。

CROSSJOIN 関数の使用方法 – LuckyTemplates および DAX チュートリアル

CROSSJOIN 関数の使用方法 – LuckyTemplates および DAX チュートリアル

LuckyTemplates で予算分析とレポートを実行しながら、CROSSJOIN 関数を使用して 2 つのデータ テーブルをバインドする方法を学びます。

TREATAS 関数を使用して LuckyTemplates で仮想リレーションシップを作成する

TREATAS 関数を使用して LuckyTemplates で仮想リレーションシップを作成する

このチュートリアルでは、LuckyTemplates TREATAS を使用して数式内に仮想リレーションシップを作成する方法を説明します。