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

 
Aleksey Nikolayev #:

Acho que ele prometia mapear um vetor de tamanho arbitrário em um vetor de tamanho fixo especificado, mas aqui ele mapeia um número em um vetor?

Tudo é complicado e incompreensível) A vida era muito mais fácil sem a GPT) Teremos dificuldades na era da IA)

Escrevi mais sobre vetor para número.

Vetor em um vetor fixo?

 

Se você quiser fazer o hash de uma lista de comprimento diferente para uma lista de comprimento fixo, poderá usar uma função de hash que mapeie a lista para uma lista de tamanho fixo. Uma maneira de fazer isso é usar uma técnica chamada "feature hashing", que permite representar uma lista de comprimento variável como uma lista de tamanho fixo, aplicando uma função de hash aos elementos da lista e usando os valores de hash como índices na lista de tamanho fixo.

Aqui está um exemplo de hashing de recurso em Python:

def feature_hash(lst: List[int], n: int) -> List[int]:
  h = [0] * n
  for x in lst:
    h[hash(x) % n] += 1
  return h

Essa função recebe uma lista lst e um comprimento de lista desejado n como entrada e retorna uma lista de tamanho fixo aplicando uma função de hash aos elementos de lst e usando os valores de hash como índices na lista de tamanho fixo. Os valores em cada índice são então incrementados para contar o número de ocorrências de cada elemento na lista original.

Por exemplo, se chamarmos feature_hash([1, 2, 3], 5) , a função retornará [0, 1, 1, 1, 1, 1, 0] .

Você também pode usar uma abordagem semelhante no R. Aqui está o código de uma função de hashing de recurso no R:

feature_hash <- function(lst, n) {
  h <- rep(0, n)
  for (x in lst) {
    h[as.integer(x) %% n] <- h[as.integer(x) %% n] + 1
  }
  h
}
 
Aleksey Nikolayev #:

Acho que ele prometia mapear um vetor de tamanho arbitrário em um vetor de tamanho fixo especificado, mas aqui ele mapeia um número em um vetor?

Tudo é complicado e incompreensível) A vida era muito mais simples sem a GPT) Teremos dificuldades na era da IA).

Alexei, pare de dar ouvidos aos profanos.

Se você precisar de números diferentes de recursos por entrada.
Isso é mineração de padrões frequentes - procure regras associativas em diferentes variações, inclusive com um professor.


==============
Por que eu disse que NÃO existem algoritmos que aceitam diferentes números de recursos?
Porque, mesmo nesses algoritmos, sob o capô, os dados estão na forma de uma matriz esparsa em um formato de codificação quente.
A entrada ainda são todos os nomes dos recursos, embora em um formato mais suave.
=======================
Além disso, o número de atributos não foi especificado
Se o número de recursos for relativamente pequeno, de 10 a 20 mil, será possível carregá-lo no xgboost, mesmo em um laptop fraco, sem problemas
 
Maxim Dmitrievsky #:

em um vetor fixo, afinal de contas?

1) Se quisermos usar qualquer algoritmo MO comum (com um número fixo de recursos), então sim - pegamos um conjunto de vetores de diferentes comprimentos e os convertemos em um conjunto de vetores de um determinado comprimento.

2) Procurar imediatamente um algoritmo de MO incomum que possa receber qualquer vetor de comprimento como entrada.

A primeira opção se transforma na segunda opção se a transformação do vetor for buscada por meio de MO.

 
Aleksey Nikolayev #:

1) Se quisermos usar qualquer algoritmo MO convencional (com um número fixo de recursos), então sim - pegamos um conjunto de vetores de diferentes comprimentos e os convertemos em um conjunto de vetores de um determinado comprimento.

2) Procure imediatamente um algoritmo de MO incomum que possa receber como entrada um vetor de qualquer comprimento.

A primeira opção se transforma na segunda opção se a transformação do vetor for buscada por meio do MO.

Portanto, está claro que podemos tentar fazer isso por meio de f-iys de hash. Mas tenho vergonha de perguntar em que princípio escolher vetores de comprimento arbitrário, ou melhor, o comprimento deles :) e a partir de quais dados.

Pode haver muitas variantes

a primeira opção é mais agradável, mas você precisa colocar algo na lógica

 

