Обсуждение статьи "Третье поколение нейросетей: "Глубокие нейросети"" - страница 2

 
vlad1949:

Вопрос не ко мне. Это всё что Вы хотели сказать о статье??

А что говорить про статью? Типичный рерайт. В других источниках всё тоже самое, только немного другими словами. Даже картинки те же самые. Ничего нового, т.е. авторского не увидел.

Хотел опробовать примеры, а тут облом. Раздел для MQL5, а примеры для MQL4.

 

vlad1949  

 Уважаемый Vlad!

Посмотрел архивы, у Вас довольно старая документация по R. Не плохо бы поменять на прилагаемые экземлпяры. 

Файлы:
Doc_R.zip  2181 kb
 

vlad1949  

 Уважаемый Vlad!

А почему не удалось запустить в тестере?

У меня все работает без проблем. Правда схема без индикатора: советник напрямую общается с R. 

 

Джефри Хинтон, изобретатель глубоких сетей: "Глубокие сети применимы только к тем данным где отношение сигнала к шуму большое. Финансовые ряды настолько зашумлены что глубокие сети к ним неприменимы. Мы пробовали и безрезультатно"

Слушайте в его лекциях на ютюбе. 

 
gpwr:

Джефри Хинтон, изобретатель глубоких сетей: "Глубокие сети применимы только к тем данным где отношение сигнала к шуму большое. Финансовые ряды настолько зашумлены что глубокие сети к ним неприменимы. Мы пробовали и безрезультатно"

Слушайте в его лекциях на ютюбе. 

Учитывая Ваш пост в параллельной ветке.

Шум в задачах классификации понимается иначе, чем радиотехнике. Предиктор считается шумным, есл он слабо связан (имеет слабую предсказательную способность) для целевой переменной. Совершенно другое значение. Надо искать предикторы, которые имеют предсказательную способность для разных классов целевой переменной. 

 
Как раз у меня похожее понимания шума. Финансовые ряды зависят от большого количества предикторов, большинство которых нам неизвестно и которые и вносят этот "шум" в ряды. Используя только общедоступные предикторы, мы не в состоянии предсказать целевую переменную независимо какими сетями или методами мы пользуемся.
 
gpwr:
Как раз у меня похожее понимания шума. Финансовые ряды зависят от большого количества предикторов, большинство которых нам неизвестно и которые и вносят этот "шум" в ряды. Используя только общедоступные предикторы, мы не в состоянии предсказать целевую переменную независимо какими сетями или методами мы пользуемся.
См. мою ветку.
 
faa1947:

vlad1949  

 Уважаемый Vlad!

А почему не удалось запустить в тестере?

У меня все работает без проблем. Правда схема без индикатора: советник напрямую общается с R.

ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл 

Добрый день СанСаныч.

Так основная идея сделать мультивалютный с несколькими индикаторами. 

Иначе конечно можно все запаковать в эксперт.

Да в общем и мультивалютник можно реализовать на одном эксперте.. Но если будет реализовано обучение, тестирование и оптимизация на лету, без прерывания торговли, то вариант  с одним экспертом нужно будет реализовывать несколько сложней.

Удачи 

ПС. И результат какой от тестирования? 

 

Приветствую СанСаныч.

Приведу примеры определения оптимального количества кластеров которые нашел на каком то англоязычном форуме. Не все смог использовать со своими данными. Очень интересный  11 пакет "clusterSim". 

--------------------------------------------------------------------------------------

#
n = 100
g = 6 
set.seed(g)
d <- data.frame(x = unlist(lapply(1:g, function(i) rnorm(n/g, runif(1)*i^2))), 
                y = unlist(lapply(1:g, function(i) rnorm(n/g, runif(1)*i^2))))
plot(d)
--------------------------------------
#1 
library(fpc)
pamk.best <- pamk(d)
cat("number of clusters estimated by optimum average silhouette width:", strpamk.best$nc, "\n")
plot(pam(d, pamk.best$nc))

