KNN yaparken, bir şeyi aklınızda tutmanız gerekir, yani bu, kesinlikle matematiksel olarak türetilmiş bir algoritma değil, bir sezgiye dayanan basit bir sınıflandırıcı / regresördür - bağımsız değişkenler değişmediğinde temel işlev çok fazla değişmez çok. Başka bir deyişle, altta yatan işlev yerel olarak neredeyse sabittir. Bu varsayımla, herhangi bir noktada altta yatan işlevin değerini, en yakın k noktasının değerlerinin (muhtemelen ağırlıklı) ortalamasıyla tahmin edebilirsiniz.
Bunu akılda tutarak, çoğunluk oylamasında net bir kazanan olmadığında ne yapılacağı konusunda açık bir zorunluluk olmadığını fark edebilirsiniz. Her zaman tek bir k kullanabilir ya da bazı tarafsız ağırlık kullanabilirsiniz.
3 ila 5 arasındaki komşuların ilgilenilen noktadan aynı mesafede olması durumunda, ya yalnızca ikisini kullanabilir ya da 5'in tümünü kullanabilirsiniz. basit sezgi. Bu özel durumlarla nasıl başa çıkmak istediğiniz size kalmış.
1||x−y||2
Ayrıca, bu yıl Samory Kpotufe ve Abdeslam Boularias tarafından NIPS ile ilgili doğru ağırlıklandırma konusuna değinen güzel bir makale de vardı. Genel sezgileri, altta yatan fonksiyonun farklı yönlerde (yani, farklı kısmi türevlerinin farklı büyüklükte) farklı olması, dolayısıyla bir anlamda bu sezgiye göre metriklerin / ağırlığın değiştirilmesinin akıllıca olacağıdır. Bu hile genellikle kNN ve çekirdek regresyonunun performansını geliştirdiğini iddia ediyorlar ve bence bu iddiayı desteklemek için bazı teorik sonuçlar bile var (bu teorik sonuçların gerçekte ne iddia ettiğinden emin olmasam da, gidecek zamanım yoktu) henüz tüm makalede). Makale, sitelerinden ücretsiz olarak indirilebilir veya Google Gradient Ağırlıkları Parametrik Olmayan Regresörlere yardımcı olur.
Şimdi, muhtemelen çekilişler varken gerçekleştirilecek doğru k, metrik, ağırlıklandırma, eylemi nasıl bulabileceğinizi bilmek isteyeceksiniz. Üzücü olan şey, bazı derin düşüncelerden sonra doğru hiperparametrelere ulaşmak temel olarak zor, muhtemelen farklı hiperparametreler demetlerini test etmeniz ve hangilerinin bazı doğrulama setlerinde iyi çalıştığını görmeniz gerekecek. Bazı hesaplama kaynaklarınız varsa ve iyi bir hiperparametre kümesinde otomatik olarak doğru parametrelere ulaşmak istiyorsanız, Gauss işlemlerini bu ortamda türevsiz optimizasyon için kullanmak için yakın zamanda bir fikir var.
Ayrıntıya gireyim - hiperparametreler setini bulmak (yani, doğrulama verilerindeki hatayı en aza indirgemek), bir optimizasyon problemi olarak görülebilir. Ne yazık ki, bu ayarda optimize etmeye çalıştığımız işlevin gradyanını elde edemiyoruz (bu genellikle yapmak istediğimiz, gradyan inişini veya bazı daha gelişmiş yöntemleri gerçekleştirmek için). Gauss süreçleri, bu noktada, büyük şansı olan hiperparametre kümelerini bulmak için, noktaya kadar bulduğumuz en iyi olanlardan daha iyi performans göstermek için kullanılabilir. Bu nedenle, algoritmayı bazı hiperparametreler kümesiyle tekrar tekrar çalıştırabilir, ardından Gauss işlemine hangilerinin daha sonra denemek için en iyi olacağını, bunları deneyip, vb.
Ayrıntılar için, Jasper Snoek, Hugo Larochelle ve Ryan P Adams'ın (ayrıca web sitelerinde veya Google üzerinden de bulunacak) "Makine Öğrenim Algoritmalarının Pratik Bayesci Optimizasyonu" makalesine bakın.