Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 2109

 
Maxim Dmitrievsky:

selecionar todos os arquivos e baixá-los, eles serão zipados

diferentes comprimentos de amostra, então se uma peça

Obrigado, isso mesmo - você pode fazer o download como um arquivo, o que é bom!

Mas diferentes comprimentos de amostragem é ruim, eu estava pensando em selecionar as colunas mais aleatórias onde pequenos desvios são aceitáveis.

Eu acho que não é necessário aplicar este método à amostra - caso contrário, como posso usá-lo na vida real.

Estou a geri-lo para o treino, vamos ver o que acontece.

 
Aleksey Vyazmikin:

Obrigado, é isso mesmo - você pode baixar um arquivo, o que é bom!

Mas os diferentes comprimentos das amostras são maus, pensei em destacar as colunas mais aleatórias, onde pequenos desvios são aceitáveis.

Eu acho que não é necessário aplicar este método à amostra - caso contrário, como posso usá-lo na vida real.

Estou a geri-lo para o treino, vamos ver o que acontece.

Não preciso dele para exames, mas pode vir a ser útil.

 
elibrarius:

Muito preguiçoso para converter)
Deixe-me explicar:

1) ordenamos a coluna
2) contamos o número médio de elementos em um quantum, por exemplo 10000 elementos / 255 quanta = 39,21
3) no loop, nos movemos por 39,21 elementos em cada passo e adicionamos o valor do array ordenado ao array de valores do quantum. Isto é, valor da matriz 0 = valor 0 quantum, 39º valor = 1 quantum, 78º valor = 2 quantum, etc.

Se o valor já estiver no array, ou seja, se entrarmos numa área com muitas duplicatas, saltamos a duplicata e não a adicionamos.

A cada passo, adicionamos exatamente 39,21, e então arredondamos a soma para selecionar um elemento da matriz, de modo que ele seja igual. Ou seja, em vez de 195 (39*5 = 195), tomar 196 ( 39,21 * 5 = (int) 196,05).

Com uma distribuição uniforme é claro - eu criaria um conjunto de valores únicos e os utilizaria para o corte.

Mas há outros métodos de dividir a grelha:

    THolder<IBinarizer> MakeBinarizer(const EBorderSelectionType type) {
        switch (type) {
            case EBorderSelectionType::UniformAndQuantiles:
                return MakeHolder<TMedianPlusUniformBinarizer>();
            case EBorderSelectionType::GreedyLogSum:
                return MakeHolder<TGreedyBinarizer<EPenaltyType::MaxSumLog>>();
            case EBorderSelectionType::GreedyMinEntropy:
                return MakeHolder<TGreedyBinarizer<EPenaltyType::MinEntropy>>();
            case EBorderSelectionType::MaxLogSum:
                return MakeHolder<TExactBinarizer<EPenaltyType::MaxSumLog>>();
            case EBorderSelectionType::MinEntropy:
                return MakeHolder<TExactBinarizer<EPenaltyType::MinEntropy>>();
            case EBorderSelectionType::Median:
                return MakeHolder<TMedianBinarizer>();
            case EBorderSelectionType::Uniform:
                return MakeHolder<TUniformBinarizer>();
        }
 
Aleksey Vyazmikin:

Com distribuição uniforme eu vejo - eu primeiro criaria um conjunto de valores únicos e o usaria para cortar.

Mas existem outros métodos para dividir a grelha:

Deve haver muitas amostras, senão o modelo não vai aprender nada

 
Maxim Dmitrievsky:

deve haver muitas amostras, caso contrário o modelo não aprenderá nada.

Estes são os métodos de quantificação por amostragem para CatBoost - estes são os limites pelos quais a enumeração/aprendizagem prossegue.

Meus experimentos mostram que a grade deve ser escolhida para cada preditor separadamente, então o aumento de qualidade é observado, mas não é capaz de fazê-lo CatBoost e eu não sou capaz de construir uma grade e eu tenho que construir grades e carregá-las para csv, e então iterá-las para estimar o comportamento dos alvos nelas. Eu acho que é uma ferramenta muito promissora, mas preciso traduzir o código para MQL.

 
Aleksey Vyazmikin:

Estes são os métodos de quantificação por amostragem para CatBoost - estes são os limites pelos quais a enumeração/aprendizagem então procede.

Meus experimentos mostram que a grade deve ser escolhida para cada preditor separadamente, então o ganho de qualidade é observado, mas CatBoost não pode fazer isso e eu não posso construir uma grade e eu tenho que construir grades e fazer upload para csv e depois iterar através delas para avaliar o comportamento do alvo nelas. Acho que este é um recurso muito promissor, mas preciso traduzir o código para MQL.

isto está nas configurações do próprio modelo (parâmetros)? não sei o que é

se não estiver nas configurações, então é uma merda.

 
Maxim Dmitrievsky:

Está nas configurações do próprio modelo (parâmetros)? Eu não sei o que é

Se não está nas configurações, é uma merda.

Está nas configurações, pelo menos para a linha de comando

-- tipo de recurso de fronteira

O modo dequantização de características numéricas.

Possíveis valores:
  • Mediana
  • Uniforme
  • UniformAndQuantiles
  • MaxLogSum
  • MinEntropia
  • GreedyLogSum
Quantization - CatBoost. Documentation
  • catboost.ai
Mode How splits are chosen Combine the splits obtained in the following modes, after first halving the quantization size provided by the starting parameters for each of them: Maximize the value of the following expression inside each bucket: Minimize the value of the following expression inside each bucket: Maximize the greedy approximation of...
 
Aleksey Vyazmikin:

Está nas configurações, pelo menos para a linha de comando

-- tipo de recurso de fronteira

O modo dequantização de características numéricas.

Possíveis valores:
  • Mediana
  • Uniforme
  • UniformAndQuantiles
  • MaxLogSum
  • MinEntropia
  • GreedyLogSum

Faz grande diferença? Deve estar dentro de uma percentagem

 
Aleksey Vyazmikin:

Com uma distribuição uniforme eu entendo - eu primeiro criaria um conjunto de valores únicos e os usaria para cortar.

Mas há outros métodos para dividir a grelha:

Se você tem valores únicos, será uma bagunça. Por exemplo, você tem 100 cordas das quais 10 são únicas, 2 delas têm 45 cordas e 8 têm 1. Dividido por 5 quanta, é possível que apenas 5 por 1 seja escolhido, e os 2 mais representativos (por 45) serão pulados.
 
Maxim Dmitrievsky:

e isso faz uma grande diferença? deve estar dentro de uma percentagem

A escolha da repartição certa tem um impacto significativo no resultado.

Aqui está um exemplo na Recall - até 50% de variação - para mim, que é significativo.

Aumentando os limites de 16 para 512 em incrementos de 16 - embora não em ordem no histograma - os meus títulos são um pequeno obstáculo.


Ainda estou experimentando a seleção de malhas, mas já é óbvio que existem diferentes preditores para os quais são necessárias malhas diferentes, para observar a lógica, e não apenas para ajustar.