İstatistiksel OLS ve scikit doğrusal regresyon arasındaki fark


16

Aynı işi yapan farklı kütüphanelerden iki farklı yöntem hakkında bir sorum var. Doğrusal regresyon modeli yapmaya çalışıyorum.

OLS ile istatistik modeli kitaplığını kullandığım kod:

X_train, X_test, y_train, y_test = cross_validation.train_test_split(x, y, test_size=0.3, random_state=1)

x_train = sm.add_constant(X_train)
model = sm.OLS(y_train, x_train)
results = model.fit()

print "GFT + Wiki / GT  R-squared", results.rsquared

Bu çıktı GFT + Wiki / GT R kare 0.981434611923

ve ikincisi scikit kütüphane öğrenme Doğrusal model yöntemi:

model = LinearRegression()
model.fit(X_train, y_train)

predictions = model.predict(X_test)

print 'GFT + Wiki / GT R-squared: %.4f' % model.score(X_test, y_test)

Bu çıktı GFT + Wiki / GT R kare: 0.8543

Benim sorum her iki yöntem de R ^ 2 sonucumuzu yazdırıyor ama biri 0.98 çıktı, diğeri 0.85 çıktı.

Anladığım kadarıyla, OLS eğitim veri kümesiyle çalışır. Sorularım,

  • OLS ile test verileriyle çalışmanın bir yolu var mı?
  • Eğitim veri seti puanı bize herhangi bir anlam ifade ediyor mu (OLS'ta test veri seti kullanmadık)? Geçmişteki bilgilerime dayanarak test verileriyle çalışmak zorundayız.
  • OLS ve scikit doğrusal regresyon arasındaki fark nedir? Modelin puanını hesaplamak için hangisini kullanıyoruz?

Herhangi bir yardım için teşekkürler.

Yanıtlar:


15

Kullanım açısından ilk. Tarafından döndürülen sonuç örneğini kullanmamız dışında, istatistik modellerindeki tahmini scikit-learn'daki gibi çok benzer bir şekilde alabilirsiniz.fit

predictions = results.predict(X_test)

Tahminler göz önüne alındığında, tahmin hatasına dayalı istatistikleri hesaplayabiliriz

prediction_error = y_test - predictions

Tahmin istatistiklerinin iyiliğini hesaplamak için ayrı bir işlev listesi vardır, ancak modellere entegre değildir ve R karesini içermez. (Örnek veriler dışında R kare kullanıldığını hiç duymadım.) Bunların hesaplanması kullanıcı tarafından biraz daha fazla çalışma gerektirir ve istatistik modelleri, özellikle sınıflandırma veya ikili yanıt değişkenli modeller için değil, aynı istatistik kümesine sahip değildir.

Diğer iki noktanıza:

Doğrusal regresyon, temel haliyle istatistik modellerinde ve scikit-öğrenmede aynıdır. Bununla birlikte, uygulama farklı durumlarda sonuçlara neden olabilecek şekilde farklılık gösterir ve scikit öğrenme genellikle daha büyük modeller için daha fazla desteğe sahiptir. Örneğin, istatistik modelleri şu anda çok az sayıda seyrek matris kullanmaktadır.

En önemli fark çevredeki altyapı ve doğrudan desteklenen kullanım durumlarıdır.

Statsmodels, belirli bir modelin verilere ne kadar iyi uyduğunu ve hangi değişkenlerin sonucu "açıkladığını" veya etkilediğini veya etkinin boyutunun ne olduğunu bilmek istediğimiz geleneksel modeli takip eder. Scikit-learn, ana desteklenen görevin tahmin için "en iyi" modeli seçtiği makine öğrenme geleneğini takip eder.

Sonuç olarak, istatistik modellerinin destekleyici özelliklerindeki vurgu, hipotez testleri ve uyum iyiliği ölçümlerini içeren eğitim verilerini analiz etmektir, oysa scikit-öğrenmede destekleyici altyapının vurgulanması, örnek tahmini ve dolayısıyla "test verileri" üzerinde çapraz doğrulama.

Bu farklılığa dikkat çekiyor, kullanımda hala çok fazla çakışma var. statsmodels ayrıca bir zaman serisi bağlamında tahmin ve ek olarak tahmin yapar. Ancak, istatistik modellerinde tahmin için çapraz doğrulama yapmak istediğimizde, scikit-learn çapraz doğrulama kurulumunu istatistik modellerinin tahmin modelleri ile birlikte tekrar kullanmak hala daha kolaydır.


Hmm, statsmodels.tsa'dan bir ARMA modeli kullanmaya çalışıyorum, ancak tahmin arayüzü tamamen farklı. Test verilerini nasıl besleyeceğinizi biliyor musunuz?
ephes

1
Bu farklı bir soru ve belgelere veya örneklere bakmanız gerekiyor. Zaman serisi modellerinde tahmin, sıralı zaman yapısı nedeniyle oldukça farklıdır ve tahmin, bir sonraki zaman periyotlarındaki değerlerin tahminidir.
Josef

Haklısın, bu başka bir soru, yine de açıklama için teşekkürler. Belgeleri okudum ve bir şekilde çalışmasını sağladım. Ama hala arayüzün neden farklı olduğunu anlamıyorum. Özellikle neden özellik vektörleri sağlamak ve tahminler (tahminler) almak mümkün değildir.
ephes

ARMA ve SARIMAX, açıklayıcı değişkenlerin exogtahmin ve öngörüye dahil edilmesini sağlar.
Josef

Stackowerlow ile ilgili bu soru arayüzlerdeki farkı bastırıyor: stackoverflow.com/questions/41045752/…
David Dale

1

OLS modelinde egzersiz verilerini uyum ve tahmin için kullanıyorsunuz.

LinearRegression modeliyle, verileri tahmin etmek ve test etmek için egzersiz verilerini kullanıyorsunuz, bu nedenle R2 skorlarında farklı sonuçlar var.

OLS modelinde test verileri alırsanız, aynı sonuçlara ve daha düşük değere sahip olmalısınız


1

OLS, Sklearn LinearRegression modeline kıyasla farklı Rsquared ve Düzeltilmiş Rsquared değerleri verdiğinde benzer bir sorunla karşılaştım.

Nedeni: OLS, kesişme katsayısını dikkate almaz, varsayılan değildir ve modeli onsuz oluşturur ve Sklearn, modeli oluştururken düşünür.

Çözüm: Veri kümesine 1'lik bir sütun ekleyin ve modeli OLS ile takın ve neredeyse aynı Rsquared ve Adj. Her iki model için rsquared değerleri.

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.