Öğrenme algoritmaları arasında nasıl seçim yapılır


21

Bazı eğitim verilerine dayanarak kayıtları 2 kategoride (doğru / yanlış) sınıflandıracak bir program uygulamam gerekiyor ve hangi algoritmaya / metodolojiye bakmam gerektiğini merak ediyordum. Seçilebilecek birçoğu var - Yapay Sinir Ağı, Genetik Algoritma, Makine Öğrenmesi, Bayes Optimizasyonu vs., ve nereden başlayacağımı bilmiyordum. Yani benim sorularım: Sorunum için kullanmam gereken bir öğrenme algoritmasını nasıl seçmeliyim?

Bu yardımcı olursa, burada çözmem gereken sorun var.


Eğitim verileri:
Eğitim verileri aşağıdaki gibi birçok satırdan oluşur:

Precursor1, Precursor2, Boolean (true/false)

Koşmak
Ben öncüleri bir demet verilecektir.
Sonra,

  1. Farklı algoritmalardan bir algoritma A seçiyorum (veya dinamik olarak bir algoritma oluşturuyorum) ve onu bu öncüllerin olası her bir kombinasyonuna uyguladım ve yayılan "kayıtları" topladım. "Kayıt" birkaç anahtar / değer çiftinden oluşur *.
  2. Bazı harika algoritmalar uyguluyorum ve bu kayıtları 2 kategoride sınıflandırdım (doğru / yanlış).

  3. Tren verileriyle aynı formatta bir tablo oluşturacağım:
    Precursor1, Precursor2, Boolean

Ve bütün program doğru yaptığım doğru / yanlış sayısına göre puanlanır.

*: "Tutanak" lar bu şekilde görünecek (umarım bu mantıklı olur)

Record         [1...*] Score
-Precursor1             -Key
-Precursor2             -Value

Sadece sınırlı sayıda Anahtar var. Kayıtlar bu anahtarların farklı alt kümelerini içerir (bazı kayıtlarda anahtar1, anahtar2, anahtar3 ... diğer kayıtlarda anahtar3, anahtar4 ... vs. vardır).

Aslında 2 öğrenmeye ihtiyacım var. Birincisi adım 1 içindir. Öncü çiftlerine vb. Bakan bir modüle ihtiyacım var ve karşılaştırma için bir kayıt çıkarmak için hangi algoritmanın uygulanacağına karar vermem gerekiyor. Bir diğeri adım 2 içindir. Kayıtların koleksiyonunu analiz eden ve bunları 2 kategoride kategorize eden bir modüle ihtiyacım var (doğru / yanlış).

Şimdiden teşekkür ederim!

Yanıtlar:


16

"İçin bir paket var R " olarak adlandırılan" şapka"Sınıflandırma ve regresyon testi" anlamına gelen . Verilerinize bir düzine kadar farklı öğrenme algoritması uygulamanıza ve daha sonra bunların her birinin ne kadar doğru olduğunu tahmin etmenize izin vermeniz için kolayca onaylayacağından, başlamanız için iyi bir yer olacağını düşünüyorum.

İşte kendi verilerinizle / diğer yöntemlerle değiştirebileceğiniz bir örnek:

install.packages('caret',dependencies = c('Depends','Suggests'))
library(caret)

set.seed(999)
Precursor1 <- runif(25)
Precursor2 <- runif(25)
Target <- sample(c('T','F'),25,replace=TRUE)
MyData <- data.frame(Precursor1,Precursor2,Target)
str(MyData)

#Try Logistic regression
model_Logistic <- train(Target~Precursor1+Precursor2,data=MyData,method='glm')

#Try Neural Network
model_NN <- train(Target~Precursor1+Precursor2,data=MyData,method='nnet',trace=FALSE)

#Try Naive Bayes
model_NB <- train(Target~Precursor1+Precursor2,data=MyData,method='nb')

#Try Random Forest
model_RF <- train(Target~Precursor1+Precursor2,data=MyData,method='rf')

#Try Support Vector Machine
model_SVM<- train(Target~Precursor1+Precursor2,data=MyData,method='svmLinear')

#Try Nearest Neighbors
model_KNN<- train(Target~Precursor1+Precursor2,data=MyData,method='knn')

