Discussão do artigo "Florestas Aleatórias na Previsão das Tendências" - página 12

 

Para: CyberCortex

Desculpe SanSanych por estar me envolvendo.

Não poderia deixar passar em branco uma atitude tão arrogante e agressiva, sem profissionalismo.

Vamos considerar as declarações do autor em sua descrição do programa de aplicativos, uma a uma

Citação: "Vantagens do CyberCortex em comparação com os análogos existentes:

  • O algoritmo usado. Para muitos traders, as tecnologias do campo da inteligência artificial começam e terminam com o tópico banal das redes neurais clássicas. Mas o algoritmo de bousting implementado no CyberCortex é uma ferramenta de ordem de magnitude mais poderosa e moderna(?), porque: "

Objeção:

  1. De onde vem essa opinião desdenhosamente grandiosa de muitos traders? Geralmente, esse campo é chamado de Aprendizado de máquina, a Inteligência artificial é um pouco diferente. Tenho certeza de que muitos traders estão familiarizados com muitos tipos de redes neurais das quais você nem sequer ouviu falar (redes profundas, redes convolucionais e outras redes modernas). O tópico de redes neurais está esgotado para aqueles que se limitaram a estudar MLP . Apresso-me em desapontá-lo, mas o tópico das redes neurais recebeu um segundo fôlego após o desenvolvimento dos métodos de aprendizagem profunda e, para aqueles que sabem e podem fazê-lo, está longe de ser um tópico encerrado. Além disso, conhecemos muitos outros algoritmos de classificação que são implementados em vários pacotes da linguagem R.

  2. O algoritmo bousting em várias modificações é conhecido há muito tempo (1996) e não é de forma alguma mais poderoso do que o algoritmo de rede neural. A propósito, você deve nos informar qual algoritmo seu programa usa. Em uma rápida olhada nos pacotes R -

  • "ADA"- adaptive stochastic bousting. Um dos meus favoritos, três modificações do algoritmo original são implementadas: Gentle-, Logit- e Real AdaBoost

    .

  • "adabag" - o pacote usa os algoritmos multiclasse Adaboost.M1 (de Freund e Schapire), AdaBoost-SAMME (Zhu et al., 2009) e o algoritmo Bagging de Breiman ;

  • "boost" - contém um conjunto de métodos de reforço, como - 'BagBoost', 'LogitBoost', 'AdaBoost' e 'L2Boost', complementados pela pré-seleção de recursos (preditores) usando a estatística de teste Wilcoxon ;

  • 'pga' - contém um conjunto de algoritmos que combinam AdaBoost e Random Forest com um algoritmo evolutivo.

    Se você tiver um algoritmo original mundialmente desconhecido, descreva, pelo menos em termos gerais,a diferença emrelação aos existentes e quaisquer vantagens sobre eles, e um link para a descrição seria desejável.

Como você pode ver, a escolha é bastante ampla.

Para aqueles que não estão no assunto. "Busting" (amplificação) - um método de reamostragem proposto originalmente pararesolver problemas em áreas da ciência, onde inicialmente o número de exemplos (resultados de experimentos) para usá-los em cálculos estatísticos era pequeno, e extrair novos exemplos é impossível ou muito caro. A essência do método é extrair do pequeno conjuntoinicial uma amostra de tamanho menor formada aleatoriamente.Esseprocedimento é repetidovárias vezes e, como resultado, obtém-se uma amostra total suficientemente grande, que é então usada em cálculos estatísticos.

Primeiro de tudo. O mercado Forex não é um caso de "déficit de dados". Pelo contrário, é um caso de "abundância de dados".

Em segundo lugar. A longaexperiência depesquisa e aplicação do bousting eda validação cruzada na prática e nas universidades mostrou que não é desejável usar esses métodos no processo de treinamento, ou seja, ao selecionar um modelo porerrointerno. Mas são muito úteis no estágio de avaliação do modelo treinado, ou seja, na obtenção do erro externo. Portanto, para o nosso caso de "abundância de dados", a divisão em treinar/validar/testar durante o treinamento é ideal. Há muitas outras sutilezas que devem ser levadas em conta no processo de seleção de dados e pré-treinamento e das quais o resultado da modelagem depende em grandeparte, mas esse é um tópico grande e separado.

Com base em minha experiência de longos experimentos com o ADA , posso dizer que, às vezes, os resultados são excelentes, às vezes, nojentos = muito instáveis.


