Kütle çekimi gibi uzaktaki örneklemi değersizleştiren kendi oluşturduğum bir formülü sunmak istiyorum.
İteratif olarak çalışan bu formülde temel mantık, verileri uzaydaki eşit kütleler olarak düşünüp, kütle çekim merkezini bulmaya çalışmaktır. Başlangıç noktası olarak verinin standart ortalaması alınmakta ve sonrasında bu noktada oluşan çekim kuvvetlerine göre nokta kaydırılmaktır. İstisna noktaları uzakta kaldığı için oluşturduğu çekim kuvveti (mesafenin karesi ile ters orantılı olduğundan) gitgide azalacak ve ortalama yığının ortasına doğru kayacaktır.
Xi = i’inci elemanın değeri
M = Elemanların değerlerinin ortalaması
Di = i’inci elemanın ortalamaya uzaklığı
ki = i’inci elemanın ortalamaya uzaklığa göre ağırlık katsayısı
M’ = itere edilmiş ortalamanın değeri
w = yayılma katsayısı (1 alınabilir)
M = sum(Xi)/N
Di = sqrt((Xi-M)²)
ki = normalize(1/(Di*w+1)) = ki/sum(ki)
M’ = sum(Xi * ki)
Bu formül, N boyutlu veriler için de uygulanabilir. 2 boyutlu örnek aşağıdaki gibidir.
iternumber = 10;
w = 1;
Mx = mean(X);
My = mean(Y);for i=1:iternumber
Dx = X - Mx;
Dy = Y - My;
D = (Dx.*Dx + Dy.*Dy).^0.5;
k = 1./(D*w + 1);
k = k./sum(k);
Mx = sum(X .* k);
My = sum(Y .* k);
endcenterX = Mx
centerY = My;
