Zaman serisi analizi, piyasa değerlerinin değişmesi gibi gelecekteki olayları tahmin etmek için harika bir araçtır. ARIMA ve SARIMA, zaman serisi analizi için harika araçlardır. 'Uzun' formatta veri gerektirirler. Bununla, her veri noktasının bir zamanla ilişkilendirildiği veri noktalarının bir koleksiyonunu (tercihen bir panda veri çerçevesi) kastediyorum (pandalarda bu, dizini oluşturan farklı zamanlara sahip bir dizi olacaktır). ARIMA, otomatik gerilimli entegre hareketli ortalama anlamına gelir. SARIMAX benzerdir ve eksojen faktörlerle birlikte mevsimsel otomatik gerilimli entegre hareketli ortalamayı ifade eder. Bu blog yazısında, bu tekniklerin nasıl çalıştığını ve bunları python'da kullanmanın kolay bir yolunu inceleyeceğim. Ayrıca modelleri değerlendirmek için AIC'nin (Akaike bilgi kriteri) nasıl kullanılacağını göstereceğim.
Başlamak için otomatik gerilemenin ne anlama geldiğini açıklayacağım. Otomatik gerileyen (AR) bir modelde, model önceki veri noktalarına bakarak ve doğrusal regresyona benzer matematiksel bir formül kullanarak sonraki veri noktasını tahmin eder. Daha önceki kaç veri noktasının kullanılacağını belirleyen sıra adı verilen ("p" ile temsil edilen) bir şey vardır. Bence iyi bir p değeri elde etmenin en iyi yolu, birkaç farklı değeri denemek ve hangi modelin minimum (en iyi) AIC ile çıktığını görmektir. P değeri daha yüksek olduğunda, model daha uzun süre önce meydana gelen daha fazla veri noktasını hesaba katar. Aşağıda otomatik gerileyen model için formül verilmiştir. “C” bir sabittir ve “e” hata veya gürültü anlamına gelir.
Sıradaki konu, ARIMA ve SARIMAX'ın entegre bölümünü açıklamaktır. Otomatik gerileyen ve hareketli ortalama modellerin çalışması için verilerin durağan olması gerekir. Bu, verilerin trendlere veya mevsimselliğe sahip olmaması gerektiği anlamına gelir. Entegrasyon, her bir değerden önceki değeri çıkararak zaman serilerinden bir fark alıyor ve bu da verileri daha durağan hale getirme eğiliminde. Verilerin kaç kez farklılaştırılacağını temsil eden "d" adlı bir değer vardır. Otomatik gerileyen modeldeki p değeri gibi, d için birkaç farklı değeri denemek ve hangi modelin minimum AIC'ye sahip olduğunu görmek en iyisidir.
Şimdi ARIMA ve SARIMAX'ın hareketli ortalama kısmını açıklayacağım. Hareketli ortalama (MA) modeli, verilerin eğimi ile birlikte verilerdeki gürültüye dayalı hesaplamalar yapar. Bir MA modeli için formül aşağıda bulunabilir .² “µ”, X'in ortalamasını ve “Θ” modelin parametrelerini temsil eder.²
AR ve MA'yı farklılaştırma (I) ile birleştirmek ARIMA modelini oluşturur. Sıra olan hareketli ortalama modelinde "q" adlı bir değer vardır. Sıra, denkleme konulacak geçmiş veri noktalarının miktarı olduğu otomatik gerileme sırasına benzer.
SARIMAX, mevsimsel döngülere sahip veri setlerinde kullanılır. ARIMA ve SARIMAX arasındaki fark, mevsimsellik ve eksojen faktörlerdir (mevsimsellik ve normal ARIMA iyi karışmaz). Bunlar biraz karmaşıktır, ancak önemli olan şey, SARIMAX'ın yalnızca ARIMA'nın gerektirdiği p, d ve q argümanlarını değil, aynı zamanda mevsimsellik yönü için başka bir p, d ve q argümanları seti gerektirmesidir. verilerin mevsimsel döngüsünün periyodikliği olan "s" adlı bir argüman. Bir s değerini seçerken, mevsimsel verilerin ne zaman döndüğüne dair fikir edinmeye çalışın. Veri noktalarınız aylık olarak ayrılıyorsa ve mevsimsel döngü bir yılsa, s'yi 12'ye ayarlayın. Veya veri noktaları günlük olarak ayrılıyorsa ve mevsimsel döngü bir haftaysa, s'yi 7'ye eşit yapın.
SARIMAX'ın "s" değeri dışındaki tüm değerler için, bir ızgara araması kullanmanızı öneririm, bu, python'daki itertools kitaplığıyla kullanılabilir. Bir ARIMA modeli için grid aramasının neye benzeyeceğini açıklayarak başlayacağım. Şebeke arama, hangi parametre kombinasyonunun en iyi olduğunu kontrol etmenin bir yolu olarak temelde farklı parametrelere sahip birden çok model çalıştırmaktır. Python'da Önce bir liste ve bir sözlük oluşturun. Sözlük, modellerden AIC değerlerini anahtar olarak saklayacak ve modellerin sırasını değerler olarak alacaktır. Liste, farklı modelleri çalıştırarak elde edilecek AIC değerlerinin bir listesi olacaktır. P, d ve q adlı üç değişken oluşturun ve bunları 0 ile 2 arasında bir aralığa ayarlayın. Ardından, p, d ve q'nun tüm olası kombinasyonlarını bulmak için itertools'un ürün yöntemini kullanın ve bunu bir değişkene ayarlayın. Daha sonra her p, d ve q kombinasyonunu yinelemek için ARIMA yöntemini çağırırken bir for döngüsü kullanın. AIC modellerini bulun ve bunu AIC listesine ekleyin ve sözlüğü her bir AIC modeli ve kullanılan parametre seti ile güncelleyin. Son olarak, AIC'ler listesinde minimum değeri bulun ve ardından bu anahtarı sözlükte bulun. Ortaya çıkan anahtar, bir model oluşturmak için en uygun sıra olacaktır.
Bir ARIMA modelini çalıştırmak için iki argüman vardır: gerçek veriler ve sıra. Sıra, p, d ve q içeren bir demettir. Modeli çalıştırmak için basitçe statsmodels.tsa.arima_model'deki sınıftan bir ARIMA nesnesi örneği oluşturun. Örnekleme üzerine argümanları (veri ve sıra) ayarlayın ve ardından ".fit ()" çağırarak modeli uydurun, bunu her argüman kombinasyonu için yapın ve AIC'yi yukarıda bahsedilen liste ve sözlüklere kaydedin. Modelin AIC'sini bulmak için modelin örnek değişkenini alın ve AIC'yi döndürmek için ".aic" çağırın. Aşağıda bir ARIMA modeli oluşturmanın bir örneği bulunmaktadır.
from statsmodels.tsa.arima_model import ARIMA import itertools # Grid Search p = d = q = range(0,3) # p, d, and q can be either 0, 1, or 2 pdq = list(itertools.product(p,d,q)) # gets all possible combinations of p, d, and q combs = {} # stores aic and order pairs aics = [] # stores aics # Grid Search continued for combination in pdq: try: model = ARIMA(data, order=combination) # create all possible models model = model.fit() combs.update({model.aic : combination}) # store combinations aics.append(model.aic) except: continue best_aic = min(aics) # Model Creation and Forecasting model = ARIMA(data, order=combs[best_aic]) model = model.fit() model.forecast(7)[0]
import statsmodels.api as sm import itertools # Grid Search p = d = q = range(0,3) # p, d, and q can be either 0, 1, or 2 pdq = list(itertools.product(p,d,q)) # gets all possible combinations of p, d, and q p2 = d2 = q2 = range(0, 2) # second set of p's, d's, and q's pdq2 = list(itertools.product(p2,d2,q2)) # simular too code above but for seasonal parameters s = 12 # here I use twelve but the number here is representative of the periodicty of the seasonal cycle pdqs2 = [(c[0], c[1], c[2], s) for c in pdq2] combs = {} aics = [] # Grid Search Continued for combination in pdq: for seasonal_combination in pdqs2: try: model = sm.tsa.statespace.SARIMAX(data, order=combination, seasonal_order=seasonal_combination, enforce_stationarity=False, enforce_invertibility=False) model = model.fit() combs.update({model.aic : [combination, seasonal_combination]}) aics.append(model.aic) except: continue best_aic = min(aics) # Modeling and forcasting model = sm.tsa.statespace.SARIMAX(data, order=combs[best_aic][0], seasonal_order=combs[best_aic][1], enforce_stationarity=False, enforce_invertibility=False) model = model.fit() model.forecast(7)
Kaynaklar
Veri Bilimi terimi bir şekilde bir nedenden ötürü genel bir terimdir: Bir Veri Bilimcisi, Hadoop'u nasıl kullanacağını öğrenmeden araçlara ve tekniklere sahip olarak kariyerini mükemmel bir şekilde çalışabilir ve yürütebilir. Hadoop yaygın olarak kullanılmaktadır ve büyük veri depolaması için birincil çözüm olmasına rağmen, büyük veri kümelerini yönetmek ve işlemek için tek çözüm değildir.
Tekrar hoşgeldiniz! Dün, Python kullanarak herhangi bir web sitesinden nasıl veri kazıyacağımız hakkında konuştuk, devam edelim ve özellikle Amazon hakkında ve ondan nasıl veri kazıyacağımız hakkında konuşalım. Şimdi, Amazon'un bir API'si var, ancak bazen bir API kullanmamanın birçok faydası var (istek limitleri çok büyük bir nedendir), o yüzden başlayalım! Temel giriş Muhtemelen diğer makalemden kopyaladığımı atlayabilirsiniz. Öncelikle, Python'u yüklememiz gerekecek, Python ve bazı IDE'nin kurulu olduğundan emin olmak için makalemi buradan okuyun.
Öz bileşimi ve SVD için yararlı olan doğrusal cebir temel kavramını anlayın Bu makalede, öz ayrıştırma veya tekil değer ayrıştırma (SVD) gibi matris çarpanlara ayırma yöntemlerini anlamanın ilginç bir yolu olan temel kavramını öğreneceksiniz. Tanımlar Temel, vektör uzaylarını (vektör setleri) tanımlamak için kullanılan bir koordinat sistemidir.
Erasmus programında yer alan 200 bin öğrenim değişimiyle bir veri setini analiz etmenin sonuçları 2011–12 1987'den beri, Erasmus programı her yıl yüz binlerce Avrupalı öğrenciye yurt dışında, başka bir Avrupa ülkesinde bir yarıyıl veya bir yıl geçirme fırsatı vermektedir. onlara kolay bir değişim süreci ve ekonomik destek sunuyor. Zihinlerini ve kalplerini Avrupa'nın çeşitli insanlarına, dillerine ve kültürlerine açan gerçekten değerli bir deneyim.
İstatistik, "sayısal veri yığınlarının toplanması, analizi, yorumlanması ve sunulmasıyla ilgilenen bir matematik dalı" dır. Programlama ve makine öğrenimini bir araya getirin ve veri bilimi için temel becerilerin oldukça iyi bir tanımına sahipsiniz.
Denetimli veya denetimsiz birçok algoritma, mesafe ölçümlerinden yararlanır. Öklid mesafesi veya kosinüs benzerliği gibi bu önlemler genellikle k-NN, UMAP, HDBSCAN vb. Algoritmalarda bulunabilir.