トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング - ページ 2876

 
Maxim Dmitrievsky #:
もう少し後で試してみるよ。他にも質問の選択肢があれば、どんどん入れてください :)

1) 機能の数が固定されていないモデルは、それ自体に使われるのでしょうか?(私はそう思う)。

2)数を 任意の長さの数値リストにマップする再帰関数の一般的な形式を求める。

削除済み  
Aleksey Nikolayev #:

特徴数が可変の分類タスクでロジスティック回帰を使用する簡単な例を尋ねてみてはどうだろうか?

特徴数が常に異なる場合、入力として固定サイズの特徴ベクトルを期待する従来の機械学習アルゴリズムを適用するのは難しいかもしれません。この問題に対する1つの解決策は、可変長の特徴セットを固定サイズの特徴ベクトルとして表現できる「特徴ハッシュ」と呼ばれる手法を使うことです。

特徴ハッシュは、特徴セット内の特徴にハッシュ関数を適用し、そのハッシュ値を固定サイズの特徴ベクトルのインデックスとして使用することで機能します。これにより、可変長の特徴セットを固定サイズのベクトルにマッピングし、機械学習モデルの入力として使用することができる。

例えば、特徴数が可変のデータセットがあり、ロジスティック回帰を使ってデータを分類したいとします。データセットの特徴に特徴ハッシュを適用することで、ロジスティック回帰モデルの入力として使える固定サイズの特徴ベクトルを得ることができる。

全体として、特徴ハッシングは、特徴数が可変のデータ集合を扱うのに便利なテクニックで、分類問題を解決するためにロジスティック回帰のような機械学習アルゴリズムと組み合わせて使うことができます。

削除済み  
Aleksey Nikolayev #:

生年月日が生年月日から生年月日生年月日生年月日生年月日生年月日生年月日生年月日生年月日(どうやらイエスだ)。

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)

このこのこのこのこのこのーこのーこのーこのーこのーこのーこのーこのーこのーこのーこのーこのーこのーーーーーーーーーーーーーーーーーーーーIt then checks if n is equal to 0.If it is, the function returns the list lst .nが0に等しくない場合、この関数はnをリストlstの末尾に追加し、変更後のlstと値n-1で自分自身を呼び出します。この処理はnが0になるまで続けられ、その時点で関数はリストの最終版を返す。

これは、再帰関数を使って数値をリストにマッピングする方法の一例に過ぎない。このような関数を書く方法は他にもたくさんあり、具体的な実装は、解決しようとしている問題の具体的な要件と制約に依存する。


- このコードをR言語で表示 する

Here is the recursive function from the previous example, written in R:

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

This function is similar to the previous example, but it uses R syntax and functions.if文はnが0に等しいかどうかをチェックするのに使われ、return関数はリストの最終版を返すのに使われる。ー c 関数はー n をー lst リストのー末尾にー c 関数ー

前述したように、これは再帰関数を使用して数値をリストにマッピングする方法の一例に過ぎない。具体的な実装は、解こうとしている問題の具体的な要件と制約に依存する。

 
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を入力とし、リストの要素を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がなければ、人生はもっとシンプルだった。)