L'Apprentissage Automatique dans le trading : théorie, modèles, pratique et trading algo - page 2876

 
Maxim Dmitrievsky #:
J'essaierai un peu plus tard. S'il y a d'autres options pour des questions, ajoutez-les :)

1) Le modèle avec un nombre non fixe de caractéristiques est-il utilisé pour lui-même ? (je pense que oui).

2) Demander une forme générale d'une fonction récursive qui fait correspondre un nombre à une liste numérique de longueur arbitraire.

 
Aleksey Nikolayev #:

Vous pourriez peut-être demander un exemple simple d'utilisation de la régression logistique dans une tâche de classification avec un nombre variable de caractéristiques ?

Si le nombre de caractéristiques est toujours différent, il peut être difficile d'appliquer les algorithmes traditionnels d'apprentissage automatique qui attendent un vecteur de caractéristiques de taille fixe en entrée. Une solution à ce problème consiste à utiliser une méthode appelée "hachage de caractéristiques", qui permet de représenter un ensemble de caractéristiques de longueur variable sous la forme d'un vecteur de caractéristiques de taille fixe.

Le hachage de caractéristiques consiste à appliquer une fonction de hachage aux caractéristiques de l'ensemble de caractéristiques et à utiliser les valeurs de hachage comme indices dans un vecteur de caractéristiques de taille fixe. Cela vous permet de faire correspondre un ensemble de caractéristiques de longueur variable à un vecteur de taille fixe, qui peut ensuite être utilisé comme entrée d'un modèle d'apprentissage automatique.

Par exemple, supposons que vous disposiez d'un ensemble de données avec un nombre variable de caractéristiques et que vous souhaitiez utiliser la régression logistique pour classer les données. Vous pouvez appliquer le hachage de caractéristiques aux caractéristiques de l'ensemble de données, ce qui permet d'obtenir un vecteur de caractéristiques de taille fixe qui peut être utilisé comme entrée dans le modèle de régression logistique.

Dans l'ensemble, le hachage de caractéristiques est une technique utile pour traiter les ensembles de données comportant un nombre variable de caractéristiques, et peut être utilisé en combinaison avec des algorithmes d'apprentissage automatique tels que la régression logistique pour résoudre les problèmes de classification.

 
Aleksey Nikolayev #:

1) Un modèle avec un nombre non fixe de caractéristiques est-il utilisé pour lui-même ? (Apparemment oui.)

2) Demander la forme générale d'une fonction récursive qui fait correspondre un nombre à une liste numérique de longueur arbitraire.

1 sur lui-même est quelque peu réticent à répondre, mais il y a un transformateur, donc oui

2 une vue générale d'une fonction récursive qui fait correspondre un nombre à une liste numérique de longueur arbitraire

Une fonction récursive est une fonction qui s'appelle elle-même dans le cadre de son exécution. Voici un exemple général d'une fonction récursive qui associe un nombre à une liste numérique de longueur arbitraire :

def map_to_list(n: int, lst: List[int]) -> List[int]:
  if n == 0:
    return lst
  else:
    lst.append(n)
    return map_to_list(n-1, lst)

Cette fonction prend en entrée un entier n et une liste lst. Elle vérifie ensuite si n est égal à 0. Si c'est le cas, la fonction renvoie la liste lst . Si n n'est pas égal à 0, la fonction ajoute n à la fin de la liste lst et s'appelle elle-même avec la liste lst modifiée et la valeur n-1 . Ce processus se poursuit jusqu'à ce que n soit égal à 0. La fonction renvoie alors la version finale de la liste.

Ce n'est qu'un exemple de la manière dont une fonction récursive peut être utilisée pour faire correspondre un nombre à une liste. Il existe de nombreuses autres façons d'écrire une telle fonction, et l'implémentation spécifique dépendra des exigences et des contraintes propres au problème que vous essayez de résoudre.


- Afficher ce code en langage R

Voici la fonction récursive de l'exemple précédent, écrite en R :

map_to_list <- function(n, lst) {
  if (n == 0) {
    return(lst)
  } else {
    lst <- c(lst, n)
    return(map_to_list(n-1, lst))
  }
}