- Quero fazer hash de um vetor de tamanho variável de retornos de preços em um vetor fixo


Se você quiser fazer hash de um vetor de tamanho variável de retornos de preços de ações em um vetor de tamanho fixo, poderá usar uma técnica chamada min-hash. O min-hash é um método para aproximar a similaridade entre dois conjuntos calculando o número de elementos que eles têm em comum. Ele é usado com frequência no contexto da mineração de texto, mas também pode ser aplicado a outros tipos de dados, como retornos de preços de ações.

Aqui está um exemplo de como você pode usar o min-hash para fazer hash de um vetor de tamanho variável de retornos de preços de ações para um vetor de tamanho fixo:

  1. Definir o tamanho do vetor de tamanho fixo: primeiro, você precisaria definir o tamanho do vetor de tamanho fixo que deseja usar. Isso dependerá dos requisitos específicos de seu aplicativo e da quantidade de dados disponíveis.

  2. Criar uma função de hash: em seguida, você precisará criar uma função de hash que possa ser usada para fazer o hash dos dados de retorno do preço das ações para o vetor de tamanho fixo. Há muitas abordagens diferentes que podem ser adotadas para criar uma função de hash, como o uso de uma permutação aleatória ou um gerador congruencial linear.

  3. Fazer o hash dos dados: depois de definir o tamanho do vetor de tamanho fixo e criar uma função de hash, você pode usá-las para fazer o hash do vetor de tamanho variável dos dados de retornos de preços de ações em um vetor de tamanho fixo. O vetor de tamanho fixo resultante representará os dados originais em um formato compactado, com o tamanho do vetor determinado pelo tamanho que você definiu.

É importante observar que o min-hash pode resultar em perda de informações, pois é uma aproximação da similaridade entre dois conjuntos, e não uma representação exata. A precisão da aproximação dependerá do tamanho do vetor de tamanho fixo e da função hash específica usada.


- Como minimizar a perda de informações


Há várias maneiras de minimizar a perda de informações ao usar o min-hash para fazer o hash de um vetor de tamanho variável de retornos de preços de ações para um vetor de tamanho fixo:

  1. Usar um vetor de tamanho fixo maior: uma forma de minimizar a perda de informações é usar um vetor de tamanho fixo maior. Um vetor maior terá mais elementos e, portanto, poderá capturar mais informações sobre os dados originais. No entanto, isso também aumentará o tamanho do vetor e pode não ser prático se você tiver um conjunto de dados grande ou espaço de armazenamento limitado.

  2. Use uma função de hash melhor: outra maneira de minimizar a perda de informações é usar uma função de hash melhor. Diferentes funções de hash têm propriedades diferentes e podem resultar em diferentes níveis de perda de informações. Por exemplo, uma função de hash com alto grau de aleatoriedade geralmente resultará em menos perda de informações do que uma função de hash com baixo grau de aleatoriedade.

  3. Use várias funções de hash: você também pode minimizar a perda de informações usando várias funções de hash e combinando os resultados. Isso pode ajudar a capturar uma representação mais completa dos dados originais, pois cada função de hash capturará diferentes aspectos dos dados.

É importante observar que talvez não seja possível eliminar completamente a perda de informações ao usar o min-hash, pois ele é uma aproximação da similaridade entre dois conjuntos, e não uma representação exata. A precisão da aproximação dependerá do tamanho do vetor de tamanho fixo e da função hash específica usada.


Aqui está um exemplo de como você pode usar o min-hash em Python para fazer hash de um vetor de tamanho variável de retornos de preços de ações em um vetor de tamanho fixo:

from datasketch import MinHash

# Define the size of the fixed size vector
num_hashes = 100

# Create a MinHash object
mh = MinHash(num_hashes=num_hashes)

# Hash the stock price returns data to the fixed size vector
for price_return in stock_price_returns:
    mh.update(str(price_return).encode('utf8'))

# The resulting fixed size vector is stored in the MinHash object
fixed_size_vector = mh.hashvalues


Aqui está um exemplo de como você pode usar o min-hash em R para fazer o hash de um vetor de tamanho variável de retornos de preços de ações em um vetor de tamanho fixo:


# Install the 'minhash' package if it is not already installed
install.packages("minhash")

# Load the 'minhash' package
library(minhash)