Citação: "Oalgoritmo não exige a redução da dimensionalidade dos dados de entrada e a descoberta de quais recursos são informativos e quais não são. Pelo contrário, quanto mais dados de entrada estiverem disponíveis, maior será a probabilidade de classificação correta. Os recursos não informativos são automaticamente descartados."

Pergunta - como os recursos não informativossão magicamente eliminados? A determinação(avaliação) daimportância dos preditores está incluída em todos os algoritmos de árvore de decisão, mas há muitos critérios usados para determinar a importância e nem todos eles fornecem resultados inequívocos. Como você resolve isso no programa?

Citação: "Oalgoritmo não exige nenhuma normalização preliminar dos dados nem nenhuma manipulação preliminar. Todos os dados são automaticamente reduzidos à variância unitária e à expectativa matemática zero."

O único algoritmo que realmente não exige nenhum pré-processamento é oRandomForest. Todos os outros exigem vários pré-processamentos. Você obviamente quer dizer que seu programa faz o processo de normalização (x menos a média dividida pelo desvio padrão) para o usuário? Não sei se essa é uma boa solução, pois há pelo menos uma dúzia de métodosde pré-processamento diferentese você precisa determinar qual é o melhor para cada caso individual.

Citação: " Oalgoritmo, diferentemente das redes neurais, não exige o ajuste dos parâmetros de treinamento para obter o resultado ideal de classificação."

Não é verdade. Qualquer algoritmo de boustingconhecido tem pelo menos dois parâmetros que precisam ser ajustados para obter o melhor resultado.

Citação:"O algoritmo é praticamente imune à tendência de excesso de treinamento."

Declaração falsa. Qualquer algoritmo de aprendizado de máquina é suscetível a essa doença - o aprendizado excessivo. A redução do risco de obter um modelo com excesso de treinamento é obtida por meio da regularização. Atualmente, vários métodos de regularização são conhecidos e usados com sucesso, inclusive em algoritmos de bousting.

Citação:"O algoritmo permite classificar os dados em qualquer número de classes".

Essa não é uma conquista desse algoritmo. Atualmente, quase todos os algoritmos de aprendizado de máquina fazem isso.

Citação:"A peculiaridade do algoritmo implementado é que, se houver padrões nos dados, eles serão encontrados. Pelo contrário, se não houver padrões nos dados, as previsões do programa não serão melhores do que um simples lançamento de moeda, o que é lógico"

Talvez eu o surpreenda, mas todos os algoritmos têm esse recurso.

Resumindo: o algoritmo incompreensível que você oferece por dinheiro pode ser implementado de forma transparente, simples e em diversas variantes na linguagem R e observe que ele é absolutamente gratuito, ou seja, sem custo algum. Esse programa terá de 10 a 15 linhas. Essa é a primeira. A segunda e inegável vantagem da linguagem R é que ela é desenvolvida e apoiada pela comunidade científica mundial (praticamente todas as universidades do mundo) e agora pelos gigantes do setor de software. A Microsoft lançou um serviço de nuvem "Azure" com o Microsoft Azure Machine Learning Studio" , que permite que você produza na nuvem todos os estágios de criação, treinamento e avaliação do modelo e, posteriormente, obtenha previsões enviando dados ao serviço para o seu modelo. O serviço é totalmente baseado na linguagem R e tem uma interface gráfica que permite reduzir o processo a "desenhar" uma imagem (estou simplificando, é claro). Se antes a linguagem era um padrão de fato nos círculos de pesquisa, agora ela praticamente se tornou um padrão no campo aplicado e industrial.

Uma última coisa. Não sou contra o fato de você monetizar seu trabalho incorporado ao programa. Isso é bom. Sou contra o fato de você atribuir qualidades inexistentes ou exageradas ao produto para fins de publicidade. Isso parece pouco profissional.

Tenha cuidado. Como dizia o clássico.

Boa sorte


 
vlad1949:


Olá!

"Em geral, esse campo é chamado de aprendizado de máquina, a inteligência artificial é um pouco diferente." - O aprendizado de máquina é uma subseção da inteligência artificial. Mas tenho certeza de que você se esqueceu disso. Acontece...

Já ouvi falar de novos tipos de redes neurais:) E, se você percebeu, a descrição do meu programa diz" redes neuraisclássicas ", não todas as redes. Por clássica, quero dizer MLP, seus derivados, rede Hopfield, rede probabilística e outras.

