Zaman serisi tahmini için özellik seçimini uygulamak için Python kullanmayı öğretin

Lei Feng Net Not: Bu makale, Lei Feng Net tarafından derlenen Amerikalı makine öğrenimi uzmanı Jason Brownlee'nin blogundan alınmıştır.

Zaman serisi verilerine makine öğrenimi algoritmalarını uygulamak için özellik mühendisliğinin yardımına ihtiyaç vardır.

Örneğin, tek değişkenli bir zaman serisi veri seti, denetimli öğrenme algoritmalarında kullanılmadan önce girdi ve çıktı özelliklerine dönüştürülmesi gereken bir dizi gözlemden oluşur.

Ancak burada bir sorun var: Her zaman serisi problemi için, kullanabileceğiniz özelliklerin türü ve sayısı konusunda net bir sınır yoktur. Elbette, klasik zaman serisi analiz araçları (korelogram gibi) gecikme değişkenlerini değerlendirmeye yardımcı olabilir, ancak geliştiricilerin zaman damgaları (yıl, ay, gün) gibi diğer özellik türlerini seçmelerine doğrudan yardımcı olamazlar. Ve hareketli istatistikler (hareketli ortalama gibi) türetilmiş özellikler.

Bu nedenle, bu eğitimde, zaman serisi problemleriyle başa çıkmak için özellik önemine ve özellik seçimine göre makine öğrenimi araçlarının nasıl kullanılacağını keşfedeceğiz.

Bu eğitimin incelenmesi sayesinde şunları anlayacaksınız:

Gecikmiş gözlemler için korelasyon grafikleri nasıl oluşturulur ve yorumlanır.

Zaman serisi özelliklerinin önem puanı nasıl hesaplanır ve yorumlanır.

Zaman serisi giriş değişkenlerinde özellik seçimi nasıl yapılır.

Bu eğitim aşağıdaki gibi altı bölüme ayrılmıştır:

1. Aylık araba satış veri setini yükleyin: kullanacağımız veri setini yükleyin.

2. Düzeltme: Veri setinin sonraki analiz ve tahmin için nasıl düzeltileceğini açıklayın.

3. Otokorelasyon grafiği: Zaman serisi verilerinin korelasyon grafiğinin nasıl oluşturulacağını açıklar.

4. Denetimli öğrenmeye zaman serileri: Tek değişkenli zaman serilerini denetimli öğrenme problemlerine dönüştürün.

5. Gecikmeli değişkenlerin özellik önemi: Zaman serisi verilerinin özellik önem puanının nasıl hesaplanacağını ve görüntüleneceğini anlatır.

6. Gecikmeli değişkenlerin özellik seçimi: zaman serisi verilerinin özellik seçimi sonuçlarının nasıl hesaplanacağını ve görüntüleneceğini açıklar.

1. Verileri yükleyin

Bu eğiticide, 1960'tan 1968'e kadar Quebec'teki aylık araba satış verilerine dayanarak açıklayacağız.

Orijinal veriler aşağıdaki bağlantıdan indirilebilir:

https://datamarket.com/data/set/22n4/monthly-car-sales-in-quebec-1960-1968

Bu örnekte, indirilen veri setini car-sales.csv dosyası olarak kaydediyoruz ve dosyadaki dipnot bilgilerini siliyoruz.

Veri setini Pandas kitaplığına göre yükleme kodu aşağıdaki gibidir, verileri bir Seri nesnesi olarak kaydederiz:

# zaman serisinin satır grafiği

Pandalar ithalat Serisinden

matplotlib'den ithalat pyplot

# veri kümesi yükle

series = Series.from_csv ('car-sales.csv', başlık = 0)

# ilk birkaç satırı görüntüle

baskı (seri kafa (5))

Veri kümesinin # satır grafiği

series.plot

pyplot.show

Yukarıdaki örneği çalıştırdıktan sonra yazdırma durumu aşağıdaki gibidir (burada sadece 5 satır listelenmiştir):

Ay

1960-01-016550

1960-02-018728

1960-03-0112026

1960-04-0114395

1960-05-0114587

Ad: Satış, dtype: int64

Tüm verilerin grafiği aşağıda gösterilmiştir:

2. Düzeltme

Yukarıdaki şekilden, otomobil satış verilerinin açık mevsimselliğini ve artan eğilimini görebiliriz.

Bu mevsimsel değişim ve büyüme trendi, dizi tahmininin temel bir özelliği olarak kullanılabilse de, sıra tahminleri yapmamıza yardımcı olan diğer sistem sinyallerini keşfetmemiz gerekirse, bunlar kaldırılmalıdır.