Cette fonction est similaire à l'exemple précédent, mais elle utilise la syntaxe et les fonctions R. L'instruction if est utilisée pour vérifier si n est égal à 0, et la fonction return est utilisée pour renvoyer la version finale de la liste. La fonction c est utilisée pour ajouter n à la fin de la liste lst .

Comme précédemment, il ne s'agit que d'un exemple de la manière dont une fonction récursive peut être utilisée pour faire correspondre un nombre à une liste. La mise en œuvre spécifique dépendra des exigences et des contraintes propres au problème que vous essayez de résoudre.

 
Maxim Dmitrievsky #:

Le hachage des caractéristiques consiste à appliquer une fonction de hachage aux caractéristiques de l'ensemble de caractéristiques et à utiliser les valeurs de hachage comme indices dans un vecteur de caractéristiques de taille fixe. Cela vous permet de faire correspondre un ensemble de caractéristiques de longueur variable à un vecteur de taille fixe, qui peut ensuite être utilisé comme entrée d'un modèle d'apprentissage automatique.

Il vous expliquera ensuite quelles variantes de fonctions de hachage sont utilisées pour les vecteurs numériques.

 
Maxim Dmitrievsky #:

Si le nombre de caractéristiques est toujours différent, il peut être difficile d'appliquer les algorithmes traditionnels d'apprentissage automatique qui attendent un vecteur de caractéristiques de taille fixe en entrée. Une solution à ce problème consiste à utiliser une méthode appelée "hachage de caractéristiques", qui permet de représenter un ensemble de caractéristiques de longueur variable sous la forme d'un vecteur de caractéristiques de taille fixe.

Le hachage de caractéristiques consiste à appliquer une fonction de hachage aux caractéristiques de l'ensemble de caractéristiques et à utiliser les valeurs de hachage comme indices dans un vecteur de caractéristiques de taille fixe. Cela vous permet de mapper un ensemble de caractéristiques de longueur variable en un vecteur de taille fixe, qui peut ensuite être utilisé comme entrée d'un modèle d'apprentissage automatique.

Par exemple, supposons que vous disposiez d'un ensemble de données avec un nombre variable de caractéristiques et que vous souhaitiez utiliser la régression logistique pour classer les données. Vous pouvez appliquer le hachage de caractéristiques aux caractéristiques de l'ensemble de données, ce qui permet d'obtenir un vecteur de caractéristiques de taille fixe qui peut être utilisé comme entrée dans le modèle de régression logistique.

Dans l'ensemble, le hachage de caractéristiques est une technique utile pour traiter les ensembles de données comportant un nombre variable de caractéristiques, et peut être utilisé en combinaison avec des algorithmes d'apprentissage automatique tels que la régression logistique pour résoudre les problèmes de classification.

mise à jour


Pour les données comportant un nombre variable de caractéristiques, vous pouvez utiliser les représentations suivantes :

  1. Vecteurs de caractéristiques de taille fixe : comme indiqué précédemment, vous pouvez utiliser des techniques de sélection de caractéristiques pour sélectionner un nombre fixe de caractéristiques à partir de vos données et les représenter sous la forme d'un vecteur de caractéristiques.

  2. Vecteurs de caractéristiques éparses : au lieu d'utiliser un vecteur de caractéristiques dense, vous pouvez utiliser un vecteur de caractéristiques éparses, qui ne comprend qu'un sous-ensemble de caractéristiques possibles. Cela peut s'avérer utile si vous disposez d'un très grand nombre de caractéristiques possibles et que seul un petit nombre d'entre elles est présent dans une instance donnée.

  3. Données graphiques : vous pouvez représenter vos données sous la forme d'un graphique, chaque instance étant représentée par un nœud dans le graphique et les arêtes entre les nœuds représentant les relations entre les instances. Cela peut être utile si vous utilisez un modèle d'apprentissage automatique conçu pour traiter des données graphiques, tel qu'un réseau convolutionnel graphique.

Encore une fois, la meilleure représentation dépendra des exigences et des contraintes spécifiques de votre problème. Il est important de prendre en compte les caractéristiques de vos données et les objectifs de votre projet lorsque vous décidez de la représentation la mieux adaptée à vos besoins.

 
Aleksey Nikolayev #:

Qu'il dise ensuite quelles variantes de fonctions de hachage sont utilisées pour les vecteurs numériques.

