Önceki zaman serisi verilerine dayalı olarak trafiği nasıl tahmin edebilirim?


18

Bir perakende mağazam varsa ve her dakika mağazamda kaç kişinin girdiğini ölçmek için bir yolum varsa ve bu verilere zaman damgası uygularsam, gelecekteki yaya trafiğini nasıl tahmin edebilirim?

Makine öğrenimi algoritmalarına baktım, ama hangisini kullanacağımdan emin değilim. Test verilerimde, KNN gibi (mantıklı parametreler ve mesafe fonksiyonu olduğunu düşündüğüm gibi) denediğim diğer şeylere kıyasla yıldan yıla bir eğilim daha doğru.

Neredeyse bu, zaman serisi verileriyle uğraştığınız finansal modellemeye benzer olabilir. Herhangi bir fikir?


Belki bu tanıtım belgesi faydalı olabilir. knime.org/files/knime_bigdata_energy_timeseries_whitepaper.pdf Sezonluk dahil zaman serilerini modellemekle ilgilidir. - Rosaria
Rosaria

Yanıtlar:


17

KNN gibi modellerle ilgili sorun, mevsimsellik (trenddeki zamana bağlı varyasyonlar) dikkate almamalarıdır. Bunları dikkate almak için Zaman Serisi analizini kullanmalısınız.

Sizinki gibi sayım verileri için genelleştirilmiş doğrusal otomatik regresif hareketli ortalama modelleri (GLARMA) kullanabilirsiniz. Neyse ki, onları uygulayan bir R paketi var ( glarma ).

Vinyet aracı arkasında teorisi için iyi bir kaynaktır.


2
Tahmin ve zaman serileri analizi için bir diğer çok faydalı paket Prof. Rob J. Hyndman tarafından öngörülmektedir .
Def_Os

Bunun başka bir dilde uygulanıp uygulanmadığını biliyor musunuz? Tam olarak R ile bir profesyonel değilim. En azından gazeteyi kesinlikle okuyacağım.
user1132959 17:14

Ben tanıdık değilim. Python kullanmak istiyorsanız, python'daki programlamanın çoğunu yaparken glarma işlevini çağırmak için rpy2 paketini kullanabilirsiniz . Diğer birçok dilde de böyle bir konektör vardır.
Christopher Louden

10

Christopher'ın yukarıdaki cevapları tamamen mantıklı. Alternatif bir yaklaşım olarak (veya belki de verdiği tavsiyeye ek olarak), neler olup bittiğini kabaca anlamaya çalışmak için verileri biraz görselleştirerek başlayabilirim.

Bunu henüz yapmadıysanız, bir tarih ayını ve haftanın gününü özellikler olarak eklemeyi deneyebilirsiniz - eğer KNN'ye bağlı kalırsanız, bu modelin mevsimsellik kazanmasına yardımcı olacaktır.

Bunu üstlenmenin farklı bir yolu olarak, gerçekten, gerçekten temel bir modelle (OLS gibi) başlamayı düşünebilirsiniz. Bunlar genellikle makul tahminler üretmede uzun bir yol kat eder.

Son olarak, verileriniz hakkında ne kadar bilgimiz olursa, öneriler üretmemize yardımcı olmak o kadar kolay olur - Hangi zaman çerçevesini gözlemliyorsunuz? Şu anda kullandığınız özellikler nelerdir? vb.

Bu yardımcı olur umarım --


Evet, görselleştirme her analizde önemli bir ilk adımdır.
Christopher Louden

Ayı, ayın gününü, haftanın gününü ve yılı özellik olarak ekledim. Hatta doğrusal olarak azalan bir "Yakınlık" değeri denedim. OLS'u denediğimi sanmıyorum. Birkaç haftadan birkaç yıla kadar değişen bir zaman dilimi gözlemliyorum. Görselleştirmeye gelince, bunu yapmaya çalıştım. Sorun, yazılımın farklı müşteriler için insan müdahalesi olmadan otomatik olarak tahmin edebilmesini istiyoruz.
user1132959

3

Sinir Ağı'nı deneyebilirsiniz. Burada ve burada zaman serilerine NN'nin nasıl uygulanacağına dair 2 harika açıklama bulabilirsiniz .

Şunun için en iyi uygulama olduğuna dikkat edin:

  • Girdi verilerini mevsimsellikten arındır / alçalt (böylece NN mevsimsellik öğrenmeyecektir).
  • Giriş verilerini yeniden ölçeklendirin / normalleştirin.

Aradığınız şey bir regresyon problemi olduğu için aktivasyon fonksiyonları olmalı ya da olmamalı linearve en aza indirmeyi hedeflemelisiniz ( bir sınıflandırma probleminin maksimize edilmesine karşı olarak ).sigmoidtanhsum-of-squares errornegative log-likelihood


Neural Networks'ü bir seçenek olarak görüyordum, ama ne tür parametreler kullanacağımı bilmiyordum. Bunları denemek zorundayım.
user1132959

Sigmoid ve Tanh iyi, doğrusal olmayanlık daha karmaşık etkileşimler öğrenmek istiyor ve ağırlıklar bunları ağın gerekli gördüğü herhangi bir aralıkla eşleştirecek
Jan van der Vegt

