Ticarette makine öğrenimi: teori, pratik, ticaret ve daha fazlası - sayfa 2650

 
mytarmailS #:

Sembolik regresyon kullanın, diğer algoritmaların önerdiklerini değil, tam olarak ne istediğinizi tasarlayın.

Biliyorsun Rku, bir paket var, örnekler var, her şey daha önce ve bizim için yapıldı.

Üzerinde çalışıyorum. Henüz kase yok)

 
elibrarius #:
Eğer sadece 1 ve 2 etkileşime girebiliyorsa. Ya da 3,4,5. O zaman ilk bölünmeden sonra, örneğin 3'te, sonraki tüm bölünmeler sadece 3,4,5 kümesinden olacaktır.
Bunun basitçe 1,2 ve 3,4,5 kümelerinden 2 ağaç oluşturduğunu varsayıyorum. Eğer 10 küme varsa, o zaman 10 ağaç vardır. Ve böyle devam eder.

Grupları gruplar halinde birleştirmek de mümkündür - bir ağaç elde edersiniz (listelerin listelerinin listelerinin listelerinin listesi ...).

Bizim durumumuzda bu tür gruplar oluşturmanın genel ilkesi oldukça açık değildir.

 
Aleksey Nikolayev #:

Üzerinde çalışıyorum. Henüz kase yok).

GrammEvol paketinde uzmanlaşıyor musunuz?

 
mytarmailS #:
GrammEvol paketini mi alıyorsunuz?

gramEvol? Gramerler açısından, kuralların optimize edilmesi gereken sayısal parametrelere sahip olduğu parametrik gramerlere ihtiyacınız var. İlk bakışta bunları pakette göremedim. Sadece x1-x2*x3<0 kurallarını değil, A<x1-x2*x3<B biçimindeki tüm olası kuralları elde etmek istiyorum,burada x1, x2, x3 tahmin ediciler, A ve B parametr elerdir.

Hayır, Rcpp ile en düşük seviyede uğraşıyorum, doğru matematiği bulmaya çalışıyorum.

 
Aleksey Nikolayev #:

İlk bakışta pakette göremedim.

Her şey orada. Aklınıza gelebilecek her şey orada uygulanabilir.

Vinyetlerdeki örneklere bakın, sorularda yazarın gthub'ına bakın, orada da kurallar hakkında birçok soru sordum
 
mytarmailS #:
Her şey orada. Aklınıza gelebilecek her şey orada gerçekleştirilebilir.

Vinyetlerden örneklere bakın, sorularda yazarın gthub'ına bakın, orada da kurallarla ilgili birçok soru sordum

Teşekkürler, zamanım olduğunda daha yakından bakacağım.

 
Aleksey Nikolayev #:

Teşekkürler, zamanım olduğunda daha yakından bakacağım.

Bu aslında bir kod kurucusudur, sadece ihtiyacınız olan öğeleri ayarlarsınız.

Yani, döngülerle, dizilerle, her şeyle, gerçek kodu kendisi yazabilir....

Ve kod yazabildiği için, her şeyi yazabilir, tek sınır hayal gücünüzdür, ve tabii ki tümdengelim gücünüz.

 
Aleksey Nikolayev #:

gramEvol? Gramerler açısından bakarsak, kuralların optimize edilmesi gereken sayısal parametrelere sahip olduğu parametrik gramerlere ihtiyacımız var. İlk bakışta bunları pakette göremedim. Sadece x1-x2*x3<0 kurallarını değil, A<x1-x2*x3<B biçimindeki tüm olası kuralları almak istiyorum,burada x1, x2, x3 tahmin ediciler, A ve B parametr elerdir.

Hayır, Rcpp ile en düşük seviyede uğraşıyorum, doğru matematiği bulmaya çalışıyorum.

Sizi doğru anladım mı bilmiyorum, kafamı biraz monitöre vurarak basit bir örnek yazdım.

library(gramEvol)
ruleDef <- list(
  logyc_exp     = grule(comparison(big_math_expr, parameters)),
  comparison    = grule(">=","<=","!=","=="),
  parameters    = grule(100,200,300),  #   A и B - параметры.
  
  
  big_math_expr = grule( math_expr,  math_oper(math_expr, math_expr)),
  math_expr     = grule(math_oper(predictors, predictors)),
  math_oper     = grule("+", "-", "*","/"),
  predictors    = grule(x1,x2,x3,x4) #   где x1, x2, x3 - предикторы
  )

grammarDef <- CreateGrammar(ruleDef)
GrammarRandomExpression(grammarDef,numExpr = 10)

