Verileri test etmek için de normalleştirme uygulamalıyız?


17

Yazar tanımlama sorunu üzerine bir proje yapıyorum. Verileri eğitmek için tf-idf normalizasyonunu uyguladım ve daha sonra bu veriler üzerinde bir svm eğitimi aldım.

Şimdi sınıflandırıcıyı kullanırken test verilerini de normalleştirmeliyim. Normalleşmenin temel amacının öğrenme algo'yu öğrenirken daha önemli özelliklere daha fazla ağırlık vermektir. Bu yüzden bir kez eğitildikten sonra, hangi özelliklerin önemli olduğunu, hangisinin önemli olmadığını zaten biliyor. Peki verileri test etmek için normalizasyon uygulanmasına gerek var mı?

Bu alanda yeniyim. Soru aptalca görünüyorsa lütfen dikkate almayın.


4
Test verileriniz, egzersiz verilerinizle aynı ölçekte olmalıdır.
Jon

Yanıtlar:


37

Evet, algoritmanız normalleştirilmiş egzersiz verileriyle çalışıyorsa veya gerekiyorsa verileri test etmek için normalizasyon uygulamanız gerekir *.

Çünkü modeliniz girdi vektörleri tarafından verilen sunum üzerinde çalışır. Bu sayıların ölçeği temsilin bir parçasıdır. Bu biraz metre ve metre arasında dönüştürme gibi. . . bir model veya formül normalde yalnızca bir tür üniteyle çalışır.

Sadece normalleştirmeye değil, aynı zamanda egzersiz verilerinizle aynı ölçeklendirmeyi de uygulamalısınız. Bu, egzersiz verilerinizle kullanılan ölçek ve ofseti saklamak ve tekrar kullanmak anlamına gelir. Genel bir başlangıç ​​hatası, treninizi ve test verilerinizi ayrı ayrı normalleştirmektir.

Python ve SKLearn'de, giriş / X değerlerinizi aşağıdaki gibi Standart Ölçekleyici kullanarak normalleştirebilirsiniz :

scaler = StandardScaler()
train_X = scaler.fit_transform( train_X )
test_X = scaler.transform( test_X )

train_XDaha sonra uyan (parametreleri belirten) bir fonksiyonun dönüştürülmesinin nasıl normalleştiğine dikkat edin. İken test_Xdönüşüm tren verilerinden öğrenilen aynı params kullanarak sadece dönüşümler.

Uyguladığınız tf-idf normalizasyonu, bir bütün olarak veri kümesindeki bazı parametreleri (tüm belgelerdeki kelimelerin sıklığı) öğrenmesinin yanı sıra her belgede bulunan oranları kullanarak benzer şekilde çalışmalıdır.


* Bazı algoritmalar (karar ağaçlarına dayananlar gibi) normalleştirilmiş girdilere ihtiyaç duymaz ve farklı doğal ölçeklere sahip özelliklerle başa çıkabilir.


Test için normalizasyon parametrelerinin eğitimden belirlenenlerle aynı olması gerektiğini açıklayan +1. Anladığım kadarıyla, bu mantık herhangi bir doğrulama kümesine de uzanıyor.
Greenstick

@Greenstick: Evet, elbette, modele beslenen tüm verilerin işlenmesine kadar uzanır. Üretimde çıkarım için bir model kullanılacaksa yeni veriler dahil edilir. Bence tüm bunları kapsamaksızın cevap yeterince uzun ve doğrulama verilerini böldüğünüz nokta çok değişiyor (birçok model bu eğitim adımında yerleşiktir), bu yüzden kod örneğini gösteremedim.
Neil Slater

2
Test verilerini egzersiz verileriyle ölçeklendirmeli (fit_transform)? Yoksa aynı ölçeği (scaler.transform) kullanarak ayrı mı yapıyorsunuz?
Bob Ebert

2
@BobEbert: İkisini de yapabilirsiniz. Teknik olarak, birleştirilmiş veri kümesine bir ölçekleyici yerleştirirseniz, testten eğitime az miktarda bilgi sızdırıyor olabilirsiniz; bu nedenle "resmi" sürüm ölçekleyiciyi yalnızca eğitim verilerine sığdırmak ve diğer tüm öğelere uygulamak olabilir daha sonra veri setleri. Ancak, bu sızıntı çok küçüktür ve ölçekleyiciye sahip olduğunuz tüm verilere uyursanız pratikte bir soruna neden olduğunu görmedim.
Neil Slater

Test verileri için eğitim setinden türetilmiş ölçekleme kullanmam gerektiğini varsaydığım için teşekkür ederim. Fakat bunun arkasındaki açıklamaya bir bağlantı verebilir misiniz? EDIT: nevermind, açıklamalar burada: datascience.stackexchange.com/questions/58597/…
crazysantaclaus

6

Kesinlikle verilerinizi normalleştirmelisiniz. Aşağıdaki amaçlar için verileri normalleştiriyorsunuz:

  • Aynı ölçekte farklı özelliklere sahip olmak için, bu da öğrenme sürecini hızlandırmak içindir.

  • Ölçeğe bakmadan farklı özellikleri oldukça önemsemek için.

Eğitimden sonra, öğrenme algoritmanız verilerle ölçeklendirilmiş biçimde baş etmeyi öğrendi, bu nedenle test verilerinizi egzersiz verileri için kullanılan normalleştirme parametreleriyle normalleştirmeniz gerekiyor.

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.