3

@Christopher Lauden'in yukarıda belirttiği gibi, zaman serisi analizi bu tür şeyler için en uygun olanıdır. Bununla birlikte, daha geleneksel bir "makine öğrenimi yaklaşımı" yapmak istediyseniz, geçmişte yaptığım bir şey verilerinizi örtüşen zaman pencerelerine özellikler olarak engellemek ve daha sonraki günleri (veya haftaları) tahmin etmek için kullanmaktır. ) trafik.

Özellik matrisiniz şöyle bir şey olurdu:

t1 | t2 | ... | tN
t2 | t3 | ... | tN+1
t3 | t4 | ... | tN+2
...
tW | tW+1 | ... |tN+W

tIgündüz trafiği nerede I. Tahmin edeceğiniz özellik, son sütundan sonraki gün trafiktir. Özünde, ertesi günün trafiğini tahmin etmek için bir trafik penceresi kullanın.

Bunun için her türlü ML modeli işe yarayacaktır.

Düzenle

"Bu özellik matrisini nasıl kullandığınız hakkında ayrıntılı bilgi verebilir misiniz?" Sorusuna yanıt olarak:

Özellik matrisi, belirli bir süre boyunca geçmiş trafiği gösteren değerlere sahiptir (örneğin, 1 haftadan fazla saatlik trafik) ve bunu gelecekte belirli bir süre boyunca trafiği tahmin etmek için kullanırız. Tarihi verilerimizi alıyor ve tarihi trafik özellik matrisi oluşturuyoruz ve bunu ileride bir dönemdeki trafikle etiketliyoruz (örneğin, özellikteki pencereden 2 gün sonra). Bir çeşit regresyon makinesi öğrenme modeli kullanarak, tarihi trafik verilerini alabilir ve trafiğin tarihi veri setimizde nasıl hareket ettiğini tahmin edebilecek bir model oluşturmaya çalışabiliriz. Varsayım, gelecekteki trafiğin geçmiş trafiğe benzeyeceğidir.


Bu özellik matrisini nasıl kullanacağınızı açıklayabilir misiniz? Günler boyunca trafik değişikliğine dayalı olarak öğrenmeye mi çalışıyorsunuz?
user1132959

Umarım daha fazla açıklık sağlamak için yanıtı düzenledim.
gallamin

2

Öncelikle, derinlemesine bilgi sahibi olmadan Makine öğrenimi gibi şeyleri bile kullanmam. Bu zaman serisine sahip olsaydım yapacağım basit şeyler:

  1. En yoğun, ortalama ve düşük yaya trafiğine sahip olduğunuzu anlamak için sql sorguları yazın.
  2. Daha sonra tüm zaman serilerini görselleştirmeye çalışın ve desenleri almak için temel desen eşleme algoritmalarını kullanabilirsiniz.

Bu iki şey, veri kümenizin size ne söylediğini anlamanıza yardımcı olacaktır. Daha sonra, bununla birlikte, muhtemelen makine öğrenme algoritmalarını kullanmak için daha iyi bir durumda olacaksınız.

Ayrıca, şu anda zaman serileri üzerinde bir şeyler oluşturmak için çalışıyorum ve zaman serileri analizini kullanmak, makine öğrenmesinden çok daha fazla yardımcı olacaktır. Örneğin, kalıpları göstermek için her gün verileri kullanan ve bir deseni yakalamak için 3 ila 6 aya kadar veri kullanan algoritma tanıma algoritmaları vardır.


0

Sinir ağını veya eşdeğerini kullanmaya karşı tavsiyede bulunuyorum, sanırım, mağaza deneyiminize dayanarak iyi bir önceliğiniz var (muhtemelen günlük / mevsimsel eğilimler ve bir miktar pürüzsüzlük var) ve Nispeten az miktarda veri hayal ediyorum. Daha iyi bir seçenek IMO, Gauss Süreci veya SVM gibi bir çekirdek yöntemi kullanmak olacaktır.


0

Bu soruyu hayata döndürmek, benzer soruları olan buraya inen başkaları için yararlı olabilir.

Facebook geçtiğimiz günlerde Peygamberimiz https://facebookincubator.github.io/prophet/ adlı dahili tahmin araçlarından birini açıkladı ve açık kaynaklı yaptı

Hem R & Python paketleri olarak mevcuttur hem de Makine Öğrenmesi geçmişi az olan biri için ilginç bir çözüm olduğunu kanıtlar. Bununla birlikte, bazı ek ML bilgileri üretilen modellerin ayarlanmasına ve optimize edilmesine izin verir.

Peygamber'e ilk adım olarak denemenizi tavsiye ederim. Bu çözümdeki hızlı kazanç, model oluşturma ve testin kolaylığı ve hızıdır: dakikalar içinde tam anlamıyla bir iniş projeksiyonu elde edebilirsiniz. Verilerin mevsimselliğini "doğal olarak" yakalayarak zaman serilerinde çok iyi davranır.

Kaputun altında, genelleştirilmiş bir katkı modeline (GAM) benzer - özel kağıt hakkında daha fazla bilgi: https://facebookincubator.github.io/prophet/static/prophet_paper_20170113.pdf

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.