Bir dizi girdi için hangi istatistiksel sınıflandırma algoritması doğru / yanlış tahmin edebilir?


15

Bir dizi girdi verildiğinde, bu dizinin istenen belirli bir özelliğe sahip olup olmadığını belirlemem gerekir. Özellik yalnızca doğru veya yanlış olabilir, yani bir dizinin ait olabileceği yalnızca iki olası sınıf vardır.

Dizi ve özellik arasındaki kesin ilişki belirsizdir, ancak bunun çok tutarlı olduğuna ve istatistiksel sınıflandırmaya uygun olması gerektiğine inanıyorum. Sınıflandırıcıyı eğitmek için çok sayıda vaka var, biraz gürültülü olsa da, bu eğitim setinde bir sıraya yanlış sınıf atanması ihtimali düşüktür.

Örnek eğitim verileri:

Sequence 1: (7 5 21 3 3) -> true
Sequence 2: (21 7 5 1) -> true
Sequence 3: (12 21 7 5 11 1) -> false
Sequence 4: (21 5 7 1) -> false
...

Kaba terimlerle, özellik dizideki değerler kümesi ile belirlenir (örneğin, bir "11" varlığı, özelliğin neredeyse kesinlikle yanlış olacağı anlamına gelir) ve değerlerin sırası (örn. "21 7 5 msgstr "mülkiyetin gerçek olma şansını önemli ölçüde artırır).

Eğitimden sonra, sınıflandırıcıya daha önce görülmemiş bir dizi verebilmeliyim (1 21 7 5 3)ve özelliğin gerçek olduğuna dair güvenini vermelidir. Bu tür girdi / çıktılarla bir sınıflandırıcıyı eğitmek için iyi bilinen bir algoritma var mı?

Saf Bayesian sınıflandırıcıyı düşündüm (bu, siparişin önemli olduğu gerçeğine uyarlanamaz, en azından girdilerin bağımsız olduğu varsayımını ciddi bir şekilde bozmadan). Ayrıca, giriş başına bir çıkış yerine yalnızca tek bir çıktı kullanılabilir olduğu için uygulanamayacak gibi görünen gizli Markov modeli yaklaşımını araştırdım. Ne kaçırdım?


Bir çift dizi arasındaki mesafeyi ölçmenin bir yolu var mı? Minimum ve / veya maksimum dizi uzunluğu biliniyor mu?
Craig Wright

@CraigWright Düşünebileceğim geçerli bir mesafe ölçüsü yok. 12 mertebesinde maksimum uzunluk ve minimum 4 civarında kabul edilebilir. Ayrıca, yaklaşık 30 farklı değer vardır (sınırsız doğallar değildir; sadece oldukça küçük olasılıklar kümesi)
Roman Starkov 21

Bahsettiğiniz çoklu yanıt değişkenleriniz nelerdir? Ben bu ikili bir çıkış olduğu için sorununuzu okuyordum ve belki de sadece
B_Miner

@B_Miner HMM'nin nasıl çalıştığını yanlış anlıyor olabilirim, ancak şu şekilde çalışıyor gibi görünüyor: Giriş dizimi (abcde) ile besliyorum ve en iyi eşleşen gizli bir dizi (yani 'b' c 'd' e ') çıktı ). Sahte değişkenlerin bunu çözeceğini düşünmüyorum; Tüm dizi için doğru / yanlış bir sınıflandırma gerekir.
Roman Starkov

@romkyns, bir HMM böyle çalışmaz. HMM olasılıklı bir süreçtir. Bir dizi verilen ve HMM , bu olasılık hesaplayabilir çıktılayacaktır (, ileri algoritması dinamik programlama kullanılarak) dönüştürülmüştür. Ayrıca, bir dizi eğitim dizisi verildiğinde, bu eğitim dizilerini (Baum-Welch algoritmasını kullanarak) üretme olasılığı en yüksek olan HMM bulabilirsiniz . Yani HMM'ler burada denenecek bir şey olabilir. Yine de doldurmanız gereken bazı ayrıntılar olacak. M M s MsMMsM
DW

Yanıtlar:


10

Saf Bayes sınıflandırıcısına benzer, ancak daha zayıf varsayımlarla olasılıksal yaklaşımları deneyebilirsiniz. Örneğin, güçlü bağımsızlık varsayımı yapmak yerine, bir Markov varsayımı yapın:

