KNN optimizasyon algoritması 1: mesafe ağırlıklandırma

Ağırlıklandırma: Birbirine yakın noktaların daha fazla ağırlık alabilmesi için her noktanın mesafesine bir ağırlık ekleyin Burada nasıl ağırlık verileceği açıklanmıştır.

Ters fonksiyon

Bu yöntemin en basit şekli, mesafe d, ağırlık 1 / d gibi mesafenin tersini döndürmektir. Bazen tamamen aynı veya çok yakın olan ürünlerin ağırlığı çok büyük hatta sonsuz olacaktır. Bu nedenle, mesafenin tersini hesaplarken mesafeye bir sabit ekleyin:

ağırlık = 1 / (mesafe + sabit)

Bu yöntemle ilgili olası sorun, komşulara büyük bir ağırlık vermesi ve uzak olanların hızla çürümesidir. İstediğimiz bu durum olsa da bazen algoritmayı gürültülü verilere daha duyarlı hale getiriyor.

Gauss işlevi

Gauss işlevi daha karmaşıktır, ancak yukarıda belirtilen işlevin eksikliklerinin, biçiminin üstesinden gelir:

Nerede a, b, c R

Gauss fonksiyonunun grafiği ters çevrilmiş bir saat şeklindedir. a eğrinin yüksekliğidir, b x ekseni üzerindeki eğrinin merkez çizgisinin ofsetidir ve c yarım genişliktir (fonksiyon tepe noktasının yarısı arasındaki genişlik).

Yarı genişlik

def gaussian (dist, a = 1, b = 0, c = 0.3):

return a * math.e ** (- (dist-b) ** 2 / (2 * c ** 2))

Yukarıdaki Gauss fonksiyonunun, mesafe 0 olduğunda ağırlığı 1'dir. Mesafe arttıkça ağırlık azalır, ancak 0 olmaz. Aşağıdaki şekil, Gauss işlevi ile diğer birkaç işlev arasındaki farkı göstermektedir: Mesafe belirli bir ölçüde arttığında, diğer işlevlerin ağırlığı 0'a veya altına düşer.

hesaplama süreci

Ağırlıklı kNN önce sıralanmış mesafe değerini ve ardından en yakın k elemanı alır.

1. Ayrık verileri işlerken, bu k verisine ağırlıklarla farklı şekilde davranın ve tahmin sonucunun n'inci verinin etiketiyle aynı olma olasılığı:

Hangi sınıfın en büyük olduğu, hangi sınıfa ait olduğu her sınıfın tahmin edilen ağırlık değerlerini ekleyin.

f (x) = Wi, x sınıfına aittir / Wi toplamı i = 1,2, ..., k

2. Sayısal verilerle uğraşırken, bu k verisinin basit bir ortalaması değil, ağırlıklı ortalamadır: her bir öğenin değerini karşılık gelen ağırlıkla çarparak ve ardından sonucu toplayarak. Toplamı bulduktan sonra, tüm ağırlıkların toplamına bölün.

f (x) = Wi * Vi toplamı / Wi toplamı i = 1,2, ..., k

Vi, komşu i'nin değerini temsil eder, Wi onun ağırlığını temsil eder ve f (x) tahmin edilen sayısal sonuçtur. Yeni bir numunenin kategorisi tahmin edilirken, genel numune taranacaktır.KNN'nin verimliliğinin aslında çok düşük olduğu görülebilir.

---------------------

Orijinal: https://blog.csdn.net/weixin_41770169/article/details/81560946

Alibaba, DIN ve Google WDL'den daha iyi olan Taobao e-ticaret önerisi için Transformer kullanıyor
önceki
Başkan Xinin ordu için yetenek geliştirme sorumluluğunu aklınızda bulundurun
Sonraki
Genişletilmiş Evrişim (Genişletilmiş Evrişim): Karlı olan, ancak yararlı olmayan nedir
GOTCHA! Dolandırıcılık Tespitinde Kişiselleştirilmiş PageRank Uygulaması
Ev yapımı köpek pirinci hızlı, lezzetli ve besleyicidir, bu nedenle köpekler bırakamaz ~
Pony.ai altyapı zorlukları ve uygulamaları
Kuru mal paylaşımı | Alibaba'nın PB seviyesi Kubernetes günlük platformu inşaat uygulaması
Yaz geliyor, köpeğimde sıcak çarpması varsa ne yapmalıyım?
Oğlan, 3 yaşındayken komşu bir köyde Tibet çoban köpeği tarafından ısırıldı. Şimdi normal bir yaşam sürmesi bekleniyor.
Google gerçek zamanlı uçtan uca binoküler sistem derin öğrenme ağı stereonet
ABD medyası, Boeing için yabancı netizenleri "aklamaya" çalışıyor: Çin karşılık veriyor
Poop kürek memurları, köpeğin anoreksisinin nedenini buldunuz mu?
Hangi köpek türlerinin sıcak çarpmasına yatkın olduğunu biliyor musunuz? Kürek memurları dikkat ediyor ~
AI Geliştirme] Derin öğrenmeye dayalı çok hedefli video izlemenin uygulanması
To Top