數(shù)據(jù)處理過程中,通常需要對數(shù)據(jù)進行預(yù)處理,包括缺失值填充,異常值檢測等。異常值處理對于后續(xù)數(shù)據(jù)分析,建模具有非常很重要的影響。
基于描述統(tǒng)計
1.基于常識判斷
針對數(shù)據(jù)進行簡單的描述統(tǒng)計,查看數(shù)據(jù)的極大值和極小值。判斷數(shù)據(jù)是否處于合理的范圍。進行數(shù)據(jù)篩選,篩選掉明顯不符范圍的數(shù)據(jù)。
2.基于3倍標準差進行篩選
如果數(shù)據(jù)整體成正態(tài)分布,可以根據(jù)常識的3σ原則進行異常值篩選。對于標準正態(tài)分布來說,(μ-3σ,μ+3σ)之間的面積為99.730020%。統(tǒng)計學(xué)中小概率事件為5%,則可以初略的認為處于數(shù)據(jù)3σ之外的數(shù)據(jù)為異常數(shù)據(jù)。不過在具體場景中還需要具體的討論。

3.box-cox數(shù)據(jù)轉(zhuǎn)化+3σ準則
3σ準則假設(shè)是數(shù)據(jù)整體呈正態(tài)分布。但是如果數(shù)據(jù)是有偏數(shù)據(jù),則需要轉(zhuǎn)化后再進行篩選,box-cox數(shù)據(jù)轉(zhuǎn)化在前文已有描述box-cox數(shù)據(jù)轉(zhuǎn)化。不再贅述。
4.基于四分位進行篩選
我們在進行箱線圖描述時,通常都會繪制出上下四分位線以及處于四分位線外的離群點。通常認為位于4分位線外的點為異常值。位于上下四分位外的為異常值。

基于機器學(xué)習(xí)的異常值檢測方法
1.孤立森林算法
對于孤立森林的個人理解。孤立森林算法是基于決策樹的算法。在我們的一堆數(shù)據(jù)中,如果以散點圖的形式,可以將每個點進行分類。對于數(shù)據(jù)中大多數(shù)點來說,大多密集的數(shù)據(jù)區(qū)分要達到的樹的深度基本都是相近的,而對于異常點,應(yīng)該是處于密集點之外的離群點,則區(qū)分該數(shù)據(jù)的深度應(yīng)該是小于平均的樹的深度。以下為我個人數(shù)據(jù)處理的代碼
def Anomaly_detect(self):
'''
:param self:
:param datamatrix:
'''
rng = np.random.RandomState(42)
clf = IsolationForest(max_samples=len(self.data.columns), random_state=rng, behaviour="new",contamination='auto')
X_train = np.array(self.data).T
clf.fit(X_train)
y_pred = clf.predict(X_train)
x_left = X_train[y_pred == 1]
x_sample = []
for x in range(len(y_pred)):
if y_pred[x] == 1:
x_sample.append(self.data.columns[x])
self.data = pd.DataFrame(x_left.T,columns = x_sample ,index = self.data.index)
最終結(jié)果大致如圖

2.one-class svm
未完待續(xù)