outlier detection cs selab. 양 근 석. outlier detection 이상치 – 속성의 값이 일반적...

32
Outlier Detection CS SELab.

Upload: amara-sutton

Post on 16-Dec-2015

227 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection

CS SELab.양 근 석

Page 2: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection

• 이상치–속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히

편차가 심한 큰 값

• 이상치 탐지 목적–대부분의 다른 객체들과 다른 객체들을 찾는 것

Page 3: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection

Page 4: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection

• 이상치의 응용–사기 탐지–침입 탐지–환경 파괴–공중 위생–의료

Page 5: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection

• 이상치 발생 원인–상이한 클래스에 속한 데이터–자연 변화–데이터 측정과 수집오류

Page 6: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Univariate Outlier Detection(Cont.)

• set.seed(3147)• x = rnorm(100)• summary(x)

• boxplot.stats(x)

Page 7: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Univariate Outlier Detection(Cont.)

• boxplot(x)

Page 8: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Univariate Outlier Detection(Cont.)

• y = rnorm(100)• df = data.frame(x, y)• rm(x, y)• head(df)

Page 9: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Univariate Outlier Detection(Cont.)

• attach(df)• a = which(x %in% boxplot.stats(x)$out)

• b = which(y %in% boxplot.stats(y)$out)• detach(df)

Page 10: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Univariate Outlier Detection(Cont.)

• outlier.list1 = intersect(a, b)

• plot(df)

Page 11: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Univariate Outlier Detection(Cont.)

• points(df[outlier.list1,], col=“red”, pch=“+”, cex=2)

Page 12: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Univariate Outlier Detection(Cont.)

• outlier.list2 = union(a, b)

• plot(df)

Page 13: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Univariate Outlier Detection

• points(df[outlier.list2,], col=“blue”, pch=“x”, cex=1.5)

Page 14: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection with LOF(Cont.)

• LOF(Local Outlier Factor) algorithm• 밀도 기반으로 이상점을 찾는 알고리즘

Page 15: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection with LOF(Cont.)

• 장점–지표로 하나의 값 만을 반환하기 때문에 해석 용이

• 단점–계산 시간이 너무 오래걸림 , 숫자만 가능

Page 16: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection with LOF(Cont.)

• install.packages(“DMwR”)• library(DMwR)• iris2 = iris[,1:4]• Outlier.scores = lofactor(iris2, k=5)

Page 17: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection with LOF(Cont.)

• plot(density(outlier.scores))

• plot(outlier.scores)

Page 18: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection with LOF(Cont.)

• outliers = order(outlier.scores, decreasing=T)[1:5]

• print(outliers)

• print(iris2[outliers,])

Page 19: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection with LOF(Cont.)

• n = nrow(iris2)• Labels = 1:n• Labels[-outliers] = “.”• Biplot(prcomp(iris2), cex=.8, xlabs=labels)

Page 20: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection with LOF

Page 21: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection by Clustering(Cont.)

• K-Means 알고리즘

Page 22: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection by Clustering(Cont.)

• iris2 = iris[,1:4]• kmeans.result = kmeans(iris2, centers=3)

Page 23: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection by Clustering(Cont.)

• kmeans.result

Page 24: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection by Clustering(Cont.)

• center = kmeans.result$centers[kmeans.result$cluster,]

• distances = sqrt(rowSums((iris2 – centers)^2))• outliers = order(distances, decreasing=T)[1:5]• print(outliers)

Page 25: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection by Clustering(Cont.)

• print(iris2[outliers,])

Page 26: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection by Clustering(Cont.)

• plot(iris2[,c(“Sepal.Length”, “Sepal.Width”)], pch=“o”, col = kmeans.result$cluster, cex=0.3)

Page 27: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection by Clustering(Cont.)

• points(kmeans.result$centers[,c(“Sepal.Length”, “Sepal.Width”)], col=1:3, pch=8, cex=1)

Page 28: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection by Clustering

• points(iris2[outliers, c(“Sepal.Length”, “Sepal.Width”)], pch=“+”, col=4)

Page 29: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection from Time Series Data(Cont.)

• AirPassengers

Page 30: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection from Time Series Data(Cont.)

• Plot(AirPassengers)

Page 31: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection from Time Series Data(Cont.)

• f = stl(AirPassengers, “periodic”, robust=TRUE)• outliers = which(f$weights < 1e – 8)

• plot(f)

Page 32: Outlier Detection CS SELab. 양 근 석. Outlier Detection 이상치 – 속성의 값이 일반적 ( 혹은 예상 ) 값 보다 상당히 편차가 심한 큰 값 이상치 탐지

Outlier Detection from Time Series Data

• points(time(sts)[outliers], sts[, “remainder”][outliers], pch=“x”, col=“red”)