Zaman serisi sınıflandırması - çok kötü sonuçlar


11

Girişin bir cep telefonu hesabının ilk 21 günü için zaman serisi ses kullanım verileri (saniye cinsinden) olduğu bir zaman serisi sınıflandırma problemi üzerinde çalışıyorum. İlgili hedef değişken, söz konusu hesabın 35-45 günlük aralıkta iptal edilip edilmediğidir. Bu bir ikili sınıflandırma problemidir.

Şimdiye kadar denediğim yöntemlerden (değişen derecelerde) çok kötü sonuçlar alıyorum. Önce k-NN sınıflandırmasını denedim (çeşitli değişikliklerle) ve son derece kötü sonuçlar aldım. Bu beni zaman serisinden özellikler çıkarmaya yönlendirdi - yani ortalama, varyans, maks, min, toplam sıfır gün, toplam son sıfır gün, ilk yarı ortalama ile ikinci yarı ortalama arasındaki fark, vb. Ve en öngörücü özellikler toplam gibi görünüyordu. sıfır gün ve toplam izleyen sıfır gün (birkaç sınıflandırma algoritması kullanarak). Bu en iyi performansı gösterdi ancak performans hala çok iyi değildi.

Bir sonraki stratejim, eğitim setimdeki olumsuz örnekleri çok az örneklemekten ötürü fazla örneklemekti. Bu, daha doğru iptal tahmini ile sonuçlandı, ancak daha yanlış pozitifler pahasına.

Belki de zaman serisi kullanım verilerinin kendisinin sadece çok öngörücü olmadığını düşünmeye başlıyorum (sağduyu olması gerektiğini söylüyor). Belki de düşünmediğim gizli bir değişken var. Verilere bakmak da bazı garip davranışlar gösteriyor. yani bazı örnekler çok az veya azalan kullanım (veya bazen hiç yok) gösterir ve iptal etmez ve bazıları iptal eden kullanımda bir artış gösterir. Belki de bu çelişkili davranış, bir sınıflandırıcı için çok açık bir karar sınırı oluşturmaz.

Hata için bir başka olası kaynak, birçok eğitim örneğinin çok seyrek olmasıdır (yani 0 kullanımlı günler). Henüz denemediğim bir fikir, zaman serilerini bölümlere ayırmak ve bu şekilde bazı özellikler üretmek, ancak yüksek umutlarım yok.


1
Yeni başlayanlar için aşağıdakilerin çeşitlerini denemenizi öneririz. Kullanım verilerini saat / gün olarak toplayın. 2. Egzersiz verilerinizden, iki grup içindeki desenleri görmek için bu zaman serilerinin grafiklerini ekleyin. 3. Verilerinize uygun çeşitli zaman serisi / regresyon modellerini keşfedin. 4. Sınıflandırıcı için özellikler olarak model katsayılarını kullanın.
ramhiser

Özellik çıkarma tekniğinizi seviyorum. Deneyeceğim. Verilerimin kalıp bulmak için çok seyrek olduğuna ikna oldum, ama kim bilir. Teşekkürler!
user1893354

Yanıtlar:


13

Mesafe ölçümü olarak Dynamic Time warping ile KNN'yi uygulamakta oldukça başarılı oldum.

Araştırmam (pdf) bu yaklaşımın yenilmesinin çok zor olduğunu gösteriyor. Aşağıdaki şema github üzerinde KNN ve DTW'nin python uygulamamdan . Veya IPython Not Defteri'nde görüntüleyin

KNN ve DTW

Eğitim veri kümesi çok büyükse, mesafe matrisinin hiyerarşik bir kümelenmesini gerçekleştirmenizi öneririm. Daha sonra daha küçük egzersiz veri setinizi üretmek için istenen kümelerden örnek alın. Verilerinizde hclustçok çeşitli zaman serisi özelliklerini temsil eden zaman serilerine sahip olmanızı sağlar.


4
Araştırma makalenizin bağlantısını güncelleyebilir misiniz?
tilaprimera


10

Zaman serileri sınıflandırmasına iki yaklaşım

Sınıflandırma görevleri için zamansal yapılandırılmış girdiyle nasıl başa çıkılacağının iki yolu vardır:

  1. Özel Zaman Serisi Modeli: Makine öğrenme algoritması zaman serilerini doğrudan birleştirir. Bu kategoride KNN'yi DTW modeliyle sayıyorum.
  2. Özellik tabanlı yaklaşım: Burada zaman serileri başka, muhtemelen daha düşük boyutlu bir gösterime eşlenir. Bu, özellik çıkarma algoritmasının zaman serisinin ortalama veya maksimum değeri gibi özellikleri hesapladığı anlamına gelir. Özellikler daha sonra bir sinir ağı, rastgele orman veya destek vektör makinesi gibi bir "normal" makine öğrenimine bir özellik matrisi olarak geçirilir. Bu yaklaşım, sonuçların daha iyi açıklanabilir olması avantajına sahiptir. Ayrıca, iyi gelişmiş bir gözetimli makine öğrenimi teorisi kullanmamızı sağlar.

Ayrıca geçmişte KNN'yi DTW ile başarıyla konuşlandırıyordum. Ancak, neredeyse her zaman iyi tasarlanmış özellikleri kullanan bir modelle doğruluğunu yenebildim. Ayrıca, ikili sınıflandırmalar için DTW'li KNN, O (n_t · m_ {tren} · m_ {test}) ile ölçeklendirilir; n_t, sırasıyla zaman serisinin uzunluğu, mtrain ve mtest, tren ve test setindeki cihaz sayısıdır. . Bu, hesaplamaların oldukça uzun sürdüğü anlamına gelir.

Bu nedenle, özellik temelli bir yaklaşım izlemenizi tavsiye ederim.

tsfresh çok sayıda özelliği hesaplar

Python paketi tsfresh , zaman serilerini içeren bir pandadan böyle çok sayıda özelliği hesaplar. Dokümanlarını http://tsfresh.readthedocs.io adresinde bulabilirsiniz .

resim açıklamasını buraya girin

Çok miktarda özellik hesaplamak için deneyebilirsiniz. Daha sonra özellikleri önemlerine göre filtreleyebilir ve gelecek vaat eden adayları belirleyebilirsiniz.

Feragatname: Ben tsfresh'in yazarlarından biriyim.


Harika yazınız için çok teşekkürler. Gerçekten küçük bir zaman serim var (örneğin, zaman serisi başına 10 veri noktası). Bu durumda, veri kümem için tsfresh kullanmanızı önerir misiniz? Teşekkür ederim :)
EmJ
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.