Voici une liste de quelques fonctions de hachage courantes qui peuvent être utilisées pour faire correspondre des entiers ou d'autres types de données à des listes ou à d'autres structures de données :

  1. Hachage modulaire : le hachage modulaire est une fonction de hachage simple qui fait correspondre un nombre entier ou un autre type de données à une liste ou à une autre structure de données en prenant le modulo de la valeur à différentes puissances d'un nombre premier.

  2. Hachage polynomial : le hachage polynomial est une fonction de hachage qui associe un entier ou un autre type de données à une liste ou à une autre structure de données en évaluant un polynôme en un point spécifique. Le polynôme est défini par la valeur et un nombre premier.

  3. Hachage universel : le hachage universel est une fonction de hachage qui associe un nombre entier ou un autre type de données à une liste ou à une autre structure de données à l'aide d'une fonction de hachage générée de manière aléatoire. La fonction de hachage est choisie dans une famille de fonctions de hachage qui ont une faible probabilité de collision.

  4. Tables de hachage : les tables de hachage sont des structures de données qui utilisent une fonction de hachage pour associer des clés à des valeurs. Elles peuvent être utilisées pour faire correspondre un nombre entier ou un autre type de données à une liste ou à une autre structure de données.

  5. Cartes de hachage : les cartes de hachage sont des structures de données qui utilisent une fonction de hachage pour associer des clés à des valeurs. Elles peuvent être utilisées pour faire correspondre un entier ou un autre type de données à une liste ou à une autre structure de données.

  6. Ensembles de hachage : les ensembles de hachage sont des structures de données qui utilisent une fonction de hachage pour stocker un ensemble de valeurs. Ils peuvent être utilisés pour faire correspondre un entier ou un autre type de données à une liste ou à une autre structure de données.

Il ne s'agit là que de quelques exemples de fonctions de hachage et de structures de données qui peuvent être utilisées pour faire correspondre des entiers ou d'autres types de données à des listes ou à d'autres structures de données. La fonction de hachage ou la structure de données que vous choisirez dépendra des caractéristiques de vos données


Voici des exemples de fonctions de hachage modulaire, de hachage polynomial, de hachage universel, de table de hachage, de carte de hachage et d'ensemble de hachage dans R :

modular_hash <- function(n, length, p) {
  lst <- vector("numeric", length)
  for (i in 1:length) {
    lst[i] <- n %% p^(i+1)
  }
  lst
}

polynomial_hash <- function(n, length, p) {
  lst <- vector("numeric", length)
  for (i in 1:length) {
    lst[i] <- sum(n * p^(i-1)) %% p^(length+1)
  }
  lst
}

universal_hash <- function(n, length, p) {
  a <- sample(p^length, length, replace=TRUE)
  b <- sample(p^length, length, replace=TRUE)
  lst <- vector("numeric", length)
  for (i in 1:length) {
    lst[i] <- sum(a[i] * n + b[i]) %% p^(length+1)
  }
  lst
}