#2 we could also do:
library(fpc)
asw <- numeric(20)
for (k in 2:20)
  asw[[k]] <- pam(d, k) $ silinfo $ avg.width
k.best <- which.max(asw)
cat("silhouette-optimal number of clusters:", k.best, "\n")
---------------------------------------------------
#3. Calinsky criterion: Another approach to diagnosing how many clusters suit the data. In this case 
# we try 1 to 10 groups.
require(vegan)
fit <- cascadeKM(scale(d, center = TRUE,  scale = TRUE), 1, 10, iter = 1000)
plot(fit, sortg = TRUE, grpmts.plot = TRUE)
calinski.best <- as.numeric(which.max(fit$results[2,]))
cat("Calinski criterion optimal number of clusters:", calinski.best, "\n")
# 5 clusters!
-------------------
4. Determine the optimal model and number of clusters according to the Bayesian Information 
Criterion for expectation-maximization, initialized by hierarchical clustering for parameterized 
Gaussian mixture models
library(mclust)
# Run the function to see how many clusters
# it finds to be optimal, set it to search for
# at least 1 model and up 20.
d_clust <- Mclust(as.matrix(d), G=1:20)
m.best <- dim(d_clust$z)[2]
cat("model-based optimal number of clusters:", m.best, "\n")
# 4 clusters
plot(d_clust)
----------------------------------------------------------------
5. Affinity propagation (AP) clustering, see http://dx.doi.org/10.1126/science.1136800 
library(apcluster)
d.apclus <- apcluster(negDistMat(r=2), d)
cat("affinity propogation optimal number of clusters:", length(d.apclus@clusters), "\n")
# 4
heatmap(d.apclus)
plot(d.apclus, d)
---------------------------------------------------------------------
6. Gap Statistic for Estimating the Number of Clusters. 
See also some code for a nice graphical 
output . Trying 2-10 clusters here:
library(cluster)
clusGap(d, kmeans, 10, B = 100, verbose = interactive())
-----------------------------------------------------------------------
7. You may also find it useful to explore your data with clustergrams to visualize cluster 
assignment, see http://www.r-statistics.com/2010/06/clustergram-visualization-and-diagnostics-for-cluster-analysis-r-code/  
for more details.
-------------------------------------------------------------------
#8. The NbClust package  provides 30 indices to determine the number of clusters in a dataset.
library(NbClust)
nb <- NbClust(d, diss = NULL, distance = "euclidean", 
        min.nc=2, max.nc=15, method = "kmeans", 
        index = "alllong", alphaBeale = 0.1)