#Compare the accuracy of each model
cat('Logistic:',max(model_Logistic$results$Accuracy))
cat('Neural:',max(model_NN$results$Accuracy))
cat('Bayes:',max(model_NB$results$Accuracy))
cat('Random Forest:',max(model_RF$results$Accuracy))
cat('Support Vector Machine:',max(model_SVM$results$Accuracy))
cat('Nearest Neighbors:',max(model_KNN$results$Accuracy))

#Look at other available methods
?train

Başka bir fikir, verilerinizi bir eğitim setine ve bir test setine bölmek ve ardından her bir modelin test setinde nasıl bir performans gösterdiğini karşılaştırmak olacaktır. İstersen nasıl yapılacağını sana gösterebilirim.


8

TXYI .

Y

P(Y|T,X,I)

Şimdi, nasıl hesaplanacağını bildiğimiz şeylere müdahale etmek için olasılık teorisinin herhangi bir kuralını kullanabiliriz. Yani Bayes teoremini kullanarak, şunları elde edersiniz:

P(Y|T,X,I)=P(Y|T,I)P(X|Y,T,I)P(X|T,I)

P(Y|T,I)YY

P(X|Y,T,I)P(X|T,I)YY¯Y

O(Y|T,X,I)=P(Y|T,X,I)P(Y¯|T,X,I)=P(Y|T,I)P(Y¯|T,I)P(X|Y,T,I)P(X|Y¯,T,I)

Y

P(X|Y,T,I)θY

P(X|Y,T,I)=P(X,θY|Y,T,I)dθ=P(X|θY,Y,T,I)P(θY|Y,T,I)dθY

P(X|θY,Y,T,I)=P(X|θY,Y,I)TP(θY|Y,T,I)Modeldeki parametrelerin posterior dağılımıdır - bu, eğitim verilerinin belirleyeceği kısımdır. Ve bu muhtemelen işin çoğunun gideceği yer.

θYMbenθY(ben), ve denklem olur:

P(X|Y,T,ben)=ΣbenP(Mben|Y,T,ben)P(X|θY(ben),Mben,Y,T,ben)P(θY(ben)|Mben,Y,T,ben)dθY(ben)
Nerede
P(Mben|Y,T,ben)=P(Mben|Y,ben)P(θY(ben)|Mben,Y,ben)P(T|θY(ben),Mben,Y,ben)dθY(ben)

(NOT: Mben"ith modeli düşünülen kümedeki en iyisidir" şeklinde bir öneridir. ve eğer modeller üzerinden bütünleşiyorsanız uygunsuz önceliklere izin verilmez - sonsuzluklar bu durumda iptal olmaz ve anlamsız kalırsınız.

Now, up to this point, all results are exact and optimal (this is the option 2 - apply some awesome algorithm to the data). But this a daunting task to undertake. In the real world, the mathematics required may be not feasible to do in practice - so you will have to compromise. you should always "have a go" at doing the exact equations, for any maths that you can simplify will save you time at the PC. However, this first step is important, because this sets "the target", and it makes it clear what is to be done. Otherwise you are left (as you seem to be) with a whole host of potential options with nothing to choose between them.

Now at this stage, we are still in "symbolic logic" world, where nothing really makes sense. So you need to link these to your specific problem:

  1. P(Mi|Y,I) is the prior probability for the ith model - generally will be equal for all i.
  2. P(θY(i)|Mi,Y,I) is the prior for the parameters in the ith model (must be proper!)
  3. P(T|θY(i),Mi,Y,I) is the likelihood function for the training data, given the ith model
  4. P(θY(i)|T,Mi,Y,I) is the posterior for the parameters in the ith model, conditional on the training data.
  5. P(Mi|Y,T,I) is the posterior for the ith model conditional on the training data

There will be another set of equations for Y¯

Note that the equations will simplify enormously if a) one model is a clear winner, so that P(Mj|Y,T,I)1 and b) within this model, its parameters are very accurate, so the integrand resembles a delta function (and integration is very close to substitution or plug-in estimates). If both these conditions are met you have:

P(X|Y,T,I)P(X|θY(j),Mj,Y,T,I)θY(j)=θ^Y(j)

Which is the "standard" approach to this kind of problem.

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.