Genellikle mevsimsel değişikliklerin olmadığı zaman serilerini ve büyüme trendlerini durağan seriler olarak adlandırıyoruz.

Bu mevsimsel değişimi ortadan kaldırmak için genellikle mevsimsel fark yöntemi benimsenir ve bu yöntem, sözde mevsimsellikten arındırılmış zaman serileri oluşturmaktır.

Bu örnekte, mevsimsel değişim döngüsü bir yıl (12 ay) gibi görünüyor. Aşağıdaki kod, mevsimsel olarak uyarlanmış zaman serilerinin nasıl hesaplanacağını ve sonuçların mevsimsel olarak düzeltilmiş.csv dosyasına nasıl kaydedileceğini gösterir.

# zaman serisini mevsimsel olarak ayarlayın

Pandalar ithalat Serisinden

matplotlib'den ithalat pyplot

# veri kümesi yükle

series = Series.from_csv ('car-sales.csv', başlık = 0)

# sezonluk fark

farklı = series.diff (12)

# boş verilerin olduğu ilk yılı kırpın

farklı = farklı

# farklı veri kümesini dosyaya kaydet

differenced.to_csv ('seasonally_adjusted.csv')

# plot farklı veri kümesi

differenced.plot

pyplot.show

Kodda, ilk 12 ayda diferansiyel hesaplama için daha önceki veriler bulunmadığından atılmıştır. Nihai mevsimsel fark sonucu aşağıdaki şekilde gösterilmiştir:

Farklı operasyonlarla mevsimsel değişiklikleri ve büyüme trendi bilgilerini başarılı bir şekilde ortadan kaldırdığımız şekilden görülebilmektedir.

3. Otokorelasyon grafiği

Engelsiz koşullar altında, zaman serilerinin özelliklerini çıktı değişkenleriyle olan korelasyona göre seçiyoruz.

Buna otokorelasyon denir ve korelasyon grafikleri olarak da bilinen otokorelasyon grafiklerinin nasıl çizileceğini içerir. Otokorelasyon çizelgesi, her gecikmeli gözlemin korelasyonunu ve bu korelasyonların istatistiksel olarak anlamlı olup olmadığını gösterir.

Örneğin, aşağıdaki kod, aylık otomobil satışları veri kümesindeki tüm gecikmeli değişkenleri çizer.

Pandalar ithalat Serisinden

statsmodels.graphics.tsaplots adresinden plot_acf içe aktarımı

matplotlib'den ithalat pyplot

series = Series.from_csv ('seasonally_adjusted.csv', header = Yok)

plot_acf (dizi)

pyplot.show

Çalıştırdıktan sonra, aşağıda gösterildiği gibi bir korelasyon grafiği veya otokorelasyon fonksiyonu (ACF) grafiği elde edebilirsiniz.

Şekilde, x ekseni gecikme değerini temsil eder ve -1 ile 1 arasındaki y ekseni bu gecikme değerlerinin pozitif ve negatif korelasyonunu gösterir.

Mavi alandaki noktalar istatistiksel önemi gösterir. Histerezis değeri 0 ve korelasyonu 1 olan bir nokta, gözlenen değerin kendisiyle% 100 pozitif korelasyonlu olduğunu gösterir.

Gördüğünüz gibi, grafik 1, 2, 12 ve 17. aylarda önemli bir gecikme gösteriyor.

Bu analiz, sonraki karşılaştırma süreci için iyi bir referans noktası sağlar.

4. Denetimli öğrenmeye yönelik zaman serileri

Giriş değişkeni olarak gecikmeli gözlemi (t-1 gibi) ve çıktı değişkeni olarak mevcut gözlemi (t) alarak, tek değişkenli aylık araba satışları veri seti denetimli bir öğrenme problemine dönüştürülebilir.

Bu dönüşümü elde etmek için, aşağıdaki kodda Pandas kütüphanesindeki shift fonksiyonunu çağırıyoruz, shift fonksiyonu aracılığıyla dönüştürülen gözlemler için yeni bir kuyruk oluşturabiliriz.

Aşağıdaki örnekte, mevcut gözlemleri tahmin etmek için 12 aylık gecikme değerleriyle yeni bir zaman serisi oluşturduk.

Koddaki 12 aylık geçiş, NaN değerlerini içerdikleri için ilk 12 satır verinin kullanılamadığı anlamına gelir.

Pandalar ithalat Serisinden

Pandalardan DataFrame'i içe aktarma

# veri kümesi yükle

series = Series.from_csv ('seasonally_adjusted.csv', header = Yok)

