交易中的机器学习:理论、模型、实践和算法交易 - 页 2876

 
Maxim Dmitrievsky #:
我稍后再试试。如果有更多问题选项,请提出来:)

1) 非固定特征数量的模型是否用于它本身?(我想是的)。

2) 要求提供一个递归函数的一般形式,该函数将一个数字 映射到一个任意长度的数字列表。

 
Aleksey Nikolayev #:

也许可以请您举一个简单的例子,说明如何在特征数量可变的分类任务中使用逻辑回归?

如果特征的数量总是不同,那么就很难应用传统的机器学习算法,因为传统的机器学习算法需要将固定大小的特征向量作为输入。解决这一问题的方法之一是使用一种名为 "特征散列 "的方法,它可以将长度可变的特征集表示为固定大小的特征向量。

特征散列的工作原理是对特征集中的特征应用散列函数,并将散列值作为固定大小特征向量的索引。这样就可以将长度可变的特征集映射为固定大小的向量,然后将其作为机器学习模型的输入。

例如,假设你有一个特征数量可变的数据集,你想使用逻辑回归对数据进行分类。你可以对数据集中的特征应用特征散列,从而得到一个固定大小的特征向量,作为逻辑回归模型的输入。

总的来说,特征散列是一种有用的技术,可用于处理特征数量不固定的数据集,并可与逻辑回归等机器学习算法结合使用,以解决分类问题。

 
Aleksey Nikolayev #:

1) 具有非固定特征数量的模型是否可用于自身?(显然是)。

2) 求一个递归函数的一般形式,它能将一个数字 映射到一个任意长度的数字列表中。

1 关于它本身的问题,不知何故不愿意回答,但那里有一个变换器,所以是的

2 将一个数字映射到一个任意长度的数字列表 的递归函数的一般形式

递归函数是在执行过程中调用自身的函数。下面是一个将一个数字映射到任意长度的数字列表的递归函数的一般示例:

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)

该函数将整数 n 和列表 lst 作为输入。然后检查 n 是否等于 0。如果等于 0,函数返回列表 lst。如果 n 不等于 0,函数会将 n 追加到列表 lst 的末尾,然后用修改后的 lst 和数值 n-1 调用自身。这个过程一直持续到 n 等于 0,此时函数返回列表的最终版本。

这只是使用递归函数将数字映射到列表的一个例子。还有许多其他方法可以编写这样的函数,具体实现方法将取决于您要解决的问题的具体要求和限制。


- 用 R 语言显示这段代码

下面是用 R 语言编写的上一示例中的递归函数:

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

该函数与上一示例类似,但使用了 R 语言语法和函数。if 语句用于检查 n 是否等于 0,return 函数用于返回列表的最终版本。c 函数用于将 n 追加到列表 lst 的末尾。

如前所述,这只是递归函数用于将数字映射到列表的一个例子。具体的实现方法将取决于您要解决的问题的具体要求和限制。

 
Maxim Dmitrievsky #:

特征散列的工作原理是对特征集中的特征应用散列函数,并将散列值作为固定大小特征向量的索引。这样就可以将长度可变的特征集映射到固定大小的向量中,然后将其作为机器学习模型的输入。

接下来,让他来告诉你有哪些哈希函数变体可用于数字向量。

 
Maxim Dmitrievsky #:

如果特征的数量总是不同,那么就很难应用传统的机器学习算法,因为这些算法需要一个固定大小的特征向量作为输入。解决这一问题的方法之一是使用一种名为 "特征散列 "的方法,它可以将长度可变的特征集表示为固定大小的特征向量。

特征散列的工作原理是对特征集中的特征应用散列函数,并将散列值作为固定大小特征向量的索引。这样就可以将长度可变的特征集映射为固定大小的向量,然后将其作为机器学习模型的输入。

例如,假设你有一个特征数量可变的数据集,你想使用逻辑回归对数据进行分类。您可以对数据集中的特征应用特征散列,从而生成一个固定大小的特征向量,作为逻辑回归模型的输入。

总的来说,特征散列是一种有用的技术,可用于处理特征数量不固定的数据集,并可与逻辑回归等机器学习算法结合使用,以解决分类问题。

更新


对于特征数量可变的数据,可以使用的表示方法包括

  1. 固定大小的特征向量:如前所述,可以使用特征选择技术从数据中选择固定数量的特征,并将其表示为特征向量。

  2. 稀疏特征向量:您可以使用稀疏特征向量来代替密集特征向量,稀疏特征向量只包含可能特征的子集。如果可能的特征数量非常多,而在任何给定的实例中只存在其中的一小部分,那么这种方法就非常有用。

  3. 图形数据:您可以将数据表示为图形,每个实例表示为图形中的一个节点,节点之间的边表示实例之间的关系。如果您使用的机器学习模型(如图卷积网络)设计用于处理图数据,那么这将非常有用。