"De onde vem essa opinião desdenhosamente grandiosa de muitos traders?" - Essa opinião mega hiper importante vem do fato de que a grande maioria dos traders que tentam usar tecnologias fracas de inteligência artificial usam redes neurais clássicas .

"A propósito, seria necessário informar em qual algoritmo específico seu programa é executado." - Bousting adaptativo de árvores de decisão de nível único (stumps). Está escrito lá. Como eu mesmo o implementei do zero, sem ver nenhum modelo à minha frente, e não havia nenhuma descrição normal na Internet, apliquei algumas de minhas heurísticas ao desenvolvê-lo.

"Para quem não sabe. "Boosting é um método de reamostragem proposto por..." - Não sei de onde você copiou isso, mas acho que o que essa definição descreve não é boosting, mas bootstrap:) Boosting é o aumento de classificadores simples. No bootstrap, você não obtém uma amostra grande N de uma amostra pequena m. No bousting, para cada classificador simples subsequente, os exemplos classificados incorretamente pelo classificador anterior são preferencialmente amostrados. O número de exemplos é sempre igual ao número original de exemplos. Depois disso, é especialmente engraçado ler sua frase séria:"Para aqueles que estão fora do circuito". xD

"Primeiro de tudo. O mercado forex não é um caso de "escassez de dados". Pelo contrário, é um caso de 'abundância de dados'." - Bem, isso depende de que lado você está olhando. Se você se refere a cotações de câmbio e a um monte de indicadores "pseudo-matemáticos" que cheiram como nos velhos tempos e vários derivados deles, então sim, não há escassez. Mas como você foi em outra direção, confundindo acidentalmente bousting com bootstrap, sua máxima não será ouvida, pois não tenho ideia do tipo de resposta que você está esperando.

"A longaexperiência empesquisa e aplicação de bousting e validação cruzada na prática e nas universidades mostrou..." - mesmo? Chato...

"Com base em minha experiência de longos experimentos com o ADA , posso dizer: às vezes, ótimos resultados, às vezes, nojentos = muito instáveis. " " - Sua experiência não é um axioma para nós, talvez você tenha confundido alguns botões ou algo assim, semelhante à confusão acima. Não sei.

"Como você resolve isso no software? " - Todo classificador simples se concentra no recurso que produz o menor erro de classificação. Se o recurso não for informativo, o erro será alto. Essa é a mágica de tudo isso. Vamos desafiar essa lógica com mais algumas bobagens científicas sobre como as universidades..... Não, sério, escreva algo.

" Não sei se é uma boa solução" - não acha que está sendo categórico demais? Parece-me que o desenvolvedor de software é um pouco mais criterioso sobre o que precisa ser adicionado para que funcione como pretendido.

"Não é verdade. Qualquer algoritmoconhecido de busting tem pelo menos dois parâmetros que precisam ser ajustados para obter um resultado melhor." - Quais parâmetros você tem no R que precisam ser ajustados? Estou fazendo anotações...

"Citação:"O algoritmo é virtualmente imune à tendência de treinamento excessivo. " "Declaração falsa...."" - Gosto muito de suas declarações :). Bem, antes de mais nada, diz "praticamente". Em russo, significa "quase". Mas se houver um padrão estável nos dados, por exemplo, como no experimento com o reconhecimento de placas de carro, então sim, o algoritmo não é retreinado. Na amostra de treinamento, o erro chega a zero, e na amostra de teste o erro permanece constante, cerca de 1%. As perguntas?

"Essa não é a conquista desse algoritmo. Hoje, quase todos os algoritmos de aprendizado de máquina fazem isso." - você pode me dizer que isso é uma desvantagem. É uma vantagem em comparação com um classificador binário. Ou você não acha isso?

"Talvez eu o surpreenda, mas todos os algoritmos têm esse recurso." - Leia com atenção: "se houver padrões nos dados, eles serão encontrados". Essa é a minha ênfase. O principal problema dos algoritmos de aprendizado de máquina é a quantidade de padrões que serão encontrados. Meu programa não tem problemas com isso. Pela sua lógica, acontece que, tendo algum MLP, as pessoas não deveriam desenvolver outros algoritmos, porque um perseptron multicamadas é um algoritmo de aprendizado de máquina, e você diz que"todos os algoritmos têm esse recurso ".