# denetimli öğrenim olarak yeniden çerçeve

dataframe = DataFrame

aralıktaki i için (12,0, -1):

dataframe = series.shift (i)

dataframe = series.values

baskı (dataframe.head (13))

dataframe = dataframe

# yeni dosyaya kaydet

dataframe.to_csv ('lags_12months_features.csv', index = False)

Çıktı, ilk 12 satır verinin mevcut olmadığı durumda aşağıda gösterilmiştir.

İlk 12 veri satırını silip sonuçları lags_12months_features.csv dosyasına kaydediyoruz.

Aslında bu süreç 6 veya 24 ay gibi herhangi bir aşamada tekrarlanabilir ve ilgilenen arkadaşlar kendi başlarına deneyebilirler.

5. Gecikmeli değişkenlerin özellik önemi

Özellik değerlerinin önem puanlarını hesaplamak için torbalanmış ağaçlar ve rastgele ormanlar gibi çeşitli karar ağaçları kullanılabilir.

Bu, tahmine dayalı modeller geliştirirken girdi özelliklerinin göreceli geçerliliğini etkili bir şekilde değerlendirmek için makine öğreniminde yaygın bir kullanımdır.

Burada, zaman serisi tahmini için girdi özelliklerinin göreceli önemini değerlendirmeye yardımcı olması için meşruiyet puanını kullanıyoruz.

Bu, yalnızca yukarıda bahsedilen gecikmeli gözlem özelliklerini tasarlayabildiğimiz için değil, aynı zamanda gözlem zaman damgalarına ve yuvarlanan istatistiklere dayalı diğer özellik türlerini de tasarlayabildiğimiz için önemlidir. Bu nedenle, özellik önemi, özellikleri sıralarken ve seçerken çok etkili bir yöntemdir.

Aşağıdaki örnekte, önceki bölümde oluşturulan veri kümesinin denetimli öğrenme görünümünü yüklüyoruz ve ardından 12 gecikmeli gözlemin her birinin göreli özellik önem puanlarını özetlemek için rastgele orman modelini (kodda RandomForestRegressor) kullanıyoruz. .

Skorun istikrarını sağlamak için burada çok sayıda ağaç kullanılmıştır. Ek olarak, kod her çalıştırıldığında aynı sonucun elde edilmesini sağlamak için rastgele sayı tohumunun başlatılmasını da kullandık.

pandalardan read_csv dosyasını içe aktarın

sklearn.ensemble'dan RandomForestRegressor import

matplotlib'den ithalat pyplot

# veri yükle

dataframe = read_csv ('lags_12months_features.csv', başlık = 0)

dizi = dataframe.values

# girdi ve çıktıya bölün

X = dizi

y = dizi

# rastgele orman modeline sığdır

model = RandomForestRegressor (n_estimators = 500, random_state = 1)

model.fit (X, y)

# önem puanlarını göster

baskı (model.feature_importances_)

# arsa önem puanı

isimler = dataframe.columns.values

ticks =

pyplot.bar (ticks, model.feature_importances_)

pyplot.xticks (keneler, adlar)

pyplot.show

Örneği çalıştırdıktan sonra, aşağıda gösterildiği gibi önce gecikmeli gözlemin önem puanı yazdırılır.

Ardından, skoru gösterildiği gibi bir çubuk grafik olarak çizin.

Şekil, t-12 gözlemlerinin en yüksek göreceli öneme sahip olduğunu, ardından t-2 ve t-4'ün geldiğini göstermektedir.

İlgilenen arkadaşlar, bu sonuç ile yukarıdaki otokorelasyon grafiği arasındaki farkı dikkatlice inceleyebilirler.

Hatta rastgele orman modelleri yerine gradyan artırma, ekstra ağaçlar, torbalanmış karar ağaçları vb. Kullanılabilir ve özelliklerin önem puanları da hesaplanabilir.

6. Gecikmeli değişkenlerin özellik seçimi

Ayrıca özellik seçimi yoluyla en tahmine dayalı giriş özelliklerini otomatik olarak belirleyebilir ve seçebiliriz.

Şu anda, özellik seçiminin en popüler yöntemi Özyineli Özellik Seçimi'dir (RFE).

RFE, bir tahmine dayalı model oluşturabilir, özellik değerlerine farklı ağırlıklar atayabilir ve en küçük ağırlıklara sahip bu özellikleri silebilir.Bu işlemi tekrarlayarak beklenen sayıda özellik elde edilebilir.

Aşağıdaki örnekte, RFE ve rastgele orman modeli aracılığıyla özellik seçiminin nasıl gerçekleştirileceğini gösteriyoruz: Beklenen giriş özelliği sayısının 4 olarak ayarlandığını unutmayın.

