Neden en yakın k komşu sınıflandırıcısını kullanmamız gerekiyor?


11

Anladığım kadarıyla, k-NN tembel bir öğrenci algoritmasıdır ve bir eğitim aşamasına ihtiyaç duymaz. Peki neden .fit()sklearn ile kullanmamız gerekiyor ve kullandığımızda ne oluyor?

Yanıtlar:


9

Kavramsal düzeyde

Bir sınıflandırıcının yerleştirilmesi, bir veri kümesinin girdi olarak alınması ve daha sonra olası sınıflandırıcılardan seçilen bir sınıflandırıcının çıkarılması anlamına gelir. Çoğu durumda, bir sınıflandırıcı - diğer olası sınıflandırıcılardan ayırt edilir - bir dizi parametre ile tanımlanır. Parametreler tipik olarak bir optimizasyon problemi veya başka bir sayısal prosedür çözülerek seçilir. Ancak, knn durumunda, sınıflandırıcı eğitim verilerinin kendisi tarafından tanımlanır. Yani, soyut bir seviyede, knn bir sınıflandırıcıyı takmak sadece eğitim setinin saklanmasını gerektirir.

Uygulama düzeyinde

Knn sınıflandırıcısını yeni bir veri noktasında değerlendirmek için eğitim setinde en yakın komşularının aranması gerekir, bu da eğitim seti büyük olduğunda pahalı bir işlem olabilir. RUser'in belirttiği gibi, bu aramayı hızlandırmak için genellikle eğitim setine dayalı çeşitli veri yapıları oluşturarak çalışan çeşitli hileler vardır. Genel fikir, yeni noktaları sınıflandırmak için gereken bazı hesaplama çalışmalarının aslında noktalar arasında yaygın olduğudur. Bu nedenle, bu çalışma her yeni örnek için tekrarlanmak yerine önceden yapılabilir ve daha sonra yeniden kullanılabilir. Bu hileleri kullanan bir uygulama, eğitim aşamasında bu işi yapacaktır. Örneğin, scikit-learn, fit()işleve çağrı sırasında kd ağaçları veya top ağaçları oluşturabilir .

seçmek

k


11

Tembel bir şekilde uygulayabilirsiniz ve bir dil keşfederken iyi bir egzersiz yapar. (örnek olarak blog yayınlarımdan birine bakın ). Ancak tahmini yapmak için verileri çok daha hızlı bir şekilde endeksleyebilirsiniz.

Özellik alanının bir boyutu varsa, noktaları bu özelliğe göre sıralamak, komşuları çok daha hızlı bulmanıza yardımcı olur (her bir örnekte iki ayrı arama kullanarak). Daha büyük boyutta, sıralamanın doğal bir genellemesi yoktur, ancak noktaları (örneğin) dörtlü kullanarak indeksleyebilirsiniz .

Kaynağa bakarak, scikit öğrenmesinde çeşitli yöntemlerin uygulandığını görebilirsiniz. Ve en yakın komşu sorguları geliştirmeye devam eden bazı araştırmalar var .


5

Diğer cevaplayıcıların dikkat çektiği noktalar kesinlikle geçerli ve ilginç olsa da, kesinlikle yazılım mühendisliği bakış açısından bir şey daha belirtmek isterim:

API'leriyle tutarlı hale getirmek için

sklearn Tahmincileri, diğer şeylerin yanı sıra, fitbir veya iki dizi benzeri (denetlenen / denetlenmeyen bir tahmin edici olup olmamasına bağlı olarak) ve uygulamaya özel birkaç ayrıntı ( Kaynak ) alan bir yönteme sahip olmalıdır .

Knn'ın fityöntemi kesinlikle hiçbir şey yapmasa bile , muhtemelen hala var olacaktır, çünkü knn bir tahmin edicidir ve sklearn'un geliştiricileri ve katkıda bulundukları kod, tahmin edicilerin bir fityönteme sahip olmasını bekler .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.