İstediğiniz bu muydu?

[[1]]
expression(x4 * x1 + (x2 + x4) <= 100)

[[2]]
expression(x1/x3 * (x4/x1) >= 300)

[[3]]
expression(x2/x1 + x1 * x1 != 300)

[[4]]
expression(x4 - x3 + (x3 + x1) != 100)

[[5]]
expression(x2/x1/(x2 + x1) != 300)

[[6]]
expression(x3/x1 + (x3 + x3) >= 100)

[[7]]
expression(x1 * x1 >= 200)

[[8]]
expression(x3/x2 - x3/x2 <= 100)

[[9]]
expression((x3 + x4)/(x4 - x1) <= 300)

[[10]]
expression(x3/x1 <= 200)
 
mytarmailS #:

Sizi doğru anladım mı bilmiyorum, kafamı biraz monitöre vurduktan sonra basit bir örnek yazdım.

İstediğin bu muydu?

Öyle görünüyor, ancak parametrelerin rastgele bir gerçek sayı değil, yalnızca birkaç belirli değer alabileceği anlaşılıyor.

 
Aleksey Nikolayev #:

Benzer, ancak parametrelerin rastgele bir gerçek sayı değil, yalnızca birkaç belirli değer alabileceği görülüyor.


my_var <- round(seq(-10,10,length.out = 100),2)

library(gramEvol)
ruleDef <- list(
  logyc_exp     = grule(comparison(big_math_expr, parameters)),
  comparison    = grule(">=","<=","!=","=="),
  #parameters    = grule(100,200,300),  #   A и B - параметры.
  parameters    = do.call(gsrule, as.list(my_var)),  #   A и B - параметры.
  
  
  big_math_expr = grule( math_expr,  math_oper(math_expr, math_expr)),
  math_expr     = grule(math_oper(predictors, predictors)),
  math_oper     = grule("+", "-", "*","/"),
  predictors    = grule(x1,x2,x3,x4) #   где x1, x2, x3 - предикторы
)

grammarDef <- CreateGrammar(ruleDef)
GrammarRandomExpression(grammarDef,numExpr = 10)
[[1]]
expression(x1 - x2 != 9.6)

[[2]]
expression(x3 + x1 != 9.8)

[[3]]
expression(x2 - x1 - x1 * x1 == 9.8)

[[4]]
expression(x4/x3 - (x2 - x3) != 8.59)

[[5]]
expression(x4 + x2 >= -8.18)

[[6]]
expression((x1 - x4)/(x3 * x2) <= 6.57)

[[7]]
expression(x2 - x1 >= 1.92)

[[8]]
expression(x1 * x3 + x3/x4 != -2.93)


Bu daha mı iyi?


=====================

İfadeleri karmaşık hale de getirebilirsiniz

library(gramEvol)
ruleDef <- list(
  
  final_exp     = grule(logyc_exp , logyc_exp | logyc_exp , logyc_exp & logyc_exp),
  
  
  logyc_exp     = grule(logyc_oper(big_math_expr, parameters),
                        logyc_oper(big_math_expr, big_math_expr)),
  
  
  logyc_oper    = grule(">=","<=","!=","=="),
  parameters    = do.call(gsrule, as.list(my_var)),  #   A и B - параметры.
  
  
  big_math_expr = grule( math_expr,  math_oper(math_expr, math_expr)),
  math_expr     = grule(math_oper(predictors, predictors)),
  math_oper     = grule("+", "-", "*","/"),
  predictors    = grule(x1,x2,x3,x4) #   где x1, x2, x3 - предикторы
)

grammarDef <- CreateGrammar(ruleDef)
GrammarRandomExpression(grammarDef,numExpr = 10)
[[1]]
expression(x3 * x2 <= x2 * x3 - (x4 - x4))

[[2]]
expression(x2/x1 != x3 - x1 | (x1 + x3)/(x1 * x3) >= -9.6)

[[3]]
expression(x4 + x3 - (x2 - x2) >= 3.94 & x3 * x2 * (x1 - x3) == x2 * x1)

[[4]]
expression(x3 * x3 - x2 * x4 == -6.97)

[[5]]
expression(x4 * x4 - (x1 + x4) <= x4/x4 - x3/x2 | (x3 + x1)/(x4 - x1) >= x2 * x3)

[[6]]
expression(x2 + x3 + x2/x1 != -3.74)

[[7]]
expression((x1 - x2)/(x2 + x1) <= (x3 - x3)/(x2 - x1) & x4/x2 - x4 * x2 <= 6.97)