p(xc)=p(x0c)tp(xtxt1,c)

x c = 1 c = 0c sınıf etiketiniz, sizin sıranızdır. Biri ve diğeri için olmak üzere iki koşullu dağılım tahmin etmeniz gerekir .xc=1c=0

Bayes kuralı ile:

p(c=1x)=p(xc=1)p(c=1)p(xc=1)p(c=1)+p(xc=0)p(c=0).

için hangi dağılımları seçeceğiniz , diziler hakkında hangi diğer varsayımları yapabileceğinize ve elinizde ne kadar veri bulunduğuna bağlıdır.p(xtxt1,c)

Örneğin, şunları kullanabilirsiniz:

p(xtxt1,c)=π(xt,xt1,c)iπ(xi,xt1,c)

Bunun gibi dağılımlarda, dizilerinizde 21 farklı sayı için parametre artı parametre tahmin etmeniz gerekir. artı için parametre .21212=882π(xt,xt,c)212=42p(x0c)2p(c)

Modelinizin varsayımları karşılanmazsa, örneğin ortalama günlük kaybını en aza indirerek, sınıflandırma performansına göre parametrelerin doğrudan ince ayarını yapmanıza yardımcı olabilir.

1#D(x,c)Dlogp(cx)

degrade iniş kullanarak.


(+1) Bunu beğendim. Ancak, tüm için güvenilir tahminler elde etmek için çok miktarda veri gerekebilirp(xt|xt1,c)
steffen

İlgili dağıtımlar hakkında daha fazla varsayımlarda bulunabiliyorsanız, çok daha az parametreyle kurtulabilirsiniz. Örneğin, nin binom olduğunu ve olsaydınız, her değeri için bir tane olmak üzere sadece iki parametre tahmin etmek . Elbette, herhangi bir varsayımda bulunamazsanız ve yeterli veriye sahip değilseniz, yapabileceğiniz çok şey yoktur. Ücretsiz öğle yemeği yok. E [ x tx t - 1 , c ] = x t - 1 cp(xtxt1,c)E[xtxt1,c]=xt1c
Lucas

6

Bazı özellikleri tanımlamanızı ve daha sonra bu özelliklere uygulamak için bir makine öğrenme algoritması seçmenizi öneririm.

Özellikler: Temel olarak, her özellik belirli bir diziden hesaplanabilecek ve dizinin özelliğe sahip olup olmadığı ile ilgili olabileceğini düşündüğünüz bir şey olmalıdır. Açıklamanıza dayanarak, aşağıdakiler gibi özellikleri düşünebilirsiniz:

  • "Rakamlar çantası". Sekansta olası her sayının kaç kez göründüğünü sayabilirsiniz. Örneğin, her sekansın yalnızca 1-30 arasındaki sayılardan oluştuğunu varsayalım. Sonra 30 özellik oluşturabilirsiniz; inci özelliği sayımları kaç kez sayı sırayla görünür. Örneğin, dizi özellik vektörünü (0,0,2,0,1,0,1,0, ..., 0,1,0, ..., 0) oluşturur.benii(7 5 21 3 3)

  • "Çanta çantası." Digram bir çift ardışık sayıdır. Bir dizi verildiğinde, tüm diyagramlarını çıkarabilirsiniz. Sonra her olası digramın kaç kez göründüğünü sayabilirsiniz. Örneğin, dizi (7 5 21 3 3)olarak digrams olarak aşağıdaki sahiptir: 7 5, 5 21, 21 3ve 3 3. Sekansın 1-30 sayılarından oluştuğunu varsayarsak, olası digram vardır, bu nedenle özellik elde edersiniz . Bir dizi verildiğinde, bu özellik vektörünü oluşturabilirsiniz.30 2302302

  • "Çanta trigram." Orijinal diziden ardışık üç sayının bir sırası olan trigramları da düşünebilirsiniz. Yukarıdaki ile aynı şeyi yapabilirsiniz.

