가장 가까운 이웃이 가장 좋은 예측 변수라는 가정하에 데이터 세트가 있습니다. 양방향 그래디언트의 완벽한 예
값이 거의없는 경우가 있다고 가정하고 이웃과 추세를 기반으로 쉽게 예측할 수 있습니다.
R의 해당 데이터 매트릭스 (운동의 더미 예) :
miss.mat <- matrix (c(5:11, 6:10, NA,12, 7:13, 8:14, 9:12, NA, 14:15, 10:16),ncol=7, byrow = TRUE)
miss.mat
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 5 6 7 8 9 10 11
[2,] 6 7 8 9 10 NA 12
[3,] 7 8 9 10 11 12 13
[4,] 8 9 10 11 12 13 14
[5,] 9 10 11 12 NA 14 15
[6,] 10 11 12 13 14 15 16
참고 : (1) 결 측값 의 속성은 임의적 인 것으로 가정되며 어디에서나 발생할 수 있습니다.
(2) 모든 데이터 포인트는 단일 변수의 값이지만 해당 값은 neighbors
인접한 행 및 열의 영향을받는 것으로 가정 합니다. 따라서 행렬의 위치가 중요 하며 다른 변수로 간주 될 수 있습니다.
일부 상황에서 나는 희망을 가질 수있는 일부 가치 (예 : 실수 일 수 있음)와 올바른 편견 (예 : 더미 데이터에서 이러한 오류를 생성 할 수 있음)을 예측할 수 있습니다.
> mat2 <- matrix (c(4:10, 5, 16, 7, 11, 9:11, 6:12, 7:13, 8:14, 9:13, 4,15, 10:11, 2, 13:16),ncol=7, byrow = TRUE)
> mat2
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 4 5 6 7 8 9 10
[2,] 5 16 7 11 9 10 11
[3,] 6 7 8 9 10 11 12
[4,] 7 8 9 10 11 12 13
[5,] 8 9 10 11 12 13 14
[6,] 9 10 11 12 13 4 15
[7,] 10 11 2 13 14 15 16
위의 예는 예시 일 뿐이며 (시각적으로 대답 할 수 있음) 실제 예는 더 혼란 스러울 수 있습니다. 그러한 분석을 수행하는 강력한 방법이 있는지 찾고 있습니다. 이것이 가능해야한다고 생각합니다. 이 유형의 분석을 수행하는 데 적합한 방법은 무엇입니까? 이 유형의 분석을 수행하는 R 프로그램 / 패키지 제안?
답변
이 질문은 현지화 된 특이 치를 식별하고 수정 하기 위해 가장 가까운 이웃 을 강력 하게 사용하는 방법을 묻습니다 . 왜 그렇게하지 않습니까?
절차는 강력한 로컬 스무스를 계산하고 잔차를 평가하고 너무 큰 값을 제거하는 것입니다. 이 기능은 모든 요구 사항을 직접 충족 시키며 로컬 이웃의 크기와 특이 치를 식별하기위한 임계 값을 변경할 수 있으므로 다른 응용 프로그램에 맞게 조정할 수있을만큼 유연합니다.
(유연성이 중요한 이유는 무엇입니까? 그러한 절차는 특정 지역화 된 행동을 “외부적인”것으로 식별 할 가능성이 높기 때문에 그러한 절차는 모두 매끄럽게 간주 될 수 있습니다 . 세부 사항을 유지하는 것과 로컬 특이 치를 탐지하지 못하는 사이의 트레이드 오프를 약간 제어해야합니다.)
이 절차의 또 다른 장점은 사각형의 행렬 행렬이 필요하지 않다는 것입니다. 실제로 이러한 데이터에 적합한 로컬 스무스를 사용하여 불규칙 데이터 에도 적용 할 수 있습니다 .
R
, 및 모든 기능을 갖춘 통계 패키지뿐만 아니라와 같은 강력한 로컬 스무더가 내장되어 있습니다 loess
. 다음 예제는이를 사용하여 처리되었습니다. 이 행렬에는 개의 행과 개의 열 이 있으며 약 항목이 있습니다. 이것은 여러 개의 극한 극단뿐만 아니라 구별 할 수없는 전체 지점 ( “주름”)을 갖는 복잡한 기능을 나타냅니다. “outlying”으로 간주되는 비율의 이상을 약간 초과 하여 표준 편차가 원본 데이터의 표준 편차의 에 불과한 가우시안 오차가 추가되었습니다 . 이 합성 데이터 세트는 실제 데이터의 여러 가지 까다로운 기능을 제공합니다.
49
4000
5%
1/20
(당 것을 유의 R
매트릭스 행은 수직 스트립으로서 그려 규칙). 잔차를 제외한 모든 이미지는 약간의 차이가있는 값을 표시하는 데 도움이됩니다. 이것이 없으면 거의 모든 지역 특이 치가 보이지 않을 것입니다!
“Imputed”(고정)와 “Real”(원래의 오염되지 않은) 이미지를 비교하여 이상치 (outlier)를 제거하면 에서 발생하는 주름의 일부가 전부는 아니 을 알 수 있습니다. 로 , 라이트 시안)는 “잔차”플롯 스트라이프 각도로 명백하다.
(0,79)(49,30)
“잔여 물”그림의 얼룩은 명백한 고립 된 지역 특이 치를 나타냅니다. 이 그림에는 기본 데이터에 기인 한 다른 구조 (예 : 대각선 줄무늬)도 표시됩니다. 지리 통계적 방법을 통해 데이터의 공간 모델을 사용하여이 절차를 개선 할 수 있지만,이를 설명하고 설명하면 여기에 너무 멀어 질 수 있습니다.
BTW,이 코드는 찾아보고 의 도입 이상치. 이것은 절차의 실패가 아닙니다. 특이 치가 정규 분포로 분포 되었기 때문에 그 중 절반은 크기가 이상인 기본 값과 비교하여 크기 가 0에서 가깝 거나 너무 작아서 표면에서 감지 할 수있는 변화가 없었습니다.
102200
3
600
#
# Create data.
#
set.seed(17)
rows <- 2:80; cols <- 2:50
y <- outer(rows, cols,
function(x,y) 100 * exp((abs(x-y)/50)^(0.9)) * sin(x/10) * cos(y/20))
y.real <- y
#
# Contaminate with iid noise.
#
n.out <- 200
cat(round(100 * n.out / (length(rows)*length(cols)), 2), "% errors\n", sep="")
i.out <- sample.int(length(rows)*length(cols), n.out)
y[i.out] <- y[i.out] + rnorm(n.out, sd=0.05 * sd(y))
#
# Process the data into a data frame for loess.
#
d <- expand.grid(i=1:length(rows), j=1:length(cols))
d$y <- as.vector(y)
#
# Compute the robust local smooth.
# (Adjusting `span` changes the neighborhood size.)
#
fit <- with(d, loess(y ~ i + j, span=min(1/2, 125/(length(rows)*length(cols)))))
#
# Display what happened.
#
require(raster)
show <- function(y, nrows, ncols, hillshade=TRUE, ...) {
x <- raster(y, xmn=0, xmx=ncols, ymn=0, ymx=nrows)
crs(x) <- "+proj=lcc +ellps=WGS84"
if (hillshade) {
slope <- terrain(x, opt='slope')
aspect <- terrain(x, opt='aspect')
hill <- hillShade(slope, aspect, 10, 60)
plot(hill, col=grey(0:100/100), legend=FALSE, ...)
alpha <- 0.5; add <- TRUE
} else {
alpha <- 1; add <- FALSE
}
plot(x, col=rainbow(127, alpha=alpha), add=add, ...)
}
par(mfrow=c(1,4))
show(y, length(rows), length(cols), main="Data")
y.res <- matrix(residuals(fit), nrow=length(rows))
show(y.res, length(rows), length(cols), hillshade=FALSE, main="Residuals")
#hist(y.res, main="Histogram of Residuals", ylab="", xlab="Value")
# Increase the `8` to find fewer local outliers; decrease it to find more.
sigma <- 8 * diff(quantile(y.res, c(1/4, 3/4)))
mu <- median(y.res)
outlier <- abs(y.res - mu) > sigma
cat(sum(outlier), "outliers found.\n")
# Fix up the data (impute the values at the outlying locations).
y.imp <- matrix(predict(fit), nrow=length(rows))
y.imp[outlier] <- y[outlier] - y.res[outlier]
show(y.imp, length(rows), length(cols), main="Imputed")
show(y.real, length(rows), length(cols), main="Real")
답변
이 기사를 살펴 보는 것이 좋습니다 [0]. 해결하려는 문제는 저자가 제안한 방법이 NN 입력보다 약간 더 정교하다는 점을 제외하고는 귀하의 설명에 잘 맞는 것 같습니다 (시작점과 비슷한 것을 사용하더라도).
( , by 데이터 행렬이 표준화 되었다고 가정합니다 . 분석의 전처리 단계에서 각 열이 미친 사람으로 나뉘 )
XXn
p
이 방법의 아이디어는 랭크 획득하는 (값 및 누락 (이는 PCA 성분을 추정 한정된 손실 함수를 사용하여 수행된다) 특이점의 존재 가능성에 저항하는 방식으로 데이터 매트릭스의 견고한 PCA 분해 EM 유형 대치 방법을 사용하여 수행됩니다. 아래에서 설명하는 것처럼 데이터 세트의 PCA 분해가 발생하면 누락 된 요소를 채우고 이러한 추정치에 대한 불확실성을 평가하는 것은 매우 간단합니다.
k각 반복의 첫 번째 단계는 데이터 대치 단계입니다. 이것은 EM 알고리즘에서와 같이 수행됩니다. 누락 된 셀은 예상 한 값으로 채워집니다 (이는 E- 단계).
2 단계 반복 절차의 두 번째 부분에서는 이전 단계에서 얻은 증강 데이터에 (강한) PCA를 맞 춥니 다. 이는 의 스펙트럼 분해 를 (중심의 추정치), by 직교 행렬 및 by 대각선 행렬 ( 와 robustified, PCA 기반 M 단계의 일종이다).
XXtt∈Rp
p
k
LL
k
k
DD
k≤p
논문을 요약하면 다음과 같이 제안하는 일반적인 알고리즘이 있습니다.
-
설정하십시오 . 누락 된 요소가 초기 추정값으로 채워지 는 추정값 을 구하십시오. 누락 된 각 셀에 대해 이러한 초기 추정값은 (원래 데이터 행렬) 의 누락되지 않은 요소의 행 단위 및 열 단위 평균의 평균입니다 .
l=0WW0
XX
-
그런 다음 수렴 될 때까지 수행하십시오.
ㅏ. 에서 강력한 PCA를 수행하고 추정값을 얻습니다
WWl(ttl,LLl,DDl)
비. 세트
l=l+1씨. 사용
YYl=LLl−1(WWl−1−ttl−1)(LLl−1)′디. 의 누락 된 요소를 모델 (EM 알고리즘의 E 단계에서와 같이) 및 해당 항목에 의해 누락되지 않은 요소 .
WWlWWl∼N(ttl−1,LLl−1DDl−1(LLl−1)′)
YYl
가 일부 임계 값보다 작을 때까지 (a-> c)를 반복하십시오 . 최종 반복에서 얻은 추정 된 매개 변수의 벡터는 됩니다. ( t
||WWl−1−WWl||F(tt,LL,DD)
아이디어는 각 반복에서 데이터 모델 이 점점 더 멀어지고 있다는 것입니다. 순진한 초기 추정치 및 강력한 M 단계는 특이 치가 적합치에 영향을 미치지 않도록합니다.
(ttl−1,LLl−1DDl−1)이 접근 방식은 또한 대치의 품질을 확인하기위한 다양한 진단 도구를 제공합니다. 예를 들어, 에서 다중 드로우를 생성 할 수 있지만 이번에는 데이터의 누락되지 않은 요소에 대해 -매트릭스를 생성하고 생성 된 (반상 수) 데이터의 분포가 누락되지 않은 각 셀의 관찰 된 값과 얼마나 일치하는지 확인하십시오.
N(ttl−1,LLDD(LL)′)이 접근법에 대한 기성품 R 구현에 대해서는 잘 모르지만 하위 구성 요소 (주로 강력한 PCA 알고리즘)에서 쉽게 생성 할 수 있으며 R로 잘 구현됩니다 .rrcov 패키지를 참조하십시오 (논문은 이 주제에 대한 조용한 정보).
- Serneels S. and Verdonck, T. (2008). 특이 치 및 누락 된 요소가 포함 된 데이터의 주요 구성 요소 분석 계산 통계 및 데이터 분석 vol : 52 호 : 3 페이지 : 1712-1727.