Özellik Ölçeklemenin Sonuçları


11

Şu anda SVM kullanıyorum ve eğitim özelliklerimi [0,1] aralığında ölçeklendiriyorum. Önce eğitim setimi takıyorum / dönüştürüyorum ve daha sonra aynı dönüşümü test setime uyguluyorum. Örneğin:

    ### Configure transformation and apply to training set
    min_max_scaler = MinMaxScaler(feature_range=(0, 1))
    X_train = min_max_scaler.fit_transform(X_train)

    ### Perform transformation on testing set
    X_test = min_max_scaler.transform(X_test)

Eğitim setindeki belirli bir özelliğin [0,100] aralığında olduğunu ve test setindeki aynı özelliğin [-10,120] aralığında olduğunu varsayalım. Eğitim setinde bu özellik [0,1] 'e uygun olarak ölçeklenirken, test setinde bu özellik ilk belirtilenin dışında bir aralığa ölçeklendirilecektir, [-0.1,1.2] gibi.

Test seti özelliklerinin sonuçlarının, modeli eğitmek için kullanılanların aralığının dışında olduğunu merak ediyordum. Bu bir sorun mu?

Yanıtlar:


6

Her sınıfta, özellikler için değer dağılımına sahip olursunuz. Bu kendi başına bir endişe nedeni değildir.

Biraz teorik bir bakış açısından, kendinize özelliklerinizi neden ölçeklendirmeniz gerektiğini ve bunları neden tam olarak seçilen şekilde ölçeklendirmeniz gerektiğini sorabilirsiniz.
Bunun bir nedeni, eğitim algoritmanızın diğer büyüklük sıralarını kapsayan özelliklerden daha hızlı (daha iyi) 0 - 1 arasındaki değerlerle yakınlaştığı biliniyor olabilir. Bu durumda, muhtemelen iyisin. Benim tahminim, SVM'nizin iyi olduğu: iç ürün nedeniyle çok büyük sayılardan kaçınmak istiyorsunuz, ancak maksimum 1.2'ye karşılık maksimum 1.0, çok fazla fark yaratmayacak.
(OTOH, örneğin algoritmanızın negatif değerleri kabul etmediğini biliyor olsaydınız, kesinlikle sorun yaşarsınız.)

Pratik soru, modelinizin eğitim kapsamı dışında kalan durumlar için iyi performans gösterip göstermediğidir. Bu, en iyi ve muhtemelen sadece bu tür vakalarla test edilerek / test sonuçlarını eğitim alanının dışındaki vakalarda performans düşüşü açısından inceleyerek yanıtlanabileceğine inanıyorum. Bu geçerli bir endişe kaynağıdır ve bunu incelemek modelinizin onaylanmasının bir parçası olacaktır.

Açıkladığınız boyuttaki farklılıkları gözlemlemek, IMHO'nun model kararlılığına oldukça yakından bakmanın bir nedenidir.


7

Bu bir yorum anlamına geliyordu ama çok uzun.

Test setinizin farklı bir menzile sahip olması, eğitim setinin test setinin iyi bir temsili olmadığının bir işareti olabilir . Ancak, fark örneğin örneğinizde olduğu gibi küçükse, muhtemelen tahminlerinizi etkilemeyecektir. Ne yazık ki, hiçbir durumda bir SVM'yi etkilemeyeceğini düşünmek için iyi bir nedenim olduğunu düşünmüyorum.

MinMaxScalar kullanma gerekçesinin olduğuna dikkat edin (belgelere göre):

Bu ölçeklendirmeyi kullanma motivasyonu, çok küçük standart sapmalara karşı sağlamlığı ve seyrek verilerde sıfır girişleri korumayı içerir.

Bu nedenle, verilerinizin bu duruma uyduğundan emin olmanız önemlidir.

Bir fark aralığına sahip olmaktan gerçekten endişeleniyorsanız, preprocessing.scalebunun yerine düzenli bir standardizasyon (örneğin ) kullanmalısınız.


Merhaba Robert, cevap için teşekkürler! Eğitim / test setinin temsili hakkında iyi bir nokta var, ancak bu zaman serisi verileridir, bu nedenle yeni veriler geldikçe değerlerin daha öncekilere benzer olacağını garanti edemem. Her durumda SVM'yi etkilemeyeceğini düşünmek için iyi bir nedenim olmadığı konusunda sizinle aynı duyguyu taşıyorum.
mike1886

MinMaxScaler ve standardizasyonu kullanarak tahminleri karşılaştırdınız mı?
Robert Smith

Ben var ve sonuçları benzer, ama bu gerçekten işler MinMaxScalar ile vida olup olmadığını anlatmaz.
mike1886

Elbette. Her durumda, değerli bir şey almıyorsanız standartlaştırmayı kullanmak daha iyi olur MinMaxScaler.
Robert Smith
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.