Yukarıdaki özellikleri kullanırsanız, her sekanstan özelliklerini ayıklayabilirsiniz . Diğer bir deyişle, her diziye, özelliklerin toplanması olan boyutlu bir vektörü ilişkilendirirsiniz . Bunu yaptıktan sonra, orijinal dizileri atabilirsiniz. Örneğin, egzersiz setiniz bir grup girdi / çıktı çifti haline gelir; burada girdi özellik vektörüdür (egzersiz setinizden bir sıralamaya karşılık gelir) ve çıktı bir boole'dir (bu sıranın özelliğe sahip olup olmadığını gösterir) . dd=30+302+303d

Yukarıdaki fikrin bir başka varyasyonu, "X torbası" yerine "X kümesi" kullanmaktır. Örneğin, yerine her sayı kaç kez sayma görünür, sadece numara olup olmadığını gösteren bir boolean oluşturabilir bir kez ya da az değil de görünmüştür. Bu daha iyi sonuçlar verebilir veya vermeyebilir. Genel olarak, hangilerinin en iyi sonuçları verdiğini anlamak için kullandığınız özelliklerle deneyebilirsiniz (örneğin, "trigram torbasını" düşürürsünüz; veya belki denemek için başka fikirlerle de karşılaşabilirsiniz) .benii

Makine öğrenimi algoritması: Bir makine öğrenimi algoritmasının nasıl seçileceği konusunda size tavsiyede bulunmak için yeterli değilim; birçok olasılık var. Ancak genel olarak, öğrenme algoritmasını eğitim setinize (özellik / booleans giriş / çıkış çiftleri) uygulayacak ve test setindeki değerlerden hangisinin özelliğe sahip olduğunu tahmin etmek için kullanmaya çalışacaksınız. Makine öğrenimi algoritması seçiminiz, eğitim setinin boyutunun (özellik sayısı) göre nasıl karşılaştırıldığı da dahil olmak üzere çeşitli faktörlere bağlı olabilir . En iyi seçeneğiniz birkaç makine öğrenme algoritması denemek ve hangisinin en iyi sonucu verdiğini görmek olabilir. Denediğiniz algoritmalardan biri olarak Destek Vektör Makineleri'ni (SVM'ler) dahil etmek isteyebilirsiniz.d


Gerçekte uyguladığım ilk girişim, saf bayes sınıflamasına sahip bir "trigram torbası" idi. Sonuçlar cesaret verici ama harika değil. Bunun trigramların hiç de bağımsız olmadığı gerçeğiyle ilgili olabileceğini düşündüm: Eğer "1 2 3" varsa "2 3 *" trigramım da olur. Belki de biraz daha kesin özellikleri denemeliyim.
Roman Starkov

Hem farklı özellik kümeleri hem de farklı öğrenme algoritmaları ile daha fazla deneme yapmak iyi bir fikirdir. Ayrıca, sorun açıklamanıza dayanarak, her bir numaranın görünümü için özellikler eklemek isteyebilirsiniz (sadece trigram torbası değil, kelime torbası): sadece trigramlar kullanırsanız, makine öğrenme algoritmasının öğrenmesini zorlaştırırsınız "11 içeren diziler neredeyse kesinlikle mülke sahip değildir" gibi gerçekler.
DW

2

Etkin bir şekilde yaptığınız zaman serileri üzerinde hipotez testidir. HMM'ler sizin için çalışır, ancak bunları kendi durumunuza uyarlamanız gerekir.

Dürüst olmak gerekirse, tespit etmeye çalıştığınız şeyin bir tür matematiksel açıklamasını yazamıyorsanız, çok uzağa gitmeyeceksiniz. Belki bize ne tür bir özellik görmeyi beklediğinizi söyleyebilirsiniz?


1
Makine öğrenimi bize neyi arayacağımız hakkında hiçbir fikrimiz olmadan çok uzağa gidebileceğimizi gösterdi.
bayerj

1

Sekansta maksimum 12 uzunluk verildiğinde, 12 girişli ve bir çıkışlı bir sinir ağı çalışabilir, ancak her sekansın ucunu sıfır veya eylemsiz bir değerle doldurmanız gerekir.


1

Bayesian ağlarını kullanmayı denediniz mi? Rastgele bir değişkenin olasılıklarına ulaşmak için birden fazla veri kaynağını (her seferinde bir tane) birleştirmem gerektiğinde ilk düşündüğüm şey bu.

Bayes ağları, saf Bayes'in yaptığı bağımsızlık varsayımına dayanmaz.

BTW, gizli Markov modelleri Bayes ağlarının özel bir örneğidir.

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.