pandalardan read_csv dosyasını içe aktarın

sklearn.feature_selection içe aktarma RFE'sinden

sklearn.ensemble'dan RandomForestRegressor import

matplotlib'den ithalat pyplot

# veri kümesi yükle

dataframe = read_csv ('lags_12months_features.csv', başlık = 0)

# girdi ve çıktı değişkenlerine ayırın

dizi = dataframe.values

X = dizi

y = dizi

# özellik seçimi yap

rfe = RFE (RandomForestRegressor (n_estimators = 500, random_state = 1), 4)

fit = rfe.fit (X, y)

# rapor seçili özellik

print ('Seçili Özellikler:')

isimler = dataframe.columns.values

aralıktaki i için (len (fit.support_)):

uygunsa.support_ :

baskı (isimler )

# arsa özelliği sıralaması

isimler = dataframe.columns.values

ticks =

pyplot.bar (işaretler, fit.ranking_)

pyplot.xticks (keneler, adlar)

pyplot.show

Yukarıdaki örneği çalıştırdıktan sonra, aşağıdaki 4 aday özellik elde edilebilir.

Seçili Özellikler:

t-12

t-6

t-4

t-2

Bu sonucun bir önceki bölümde yer alan önem puanından alınan sonuçla tutarlı olduğu görülmektedir.

Program aynı zamanda, aşağıda gösterildiği gibi, seçilecek her bir giriş özelliğinin seçim sırasını gösteren bir çubuk grafik oluşturacaktır (sayı ne kadar küçükse o kadar iyidir).

Benzer şekilde, ilgilenen arkadaşlar da farklı sayıda beklenen özellik ayarlayabilir veya rastgele orman dışındaki modellere geçebilir.

sonuç olarak

Bu eğiticide, örnek kod aracılığıyla zaman serisi verilerinde özellik seçimi gerçekleştirmek için makine öğrenimi araçlarının nasıl kullanılacağını açıkladık.

Özellikle aşağıdaki üç noktayı ortaya koyduk:

Yüksek korelasyonlu gecikmeli gözlemlerin korelasyon diyagramları nasıl yorumlanır.

Zaman serisi verilerinde özellik önem puanı nasıl hesaplanır ve görüntülenir.

Zaman serisi verilerinde en alakalı girdi değişkenlerini belirlemek için özellik seçimi nasıl kullanılır.

Kaynak: machinelearningmastery, Leifeng.com tarafından derlenmiştir.

Öğretmenin ne dediğini hatırlamak için çok mu geç? Bu uygulama kolayca not almanıza yardımcı olur
önceki
Apple 6.1 inç "ucuz sürüm" iPhone adlandırma gösterimi: iPhone XC
Sonraki
10 süper güzel Japon dizisini tavsiye edin, kaç tane izlediniz
Sınırlı süreli avantajlar WeChat'te bir seferde ücretsiz olarak iki kitap alın ve ömür boyu üyelik kazanın
Jiangsu kimya fabrikasında patlama kazası: İnsanlar on binlerce mililitre, yeterli kan kaynağı bağışlamak için sıraya giriyor
Nubia Z18 yakında piyasaya sürülecek, Van Gogh tarzı kamera teknolojisi daha sanatsal
"One Piece: Secret World" büyük dalgalı yeni resmi duyurdu, gizli unsurlar olabilir
Geçen yüzyıldaki siyah beyaz tanrıçaların fotoğrafları, bir dönemin "seksi" enkarnasyonlarıdır.
Yeni gelenler için mutlaka görülmesi gereken bir yer! Bu verimli iş akışı, 0'dan 1'e kadar tam puan PPT oluşturmayı öğretir (kaynaklar dahil)
OPPOvivo izleyin! Lin Bin, Xiaomi MIX 35G denemesini sundu ve 5G sinyallemesinin başarıyla tamamlandığını duyurdu
Parayı bir konsol oyunu için harcadım ve kötü bir deneyime sahip bir atari oyunu satın aldım
Asya tanrıçası No. 1, o sadece güzel değil, aynı zamanda istekli oyunculuk da yapıyor!
Yeni gelenler için mutlaka görülmesi gereken bir yer! 0'dan 1'e kadar tam puan PPT yapmayı öğretin (kaynaklar dahil)
Söylemeye cesaret et! Zheng Xiaolong trafik yıldızlarını kullanmaya cesaret edemez: Umarım erkekler erkekler gibidir ve kadınlar kadınlar gibidir!
To Top