異常值識別方法小結

2021-09-14 07:11:57 字數 3710 閱讀 7388

總覽:編號

方法1經驗判斷

2

3dbscan

4lof

5isolation tree

6one class svm

一. 經驗判斷

x=

iqr=0.75 分位數 - 0.25 分位數

outlier_min=0.25分位數-1.5iqr

outlier_max=0.75分位數+1.5iqr

判斷標準:< outlier_min 或者 > outlier_max 則為異常值 ;

備註:非引數方法

二.3σ原則

若x~n(u,σ)

p(|x−μ|>3σ)≤0.003

三.dbscan

鄰域:對於x_i 來說,若x_j 到x_i的距離小於c,則稱x_j為x_i的鄰域

核心物件:若x_i鄰域的x_j的數量超過d個,則成x_i為核心物件

密度直達:x_i 為核心物件,若x_j在x_i的鄰域內,則成x_j 到 x_j密度直達

密度可達:x_i → x_j → x_k , 其中 x_i → x_j 密度直達 x_j →x_k 密度直達,則 x_i → x_k 密度可達

密度相連:x_k 為核心樣本, x_i,x_j均有x_k密度可達,那麼x_i,x_j密度連

'''

'''from sklearn.cluster import dbscan

from sklearn import datasets

import numpy as np

import matplotlib.pyplot as plt

# 測試樣本

iris=datasets.load_iris()

x=iris.data

y=iris.target

# 獲取eps

def dist(x,y):

x=np.array(x)

y=np.array(y)

return np.sqrt(np.sum(np.square(x - y)))

k=4k_dist=

for i in range(len(x)):

dist_i=

for j in range(len(y)):

dist_i.sort()

dist_i_k=dist_i[k]

# k-dist 圖

#plt.plot([ele for ele in range(len(k_dist))],k_dist)

#plt.show()

eps=np.percentile(np.array(k_dist),80)

clustering=dbscan(eps=eps,min_samples=4).fit(x)

y_hat=clustering.fit_predict(x)

print(y_hat) # -1為雜訊點

四. lof (local outlier factor)

第一步是要先找到距離p k近個的集合o

第二步 計算lrd(o) 以及 lrd(p)

from sklearn.datasets import load_iris

from sklearn.neighbors import localoutlie***ctor

iris=load_iris()

x=iris.data

cls=localoutlie***ctor(n_neighbors=20,algorithm='auto',contamination=0.1)

cls.fit(x)

res=cls.fit_predict(x)

print(res) # 1表示為正常值,-1表示為異常值

五.isolation tree

流程:

1.劃分n份樣本集

2.對於每份樣本集構造乙個itree,如何構造?

step1: 隨機選擇乙個特徵

step2:隨機選擇乙個特徵中的隨機值,隨機值》= min , 隨機<=max

step3:根據隨機值,進行樣本劃分

滿足條件 : 深度到達一定條件 或者 節點只包含乙個樣本

3.計算每個點距離根節點的平均長度(平均的意思是對多顆itree的深度做的平均)

那麼平均長度如何度量呢? 看**:

bst:  binary search tree  二叉搜尋樹

h:harmonic number 調和級數,可以用ln + 尤拉係數進行估計,證明如下;

c(n) : 給定n,h(n)的平均

e(c(n)): 對於一系列itree的c(n)的平均

s(n,x):為異常得分

e 與 s(n,x)的關係

from sklearn.datasets import load_iris

from sklearn.ensemble import isolationforest

''' 引數說明

contamination : 異常值比例

n_estimators: 樹的數量

max_samples:每顆樹,樣本的比例0

max_features:每顆樹,特徵個數和比例

bootstrap: true表示有放回,false表示無返回

'''iris=load_iris()

x=iris.data

cls=isolationforest(contamination=0.1,n_estimators=30,max_features=3,max_samples=100)

cls.fit(x)

y=cls.predict(x)

print(y) # -1 表示異常值,1表示正常值

六.one class svm

from sklearn.svm import oneclasssvm

'''kernel 根據經驗判斷資料可能是那種分布。『linear』:線性;『rbf』:高斯分布,預設的;

nu:異常資料百分比

'''from sklearn.datasets import load_iris

iris=load_iris()

x=iris.data

cls=oneclasssvm(nu=0.1,kernel='rbf')

cls.fit(x)

y=cls.predict(x)

print(y) # -1表示異常,1表示正常

風險識別方法

德爾菲法 優點 1 吸收專家參與 充分利用專家的經驗和學識 2 採用匿名或背靠背的方式,能使每一位專家獨立自由地作出自己的判斷 3 過程幾輪反饋,使專家的意見逐漸趨同。缺點 過程比較複雜,花費時間較長。swot分析方法 是一種根據企業自身的既定內在條件進行分析,找出企業的優勢 劣勢及核心競爭力之所在...

語音識別方法 筆記

語音識別方法 基於引數模型的隱馬爾科夫模型 hmm 的方法和基於非引數模型的向量量化 vq 的方法。基於人工神經網路 ann 的語音識別方法。傳統的會與動態時間規劃的演算法 dtw 在連續語音識別中仍然是主流方法。同時,在小詞彙量 孤立字識別系統中,也已有許多改進的dtw演算法被提出。提高系統的識別...

人臉識別方法簡述

基於 子空間變換的方法 基於子空間變換的方法首先對訓練影象進行代數變換,求得乙個由基影象張成的子空間,然後計算每個影象在該子空間中的投影係數,作為影象的特徵。基於機器學習 的方法 基於機器學習的方法包括神經元網路 artificial neural nctwork,ann 方法和支援向量機 s up...