"Um algoritmo obscuro que você oferece por dinheiro" - Não estou oferecendo um algoritmo, mas um programa. Não tenho nada contra a linguagem R. Mas veja qual é o ponto: nem todas as pessoas podem e vão entender a lógica e a sintaxe da linguagem de programação, entender as configurações dos algoritmos, converter alguns arquivos e conectar-se ao terminal por meio de várias muletas para usar o resultado dos cálculos. Se alguém conseguir fazer tudo isso, eu o parabenizo. Algumas pessoas só precisam que ele funcione "fora da caixa". Você pensaria que estou correndo atrás de você e forçando-o a comprar nosso software. Use o R. Garanto que isso não me deixará chateado.

"Não me importo que você monetize seu trabalho árduo em software." - Desculpe-me, esqueci de perguntar sua opinião sobre isso. Mas, desde que você não se importe com isso, eu não me importo.

"Eu me oponho a que você atribua qualidades inexistentes ou exageradas a um produto para fins de publicidade. " - e eu me oponho a que você escreva sobre algo sobre o qual não sabe nada.

Obrigado. Eu já terminei. Como dizia o clássico.

P.S.: Estou apenas respondendo à agressão. Sem ofensa. Paz.

P.P.S.: E sim, você não deveria ter começado a discutir comigo:))

 
Cada valor de ziguezague é baseado no preço futuro da moeda, portanto, os resultados são muito otimistas, eu acho
 

Я не понимаю содержание Скрежет обучение режим? В частности, о том, как использовать платформу использовать платформу MT4 MQL предварительной подгото вки?

 
Você pode dar um exemplo de uso de um modelo treinado em MQL4? Muito obrigado!
 
Após algumas pequenas aventuras, consegui que o Rattle 4.1.0 mais recente funcionasse no MacOS Sierra, mas o ponto de menu R Dataset não permite a escolha de nenhum arquivo, ele permanece acinzentado. Em vez disso, o RData File podia escolher "TC.RData" como nome de arquivo e, em seguida, "TC" como nome de dados, e com um Execute eu estava pronto para começar.
 
Eu nem mesmo entendo o que está acontecendo
 

Pessoal, olá! Sua energia está na direção certa!

Parabéns, você cometeu um erro estratégico!

Cito a primeira linha de seu artigo: "Inicialmente, o objetivo de construir um sistema de negociação é prever o comportamento de algum instrumento de mercado, por exemplo, um par de moedas".

Eu nem sequer li o artigo mais a fundo. É melhor estudar TODOS os métodos de previsão!

Vou lhe contar um segredo: o objetivo de criar um sistema de negociação é "Criar um modelo de (seu) comportamento".

Não é importante o que o mercado (líder) fará, mas sim o que você fará: E, OU, NÃO.

Por exemplo: E - perseguir o líder (repetir as ações do líder).

 

Tentei instalar o rattle no linux (Kubuntu), não funcionou, há muitas dependências para a compilação do código.

Ao analisar os erros de instalação, obtive a seguinte lista de pacotes que precisam ser instalados no próprio sistema operacional antes de instalar o rattle no R:

console -
$ sudo apt-get install libxml2-dev unixodbc-dev libssl-dev libgtk2.0-dev

E então você pode executar a instalação no próprio R -
> install.packages("rattle", dependencies=TRUE)

E se ainda faltarem alguns arquivos *.h para instalar o rattle, você pode encontrar o pacote necessário da seguinte forma
$ sudo apt-get install apt-file
$ apt-file update
$ apt-file search /someheaderfile.h

Talvez isso ajude outra pessoa :)

 

Depois de atualizar o sistema operacional, o rattle parou de funcionar, a chamada de rattle() apresenta um erro
Error in method(obj, ...) : Invalid root element: 'requires'

A primeira maneira que quase ajudou foi executar o rattle com um parâmetro adicional
rattle(useGtkBuilder = TRUE)
a janela do programa abriu, mas os botões não funcionaram, o método não ajudou até o fim.

Descobriu-se que a versão do rattle instalada a partir do cran está desatualizada, você precisa reinstalar o rattle especificando o repositório dos desenvolvedores para obter uma nova versão.
install.packages("rattle", repos="https://rattle.togaware.com", type="source")
E depois disso tudo funcionou bem.