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

 
Aleksey Nikolayev #:

我认为它承诺将任意大小的矢量映射到固定指定大小的矢量中,但这里却将一个数字映射到一个矢量中?

一切都变得复杂而难以理解)没有 GPT,生活会容易得多)在人工智能时代,我们会过得很艰难)

我写过更多关于向量到数字的文章。

矢量到固定矢量?

 

如果要将不同长度的列表散列为固定长度的列表,可以使用散列函数将列表映射为固定大小的列表。其中一种方法是使用一种称为 "特征散列 "的技术,通过对列表中的元素应用散列函数,并将散列值用作固定大小列表的索引,从而将可变长度的列表表示为固定大小的列表。

下面是 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

该函数将列表 lst 和所需列表长度 n 作为输入,通过对 lst 的元素应用散列函数并将散列值用作固定大小列表的索引,返回一个固定大小的列表。然后,每个索引上的值都会递增,以计算每个元素在原始列表中出现的次数。

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

在 R 中也可以使用类似的方法。下面是 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 #:

我认为它承诺将任意大小的矢量映射到固定指定大小的矢量中,但这里却将一个数字映射到一个矢量中?

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

阿列克谢,别再听信亵渎之言了。

如果每个输入需要不同数量的特征。
这就是频繁模式挖掘--在不同变化中搜索关联规则,包括与老师一起。


==============
为什么我说不存在接受不同特征数的算法?
因为即使在这些算法的引擎盖下,数据也是以一种热编码格式的稀疏矩阵形式存在的。
输入仍然是所有特征的名称,只是格式更加温和。
=======================
也没有指定属性的数量
如果特征的数量相对较少,只有 10-20k 个,那么即使在性能较弱的笔记本电脑上也能顺利将其加载到 xgboost 中。
 
Maxim Dmitrievsky #:

矢量变成固定矢量?

1) 如果我们想使用任何普通的 MO 算法(具有固定数量的特征),那么是的--我们将一组不同长度的向量转换成一组给定长度的向量。

2) 立即寻找一种不寻常的 MO 算法,它可以将任何长度的向量作为输入。

如果通过 MO 来实现矢量转换,第一种方法就会变成第二种方法。

 
Aleksey Nikolayev #:

1) 如果我们想使用任何传统的 MO 算法(具有固定数量的特征),那么是的,我们将一组不同长度的向量转换成一组给定长度的向量。

2) 立即寻找一种不同寻常的 MO 算法,它可以将任意长度的向量作为输入。

如果通过 MO 来实现矢量转换,第一种方案就会变成第二种方案。

所以很明显,我们可以通过哈希 F-iys 进行尝试。但我想问的是,选择任意长度的向量,或者说选择它们的长度:)的原则是什么?

可以有很多变体

第一种方案更讨人喜欢,但你需要在逻辑中加入一些东西

 

- 我想将大小可变的价格回报向量散列为固定向量


如果您想将大小可变的股票价格回报向量散列为固定大小的向量,可以使用一种称为最小散列的技术。最小散列是一种通过计算两个集合的共同元素数量来近似判断两个集合相似性的方法。它通常用于文本挖掘,但也可用于其他类型的数据,如股票价格回报。

下面举例说明如何使用 min-hash 将大小可变的股票价格回报向量散列为固定大小的向量:

  1. 定义固定大小向量的大小:首先,您需要定义要使用的固定大小向量的大小。这将取决于应用程序的具体要求和可用数据量。

  2. 创建散列函数:接下来,你需要创建一个散列函数,用于将股价回报数据散列到固定大小的向量中。创建哈希函数有许多不同的方法,例如使用随机排列或线性全等生成器。

  3. 对数据进行散列:一旦定义了固定大小向量的大小并创建了散列函数,就可以使用这些函数将股价回报数据的可变大小向量散列到固定大小向量中。生成的固定大小向量将以压缩形式表示原始数据,向量的大小由你定义的大小决定。

值得注意的是,min-hash 可能会导致信息丢失,因为它只是两个集合之间相似性的近似值,而不是精确的表示。近似值的准确性取决于固定大小向量的大小和使用的特定哈希函数。


- 如何尽量减少信息丢失