同样,最佳表示方法将取决于问题的具体要求和限制。在决定哪种表示法最适合您的需求时,考虑您的数据特征和项目目标非常重要。

 
Aleksey Nikolayev #:

然后,让他告诉我们有哪些哈希函数变体用于数字向量。

下面列出了一些常用的散列函数,可用于将整数或其他数据类型映射到列表或其他数据结构:

  1. 模块散列:模块散列是一种简单的散列函数,通过取值的不同质数幂的模数,将整数或其他数据类型映射到列表或其他数据结构。

  2. 多项式散列:多项式散列是一种散列函数,通过对特定点的多项式求值,将整数或其他数据类型映射到列表或其他数据结构。多项式由值和质数定义。

  3. 通用散列:通用散列是一种使用随机生成的散列函数将整数或其他数据类型映射到列表或其他数据结构的散列函数。散列函数是从碰撞概率较低的散列函数族中选择的。

  4. 哈希表:哈希表是一种使用哈希函数将键映射到值的数据结构。它们可用于将整数或其他数据类型映射到列表或其他数据结构。

  5. 散列映射表:散列映射表是一种使用散列函数将键映射到值的数据结构。它们可用于将整数或其他数据类型映射到列表或其他数据结构。

  6. 散列集:散列集是使用散列函数存储一组值的数据结构。它们可用于将整数或其他数据类型映射到列表或其他数据结构。

以上只是散列函数和数据结构的几个例子,它们可用于将整数或其他数据类型映射到列表或其他数据结构。具体选择哪种散列函数或数据结构取决于数据的特性。


下面是 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 将数字映射到任意长度数字列表的递归函数的一般视图

相反,输入是列表,输出是数字。比如,我们根据报价进行预测)。

然后,请问有哪些 MO 算法可以用来构建这样的函数?

 
Aleksey Nikolayev #:

相反,输入是一个列表,输出是一个数字。比如,我们用引号来进行预测)。

那么,请问有哪些 MO 算法可以用来构建这样的函数?

如果要将不同长度的列表散列为整数,可以使用将列表映射为整数的散列函数。其中一种方法是使用模块散列函数,该函数通过取列表中不同素数幂次的元素之和的模来将列表映射为整数。

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

该函数将列表 lst 和质数 p 作为输入,通过对列表中不同质数幂次的元素求和并对结果取模,返回一个整数哈希值。

例如,如果我们调用 modular_hash([1,2,3],2),函数将返回 7。

在 R 中也可以使用类似的方法。下面是 R 语言中将列表映射为整数的模块化散列函数的代码:

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
}


散列函数通常不是使用机器学习算法生成的。相反,它们通常是根据散列数据的特征和应用程序的要求设计的。

尽管如此,机器学习算法仍可用于评估不同散列函数的性能,或针对特定任务优化散列函数的参数。例如,您可以使用机器学习算法来优化模块散列函数中使用的质数,或选择在特定数据集上表现良好的多项式散列函数的系数。

总之,虽然机器学习算法通常不用于构建哈希函数,但可用于评估和优化某些应用中哈希函数的性能。

 
-

然而,我如何才能使用机器学习 算法构建一个类似的哈希函数呢?


*

使用机器学习算法构建哈希函数并不常见,因为哈希函数的主要目标是将数据映射到一个固定大小的表示形式,并尽可能保留数据的结构。另一方面,机器学习算法通常用于学习模式或根据数据进行预测,而不是生成固定大小的数据表示。

不过,如果你仍想探索使用机器学习算法构建哈希函数的可能性,可以尝试的一种方法是使用无监督学习算法来学习数据的紧凑表示,然后使用该表示作为哈希函数。

例如,你可以使用自动编码器或聚类算法来学习数据的紧凑表示,然后使用该表示作为散列函数。这需要在数据上训练机器学习模型,然后使用训练好的模型为新数据生成哈希值。

总之,虽然使用机器学习算法构建哈希函数并不常见,但在某些应用中,使用机器学习来学习数据的精简表示法并将其用作哈希函数是可行的。


 
Maxim Dmitrievsky #:

下面列出了一些常用的哈希函数,可用于将整数或其他数据类型映射到列表或其他数据结构:

我以为它可以将任意大小的向量映射到固定指定大小的向量,但这里却将一个数字映射到一个向量?

一切都变得复杂而难以理解)没有 GPT 的生活要简单得多)在人工智能时代,我们的日子会很难过)