hash_table <- function(n, length, p) {
  lst <- vector("list", p^length)
 
Maxim Dmitrievsky #:

2 une vue générale d'une fonction récursive qui fait correspondre un nombre à une liste numérique de longueur arbitraire

Au contraire, l'entrée est une liste, la sortie est un nombre. Par exemple, nous faisons des prévisions basées sur des citations).

Demandez ensuite quels algorithmes de MO peuvent être utilisés pour construire de telles fonctions.

 
Aleksey Nikolayev #:

Au contraire, l'entrée est une liste, la sortie est un nombre. Par exemple, nous utilisons les guillemets pour faire une prédiction)

Demandez ensuite quels algorithmes MO peuvent être utilisés pour construire de telles fonctions.

Si vous voulez hacher une liste de différentes longueurs en un nombre entier, vous pouvez utiliser une fonction de hachage qui fait correspondre la liste à un nombre entier. Une façon d'y parvenir est d'utiliser une fonction de hachage modulaire, qui fait correspondre la liste à un entier en prenant le modulo de la somme des éléments de la liste à différentes puissances d'un nombre premier.

def modular_hash(lst: List[int], p: int) -> int:
  h = 0
  for i, x in enumerate(lst):
    h += x * p**i
  return h % M

Cette fonction prend une liste lst et un nombre premier p en entrée, et renvoie une valeur de hachage entière en additionnant les éléments de la liste à différentes puissances de p et en prenant le modulo du résultat.

Par exemple, si nous appelons modular_hash([1, 2, 3], 2) , la fonction renverra 7 .

Vous pouvez également utiliser une approche similaire dans R. Voici le code d'une fonction de hachage modulaire en R qui associe une liste à un entier :

modular_hash <- function(lst, p, M) {
  h <- 0
  for (i in 1:length(lst)) {
    h <- h + lst[i] * p^(i-1)
  }
  h %% M
}
polynomial_hash <- function(lst, p, M) {
  h <- 0
  for (i in 1:length(lst)) {
    h <- h + lst[i] * p^(i-1)
  }
  h %% M
}

universal_hash <- function(lst, p, M) {
  a <- sample(p^length(lst), length(lst), replace=TRUE)
  b <- sample(p^length(lst), length(lst), replace=TRUE)
  h <- 0
  for (i in 1:length(lst)) {
    h <- h + a[i] * lst[i] + b[i]
  }
  h %% M
}


Les fonctions de hachage ne sont généralement pas générées à l'aide d'algorithmes d'apprentissage automatique. Elles sont plutôt conçues en fonction des caractéristiques des données à hacher et des exigences de l'application.

Cela dit, les algorithmes d'apprentissage automatique peuvent être utilisés pour évaluer les performances de différentes fonctions de hachage ou pour optimiser les paramètres d'une fonction de hachage pour une tâche spécifique. Par exemple, vous pouvez utiliser un algorithme d'apprentissage automatique pour optimiser le nombre premier utilisé dans une fonction de hachage modulaire, ou pour choisir les coefficients d'une fonction de hachage polynomiale qui donne de bons résultats sur un ensemble de données particulier.

Globalement, si les algorithmes d'apprentissage automatique ne sont généralement pas utilisés pour créer des fonctions de hachage, ils peuvent être utilisés pour évaluer et optimiser les performances des fonctions de hachage dans certaines applications.

 
-

et pourtant, comment puis-je construire une fonction de hachage similaire en utilisant un algorithme d'apprentissage automatique?


*

Il n'est pas courant de construire une fonction de hachage à l'aide d'un algorithme d'apprentissage automatique, car l'objectif premier d'une fonction de hachage est de faire correspondre des données à une représentation de taille fixe d'une manière qui préserve autant que possible la structure des données. Les algorithmes d'apprentissage automatique, quant à eux, sont généralement utilisés pour apprendre des modèles ou faire des prédictions basées sur des données, plutôt que pour générer des représentations de taille fixe des données.

Toutefois, si vous souhaitez toujours explorer la possibilité d'utiliser un algorithme d'apprentissage automatique pour construire une fonction de hachage, vous pouvez utiliser un algorithme d'apprentissage non supervisé pour apprendre une représentation compacte des données, puis utiliser cette représentation comme fonction de hachage.

Par exemple, vous pourriez utiliser un autoencodeur ou un algorithme de regroupement pour apprendre une représentation compacte des données, puis utiliser cette représentation comme fonction de hachage. Cela impliquerait de former le modèle d'apprentissage automatique sur les données, puis d'utiliser le modèle formé pour générer les valeurs de hachage pour les nouvelles données.

Globalement, s'il n'est pas courant de construire une fonction de hachage à l'aide d'un algorithme d'apprentissage automatique, il est possible d'utiliser l'apprentissage automatique pour apprendre une représentation compacte des données qui pourrait être utilisée comme fonction de hachage dans certaines applications.


 
Maxim Dmitrievsky #:

Voici une liste de fonctions de hachage courantes qui peuvent être utilisées pour faire correspondre des nombres entiers ou d'autres types de données à des listes ou à d'autres structures de données :

Je pensais qu'elle promettait de faire correspondre un vecteur de taille arbitraire à un vecteur de taille fixe spécifiée, mais ici elle fait correspondre un nombre à un vecteur ?

Tout est compliqué et incompréhensible) La vie était beaucoup plus simple sans GPT) Nous aurons du mal à entrer dans l'ère de l'IA)