在使用 min-hash 将股票价格回报的可变大小向量散列到固定大小向量时,有几种方法可以最大限度地减少信息丢失:

  1. 使用更大的固定大小向量:尽量减少信息丢失的一种方法是使用更大的固定大小向量。较大的向量会有更多元素,因此可以捕捉到更多原始数据信息。不过,这也会增加向量的大小,如果数据集较大或存储空间有限,可能并不实用。

  2. 使用更好的散列函数:尽量减少信息丢失的另一种方法是使用更好的散列函数。不同的散列函数有不同的特性,会导致不同程度的信息丢失。例如,随机性高的散列函数通常比随机性低的散列函数造成的信息损失要少。

  3. 使用多个哈希函数:使用多个哈希函数并合并结果,也可以最大限度地减少信息丢失。这有助于更完整地呈现原始数据,因为每个哈希函数都会捕捉数据的不同方面。

值得注意的是,使用最小哈希值可能无法完全消除信息丢失,因为它只是两个集合之间相似性的近似值,而不是精确的表示。近似值的准确性取决于固定大小向量的大小和使用的特定哈希函数。


下面是一个示例,说明如何在 Python 中使用 min-hash 将大小可变的股票价格回报向量散列为固定大小的向量:

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


下面举例说明如何在 R 中使用 min-hash,将股价回报的可变大小向量散列为固定大小的向量:


# 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)


需要注意的是,这些示例旨在说明使用 min-hash 将股价回报率的可变大小向量散列为固定大小向量的基本过程。在实际应用中,您可能需要修改代码,以适应您的特定需求和数据。

 

- 那么最小哈希值是最好的方法吗?

最小散列是一种通过计算两个集合的共同元素数量来近似判断两个集合相似性的方法。它可用于将大小可变的股票价格回报向量散列为固定大小的向量,但它不一定是最佳方法,因为它可能导致信息丢失。

散列股票价格回报数据有许多不同的方法,最佳方法取决于数据的具体特征和应用程序的要求。您可以考虑的其他一些方法包括

  1. 特征散列:特征散列是一种用于将分类或文本数据转换为数字表示的技术,可用于机器学习 算法。您可以使用特征散列将股价回报数据散列为固定大小的向量。

  2. 位置敏感散列(LSH):LSH 是一种用于近似识别数据集中类似项目的技术。您可以使用 LSH 将股价回报数据散列到固定大小的向量中,然后根据其散列值识别类似项目。

  3. 其他技术:您还可以使用许多其他技术对股票价格回报数据进行散列,例如使用随机排列或线性同位生成器。您选择的具体技术将取决于数据的特性和应用的要求。

在选择散列技术时,必须仔细考虑准确性和效率之间的权衡。有些技术可能更准确,但效率较低;而有些技术可能更高效,但准确性较低。您需要找到能满足应用需求的平衡点。

 
mytarmailS #:
阿列克谢,别再听亵渎的话了。

如果每次输入需要不同数量的标志。
这就是频繁模式挖掘--在不同的变化中搜索关联规则,包括与老师一起。


==============
为什么我说不存在采用不同数量特征的算法?
因为即使在这种算法的引擎盖下,数据也是一种热编码格式的稀疏矩阵。
输入仍然是所有特征的名称,只是格式更加温和。
=======================
另外,没有指定特征的数量
如果标志的数量相对较少,只有 10-20k 个,那么即使在性能较弱的笔记本电脑上,也能顺利通过 xgboost 加载。

我们已经和你讨论过关联规则。对我来说,它们与我寻找价格和 SB 之间差异的一般方法不太相符。问题是,SB 很擅长让人觉得有规则可循,唯一的问题是不同网站的规则会有所不同。

 
Aleksey Nikolayev #:

我已经和你讨论过联想规则了。对我来说,它们与我寻找价格和 SB 之间差异的一般方法并不相符。问题是,SB 很擅长让规则看起来是存在的--唯一的问题是,它们在不同的站点会有所不同。

但要按您的要求准备数据(无结构),您需要了解如何正确地准备数据,为此,您应该研究如何为关联规则准备数据。
 

干得好,在改变窗口长度的背景下,我自己也发现了一些有趣的东西。

如果您还有其他问题,请勾画出来,我将在新年后向您请教。