hist(nb$Best.nc[1,], breaks = max(na.omit(nb$Best.nc[1,])))
# Looks like 3 is the most frequently determined number of clusters
# and curiously, four clusters is not in the output at all!
-----------------------------------------
Here are a few examples:
d_dist <- dist(as.matrix(d))   # find distance matrix 
plot(hclust(d_dist))           # apply hirarchical clustering and plot
----------------------------------------------------
#9 Bayesian clustering method, good for high-dimension data, more details:
# http://vahid.probstat.ca/paper/2012-bclust.pdf
install.packages("bclust")
library(bclust)
x <- as.matrix(d)
d.bclus <- bclust(x, transformed.par = c(0, -50, log(16), 0, 0, 0))
viplot(imp(d.bclus)$var); 
plot(d.bclus); 
ditplot(d.bclus)
dptplot(d.bclus, scale = 20, horizbar.plot = TRUE,varimp = imp(d.bclus)$var, horizbar.distance = 0, dendrogram.lwd = 2)
-------------------------------------------------------------------------
#10 Also for high-dimension data is the pvclust library which calculates 
#p-values for hierarchical clustering via multiscale bootstrap resampling. Here's #the example from the documentation (wont work on such low dimensional data as in #my example):
library(pvclust)
library(MASS)
data(Boston)
boston.pv <- pvclust(Boston)
plot(boston.pv)
------------------------------------
###Automatically cut the dendrogram
require(dynamicTreeCut)
ct_issues <- cutreeHybrid(hc_issues, inverse_cc_combined, minClusterSize=5)
-----
FANNY <- fanny(as.dist(inverse_cc_combined),, k = 3, maxit = 2000) 
FANNY$membership MDS <- smacofSym(distMat)$conf 
plot(MDS, type = "n") text(MDS, label = rownames(MDS), col = rgb((FANNY$membership)^(1/1)))
-----
m7 <- stepFlexmix
----------------------
#11 "clusterSim" -Department of Econometrics and Computer Science, University of #Economics, Wroclaw, Poland
http://keii.ue.wroc.pl/clusterSim
See file ../doc/clusterSim_details.pdf for further details
data.Normalization Types of variable (column) and object (row) normalization formulas
Description
Types of variable (column) and object (row) normalization formulas
Usage
data.Normalization (x,type="n0",normalization="column")
Arguments
x vector, matrix or dataset
type type of normalization: n0 - without normalization
n1 - standardization ((x-mean)/sd)
n2 - positional standardization ((x-median)/mad)
n3 - unitization ((x-mean)/range)
n3a - positional unitization ((x-median)/range)
n4 - unitization with zero minimum ((x-min)/range)
n5 - normalization in range <-1,1> ((x-mean)/max(abs(x-mean)))
n5a - positional normalization in range <-1,1> ((x-median)/max(abs(x-median)))
n6 - quotient transformation (x/sd)
n6a - positional quotient transformation (x/mad)
n7 - quotient transformation (x/range)
n8 - quotient transformation (x/max)
n9 - quotient transformation (x/mean)
n9a - positional quotient transformation (x/median)
n10 - quotient transformation (x/sum)
n11 - quotient transformation (x/sqrt(SSQ))
normalization "column" - normalization by variable, "row" - normalization by objec
See file ../doc/HINoVMod_details.pdf for further details 


В следующем посте расчеты с моими данными 

 

Определить оптимальное количество кластеров можно несколькими пакетами и с использованием более 30 критериев оптимальности. По моим наблюдениям наиболее используемый критерий Calinsky.

Возьмем исходные данные из нашего набора с индикатора dt . В нем находятся 17 предикторов, целевая y и тело свечи z. 

В последних версиях пакетов «magrittr” и “dplyr” появилось много новых приятных функций. Одна из них 'pipe” - %>%. Очень удобно когда не нужно сохранять промежуточные результаты. Подготовим исходные данные для кластеризации. Возьмем исходную матрицу dt, выберем из нее последних 1000 строк, после этого из них выделим 17 колонок наших переменных. Получается более ясная запись, ничего более.

> library(magrittr)
> x<-dt %>% tail( .,1000)%>% extract( ,1:17)

 1.

> library(fpc)
> pamk.best <- pamk(x)
> cat("number of clusters estimated by optimum average silhouette width:", pamk.best$nc, "\n")
> number of clusters estimated by optimum average silhouette width: h: 2

2. Calinsky criterion: Another approach to diagnosing how many clusters suit the data. In this case

we try 1 to 10 groups.

> require(vegan)
> fit <- cascadeKM(scale(x, center = TRUE,  scale = TRUE), 1, 10, iter = 1000)
> plot(fit, sortg = TRUE, grpmts.plot = TRUE)

 

 

> calinski.best <- as.numeric(which.max(fit$results[2,]))
> cat("Calinski criterion optimal number of clusters:", calinski.best, "\n")
Calinski criterion optimal number of clusters: 2
3. Determine the optimal model and number of clusters according to the Bayesian InformationCriterion for expectation-maximization, initialized by hierarchical clustering for parameterized

Gaussian mixture models 

> library(mclust)
# Run the function to see how many clusters
# it finds to be optimal, set it to search for
# at least 1 model and up 20.
> d_clust <- Mclust(as.matrix(x), G=1:20)
> m.best <- dim(d_clust$z)[2]
> cat("model-based optimal number of clusters:", m.best, "\n")
model-based optimal number of clusters: 7