異常檢測 task1

2021-10-14 15:23:15 字數 1061 閱讀 3013

什麼是異常檢測

異常檢測(outlier detection),是識別與正常資料不同的資料,與預期行為差異大的資料。識別如信用卡欺詐,工業生產異常,網路流裡的異常(網路入侵)等問題,針對的少數的事件。

1.1 異常的類別

點異常:少數個體例項是異常的,大多數個體例項是正常的。

上下文異常:在特定情景下個體例項是異常的,在其他情景下是正常的。

群體異常:指的是在群體集合中的個體例項出現異常的情況,而該個體例項可能本身不是異常。

1.2 異常檢測任務分類

有監督:訓練集中的正例和反例均有標籤

無監督:訓練集無標籤

半監督:在訓練集中只有單一類別(正常例項)的例項,沒有異常例項參與訓練。

1.3 異常檢測場景

2.1 傳統方法

2.1.1 基於統計學的方法

統計學方法對資料的正常性做出假定。

假設正常的資料物件由乙個統計模型產生。不遵守該模型的資料是異常點。

統計學方法的有效性高度依賴於給定資料所做的統計模型是否成立。

思想:學習乙個擬合給定資料集的生成模型,然後識別該模型低概率區中的物件,把它們作為異常點。

2.1.2 線性模型

pca2.1.3 基於相似度的方法

情況:資料點的聚整合度高,離群點較少的情況。

缺點:計算量大

類別基於集群(簇)的檢測

基於距離的度量

基於密度的度量

2.2 整合方法

feature bagging:和bagging類似,物件是feature

孤立森林

演算法過程:隨機超平面切割資料空間,切一次可以生成兩個字空間,重複該過程,直到每個字空間只有乙個資料點為止。

演算法思想:高密度簇需要被切割許多次,低密度的簇需要切割的很快。孤立森林認為這些很快被孤立的點就是異常點。

2.3 機器學習

有標籤:使用樹模型,例如gbdt,xgboost進行分類。

缺點:異常檢測場景下資料標籤是不均衡的

優點:可以構造不同的特徵

3. 異常檢測常用開源庫

scikit-learn

pyod

程式設計TASK1

1.實現可以動態擴容的陣列 思路 新建陣列的時候,將陣列的容量大小設定為乙個變數,如果陣列容量不夠的時候,可以將原來資料擴大原來的幾倍,進行擴容 也可以直接使用c 中的vector容器,不必考慮原陣列的大小,如果需要增加元素,直接v.pushback 即可 2.將兩個有序陣列合併成乙個有序陣列 思路...

菜鳥學習TASK1

鴿子部第一次task當然不能鴿掉,但是進度很迷,所以打算先對照task把概要大概寫下,然後把發展方案寫下,然後再一點點完善細節。task 了解c語言的幾大資料型別 包括陣列與字串 了解ascii碼和char型別的關係,有興趣的可以進一步了解unicode。基礎資料型別 整型 短整型short,整型i...

陣列學習task1

1.利用動態陣列解決資料存放問題 編寫一段 要求輸入乙個整數n,用動態陣列a來存放2 n之間所有5或7的倍數,輸出該陣列。托普利茨矩陣問題 如果乙個矩陣的每一方向由左上到右下的對角線上具有相同元素,那麼這個矩陣是托普利茨矩陣。給定乙個m x n的矩陣,當且僅當它是托普利茨矩陣時返回true。def ...