什麼是 Python 中的自我:真實世界的例子
什麼是 Python 中的自我:真實世界的例子
異常值檢測是機器學習領域的一項重要任務。它用於識別偏離數據集總體趨勢的異常觀察或數據點。一種用於離群值檢測的有效算法是隔離森林算法。
在今天的博客中,我們將介紹隔離森林算法的基礎知識,並演示如何使用它來使用Python檢測數據集中的異常值。您可以在本博客底部觀看本教程的完整視頻。
目錄
隔離森林算法與箱線圖方法
下面顯示的是異常值檢測的兩個視覺效果。請注意,與使用用於離群值檢測的隔離森林 ML 模型相比,使用 時的視覺表示存在顯著差異。
在 Isolation Forest ML 模型中,IS 異常檢測算法檢測到的異常值百分比為32.56%。使用同樣的算法,其餘67.44%的數據都在正常範圍內,相當敏感。我們的目標是使用Python微調這種敏感性。
傳統的異常值檢測方法
查找離群值的傳統方法是使用箱線圖方法。在這種方法中,我們使用 IQR 來查找超出數據預期範圍的內容。
在這個例子中,鬍鬚上方的這個單點是我們的異常值。
如果我們將此可視化圖形轉換為餅圖,我們將得到一個特定的離群值,它相當於總數據的 2.33% 。
在這篇博客中,我們將學習如何使用 Isolation Forest ML Method,對其進行微調以匹配傳統方法,並提高或降低其靈敏度。
隔離森林算法的數據集
在 LuckyTemplates 中打開我們的數據集。然後單擊轉換數據。
本教程的數據集將顯示出來。它包含Date、 number of Users、Index和Isolation Forest Outlier,正常範圍輸出 1,異常值輸出 -1 。
我們還有一個用於Traditional Outlier的列,以及一個名為IS Anomaly Detection 的條件列,反映了 Isolation Forest Outlier。
我們的第二個查詢顯示了我們的數據框,我們將學習如何將所有內容放在一起。
Python代碼
在“屬性”窗格中,我們可以看到兩個正在運行的Python腳本。我們使用其中一個Python腳本創建隔離林輸出,並使用另一個腳本生成傳統異常值。
隔離森林算法Python代碼
單擊運行 Python 腳本以查看代碼。
在此 Python 代碼中,我們將pandas 導入為 pd並使用稱為隔離森林的東西。
隔離森林是一種基於樹的模型,它根據樹結構做出決策,然後決定它是否是異常值。我們稱其為集成模型,因為它使用兩種不同的方法來查找特定異常值。
我們還將默認保存數據集的數據集變量替換為df。
鑑於我們的數據集,我們不需要下面突出顯示的兩行代碼,因此我們可以刪除這些行。
我們正在做的是實例化模型。
將模型保存為IsolationForest, 讓模型與 Users 一起學習數據。然後,創建一個名為Anomaly Detection 的新列,它將返回它學習的所有數據並預測哪些數據應該是異常值。
對於此函數,污染的默認設置為0.5。因此,它目前非常敏感,會尋找很多異常值。這就是為什麼在我們之前的餅圖中,異常值的範圍非常高,為 32.56%。
為了降低它的敏感度,我們可以在IsolationForest函數中添加contamination = .1。
最後,重置索引並單擊確定。
結果將顯示一個匯總表。前往Applied Steps窗格並單擊df。
在輸出中,我們可以在“異常檢測”列下找到異常值。
我們還想看看它在傳統異常值旁邊的表現如何。
傳統異常值 Python 代碼
我們將運行另一個 Python 腳本,在本例中為運行 Python 腳本 1。
此代碼使用第一和第三四分位數添加離群值函數。當我們從 q3 中減去q1時,我們得到四分位數間距 (IQR)。
接下來的兩行設置異常值的條件。第一行表示任何小於1.5 * iqr 的值都被認為是負值或更低的異常值。這也是我們以傳統方式找到異常值的方式。
我們還知道我們有一個離群值作為我們數據中的最高點。為了說明這一點,第二行指出高於q3 + 1.5 * iqr的數據點也被視為異常值。
返回該數據集並使用函數outliers(df, 'Users')。然後單擊“確定”。
將出現一個類似於我們之前的匯總表。
如果我們轉到Applied Steps窗格並單擊Changed Type1,我們將並排顯示Traditional Outlier和Anomaly Detection列,後者使用 1 和 -1 表示異常值而不是。
然而,當我們在 Python 中使用日期時,它們可能看起來很亂。
我們可以做的是使用Add Column中的Index創建一個附加列。
然後,使用Merge將Index添加到上一列,這樣我們就可以保留原始列/數據集中的所有信息。
一旦我們把所有東西都放在一起,我們就可以運行我們的代碼並更新我們的視覺效果。請記住,我們將離群值的污染從 0.5 更改為 0.1,因此我們應該看到圖形的這一部分縮小了很多。
返回視覺效果並單擊Apply Changes。
請注意異常檢測如何從我們數據的 32.56% 一路下降到 11.63%。
正如我們在結果中看到的那樣,這是優化異常值檢測的好方法。
還要記住,當人們使用傳統方法時,他們可能會使用低於 1.5 的值,但1.5 x IQR是傳統方法,儘管如此。
在 LuckyTemplates 中檢測和展示異常值結果
在 LuckyTemplates 中創建動態異常值觸發點
LuckyTemplates 異常檢測功能:工作原理
結論
通過使用 Isolation Forest 算法,我們可以輕鬆地從數據集中識別和排除任何異常觀察結果,從而提高分析的準確性。本教程提供了有關如何使用 Python 使用隔離森林算法進行異常值檢測的分步指南,這應該可以幫助您開始在自己的項目中實施它。
我們所做的是使用我們的 Python代碼查找異常的一種非常簡單的方法。您可以通過修改污染和您可以通過Python代碼頁了解的許多其他變量來進一步優化該算法。
一切順利,
什麼是 Python 中的自我:真實世界的例子
您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。
在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。
本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。
在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。
我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。
了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。
本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。
如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。
什麼是 LuckyTemplates 網關?所有你必須知道的