什麼是異常檢測
異常檢測(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 ...