# Define the size of the fixed size vector
num_hashes = 100

# Create a MinHash object
mh = minhash(num_hashes)

# Hash the stock price returns data to the fixed size vector
for (price_return in stock_price_returns) {
    mh = update(mh, price_return)
}

# The resulting fixed size vector is stored in the MinHash object
fixed_size_vector = getValues(mh)


É importante observar que esses exemplos têm o objetivo de ilustrar o processo básico de uso do min-hash para fazer hash de um vetor de tamanho variável de retornos de preços de ações em um vetor de tamanho fixo. Em um aplicativo real, talvez seja necessário modificar o código para atender às suas necessidades e dados específicos.

 

- então o min-hash é a melhor maneira?

O min-hash é um método para aproximar a similaridade entre dois conjuntos calculando o número de elementos que eles têm em comum. Ele pode ser usado para fazer o hash de um vetor de tamanho variável de retornos de preços de ações para um vetor de tamanho fixo, mas pode não ser necessariamente a melhor maneira de fazer isso, pois pode resultar em perda de informações.

Há muitas abordagens diferentes que você pode adotar para fazer hash de dados de retornos de preços de ações, e a melhor abordagem dependerá das características específicas dos dados e dos requisitos do seu aplicativo. Algumas outras abordagens que você pode considerar incluem:

  1. Hash de recursos: o hashing de recursos é uma técnica usada para converter dados categóricos ou textuais em uma representação numérica que pode ser usada em algoritmos de aprendizado de máquina. Você poderia usar o hashing de recursos para fazer o hash dos dados de retorno do preço das ações em um vetor de tamanho fixo.

  2. Locality sensitive hashing (LSH): O LSH é uma técnica usada para identificar aproximadamente itens semelhantes em um conjunto de dados. Você poderia usar o LSH para fazer hash dos dados de retorno do preço das ações em um vetor de tamanho fixo e, em seguida, identificar itens semelhantes com base em seus valores de hash.

  3. Outras técnicas: há muitas outras técnicas que podem ser usadas para fazer hash dos dados de retornos de preços de ações, como usar uma permutação aleatória ou um gerador congruencial linear. A técnica específica que você escolher dependerá das características dos dados e dos requisitos do seu aplicativo.

É importante considerar cuidadosamente as vantagens e desvantagens entre precisão e eficiência ao escolher uma técnica de hash. Algumas técnicas podem ser mais precisas, mas menos eficientes, enquanto outras podem ser mais eficientes, mas menos precisas. Você precisará encontrar o equilíbrio certo que atenda às necessidades do seu aplicativo.

 
mytarmailS #:
Alexei, pare de ouvir o profano.

Se você precisar de um número diferente de sinais por entrada.
Isso é mineração frequente de padrões - procure regras associativas em diferentes variações, inclusive com um professor.


==============
Por que eu disse que NÃO existem algoritmos que utilizam diferentes números de recursos?
Porque, mesmo nesses algoritmos, no fundo, os dados são uma matriz esparsa em um formato de codificação quente.
A entrada ainda são todos os nomes dos recursos, embora em um formato mais suave.
=======================
Além disso, o número de recursos não foi especificado
Se o número de sinais for relativamente pequeno, de 10 a 20 mil, você poderá carregá-lo no xgboost, mesmo em um laptop fraco, sem problemas.

Já discutimos regras associativas com você. Para mim, elas não se encaixam bem em minha abordagem geral de busca de diferenças entre preço e SB. O problema é que o SB é muito bom em fazer parecer que existem regras - o único problema é que elas serão diferentes em sites diferentes.

 
Aleksey Nikolayev #:

Já discuti as regras associativas com você. Para mim, elas não se encaixam bem em minha abordagem geral de procurar diferenças entre preço e SB. O problema é que o SB é muito bom em fazer com que as regras pareçam existir - o único problema é que elas serão diferentes em locais diferentes.

Então, vá em frente, mas para preparar os dados como você deseja (sem estrutura), você precisa entender como fazê-lo corretamente. Para isso, você deve estudar como preparar dados para regras associativas.
 

Bom trabalho, até mesmo eu peguei algo interessante para mim no contexto da alteração do comprimento da janela.

Se tiver mais perguntas, faça um esboço delas e eu lhe perguntarei depois do Ano Novo.

Razão: