用於 Python 中異常值檢測的隔離森林算法

用於 Python 中異常值檢測的隔離森林算法

異常值檢測是機器學習領域的一項重要任務。它用於識別偏離數據集總體趨勢的異常觀察或數據點。一種用於離群值檢測的有效算法是隔離森林算法。 

在今天的博客中,我們將介紹隔離森林算法的基礎知識,並演示如何使用它來使用Python檢測數據集中的異常值。您可以在本博客底部觀看本教程的完整視頻

目錄

隔離森林算法與箱線圖方法 

下面顯示的是異常值檢測的兩個視覺效果。請注意,與使用用於離群值檢測的隔離森林 ML 模型相比,使用 時的視覺表示存在顯著差異。

用於 Python 中異常值檢測的隔離森林算法

在 Isolation Forest ML 模型中,IS 異常檢測算法檢測到的異常值百分比為32.56%。使用同樣的算法,其餘67.44%的數據都在正常範圍內,相當敏感。我們的目標是使用Python微調這種敏感性。 

用於 Python 中異常值檢測的隔離森林算法

傳統的異常值檢測方法

查找離群值的傳統方法是使用箱線圖方法。在這種方法中,我們使用 IQR 來查找超出數據預期範圍的內容。 

用於 Python 中異常值檢測的隔離森林算法

在這個例子中,鬍鬚上方的這個單點是我們的異常值。

用於 Python 中異常值檢測的隔離森林算法

如果我們將此可視化圖形轉換為餅圖,我們將得到一個特定的離群值,它相當於總數據的 2.33% 。

用於 Python 中異常值檢測的隔離森林算法

在這篇博客中,我們將學習如何使用 Isolation Forest ML Method,對其進行微調以匹配傳統方法,並提高或降低其靈敏度。

隔離森林算法的數據集

在 LuckyTemplates 中打開我們的數據集。然後單擊轉換數據。 

用於 Python 中異常值檢測的隔離森林算法

本教程的數據集將顯示出來。它包含Date、 number of UsersIndexIsolation Forest Outlier,正常範圍輸出 1,異常值輸出 -1 

我們還有一個用於Traditional Outlier的列,以及一個名為IS Anomaly Detection 的條件列,反映了 Isolation Forest Outlier。 

用於 Python 中異常值檢測的隔離森林算法

我們的第二個查詢顯示了我們的數據框,我們將學習如何將所有內容放在一起。 

用於 Python 中異常值檢測的隔離森林算法

Python代碼

“屬性”窗格中,我們可以看到兩個正在運行的Python腳本。我們使用其中一個Python腳本創建隔離林輸出,並使用另一個腳本生成傳統異常值。 

用於 Python 中異常值檢測的隔離森林算法

隔離森林算法Python代碼

單擊運行 Python 腳本以查看代碼。 

用於 Python 中異常值檢測的隔離森林算法

在此 Python 代碼中,我們將pandas 導入為 pd並使用稱為隔離森林的東西。 

用於 Python 中異常值檢測的隔離森林算法

隔離森林是一種基於樹的模型,它根據樹結構做出決策,然後決定它是否是異常值。我們稱其為集成模型,因為它使用兩種不同的方法來查找特定異常值。 

我們還將默認保存數據集的數據集變量替換為df。 

用於 Python 中異常值檢測的隔離森林算法

鑑於我們的數據集,我們不需要下面突出顯示的兩行代碼,因此我們可以刪除這些行。 

用於 Python 中異常值檢測的隔離森林算法

我們正在做的是實例化模型。

將模型保存為IsolationForest 讓模型與 Users 一起學習數據然後,創建一個名為Anomaly Detection 的新列,它將返回它學習的所有數據並預測哪些數據應該是異常值。 

用於 Python 中異常值檢測的隔離森林算法

對於此函數,污染的默認設置為0.5。因此,它目前非常敏感,會尋找很多異常值。這就是為什麼在我們之前的餅圖中,異常值的範圍非常高,為 32.56%。 

用於 Python 中異常值檢測的隔離森林算法

為了降低它的敏感度,我們可以在IsolationForest函數中添加contamination = .1

用於 Python 中異常值檢測的隔離森林算法

最後,重置索引並單擊確定。

結果將顯示一個匯總表。前往Applied Steps窗格並單擊df。

用於 Python 中異常值檢測的隔離森林算法

在輸出中,我們可以在“異常檢測”列下找到異常值。 

用於 Python 中異常值檢測的隔離森林算法

我們還想看看它在傳統異常值旁邊的表現如何。 

傳統異常值 Python 代碼

我們將運行另一個 Python 腳本,在本例中為運行 Python 腳本 1。

用於 Python 中異常值檢測的隔離森林算法

此代碼使用第一和第三四分位數添加離群值函數。當我們從 q3 中減去q1時,我們得到四分位數間距 (IQR)。 

用於 Python 中異常值檢測的隔離森林算法

接下來的兩行設置異常值的條件。第一行表示任何小於1.5 * iqr 的值都被認為是負值或更低的異常值。這也是我們以傳統方式找到異常值的方式。

我們還知道我們有一個離群值作為我們數據中的最高點。為了說明這一點,第二行指出高於q3 + 1.5 * iqr的數據點也被視為異常值。 

用於 Python 中異常值檢測的隔離森林算法

返回該數據集並使用函數outliers(df, 'Users')。然後單擊“確定”。

用於 Python 中異常值檢測的隔離森林算法

將出現一個類似於我們之前的匯總表。 

如果我們轉到Applied Steps窗格並單擊Changed Type1,我們將並排顯示Traditional OutlierAnomaly Detection列,後者使用 1 和 -1 表示異常值而不是。

用於 Python 中異常值檢測的隔離森林算法

然而,當我們在 Python 中使用日期時,它們可能看起來很亂。 

用於 Python 中異常值檢測的隔離森林算法

我們可以做的是使用Add Column中的Index創建一個附加列。

用於 Python 中異常值檢測的隔離森林算法

然後,使用Merge將Index添加到上一列,這樣我們就可以保留原始列/數據集中的所有信息。 

用於 Python 中異常值檢測的隔離森林算法

一旦我們把所有東西都放在一起,我們就可以運行我們的代碼並更新我們的視覺效果。請記住,我們將離群值的污染從 0.5 更改為 0.1,因此我們應該看到圖形的這一部分縮小了很多。 

用於 Python 中異常值檢測的隔離森林算法

返回視覺效果並單擊Apply Changes。 

用於 Python 中異常值檢測的隔離森林算法

請注意異常檢測如何從我們數據的 32.56% 一路下降到 11.63%。 

用於 Python 中異常值檢測的隔離森林算法

正如我們在結果中看到的那樣,這是優化異常值檢測的好方法。 

還要記住,當人們使用傳統方法時,他們可能會使用低於 1.5 的值,但1.5 x IQR是傳統方法,儘管如此。 

用於 Python 中異常值檢測的隔離森林算法

用於 Python 中異常值檢測的隔離森林算法


在 LuckyTemplates 中檢測和展示異常值結果
在 LuckyTemplates 中創建動態異常值觸發點
LuckyTemplates 異常檢測功能:工作原理

結論

通過使用 Isolation Forest 算法,我們可以輕鬆地從數據集中識別和排除任何異常觀察結果,從而提高分析的準確性。本教程提供了有關如何使用 Python 使用隔離森林算法進行異常值檢測的分步指南,這應該可以幫助您開始在自己的項目中實施它。

我們所做的是使用我們的 Python代碼查找異常的一種非常簡單的方法。您可以通過修改污染和您可以通過Python代碼頁了解的許多其他變量來進一步優化該算法。 

一切順利,


什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

如何在 R 中保存和加載 RDS 文件

如何在 R 中保存和加載 RDS 文件

您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。

回顧前 N 個工作日——DAX 編碼語言解決方案

回顧前 N 個工作日——DAX 編碼語言解決方案

在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。

LuckyTemplates 篩選上下文簡介

LuckyTemplates 篩選上下文簡介

在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。

DAX Studio 中數據緩存的物化想法

DAX Studio 中數據緩存的物化想法

本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。

使用 LuckyTemplates 進行業務報告

使用 LuckyTemplates 進行業務報告

如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的