트레이딩의 머신러닝: 이론, 모델, 실전 및 알고리즘 트레이딩 - 페이지 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이 아닌 경우 이 함수는 목록 lst의 끝에 n을 더한 다음 수정된 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인지 확인하는 데 사용되며, 반환 함수는 목록의 최종 버전을 반환하는 데 사용됩니다. c 함수는 목록의 끝에 n을 추가하는 데 사용됩니다.

이전과 마찬가지로 이것은 재귀 함수를 사용하여 숫자를 목록에 매핑하는 방법의 한 예일 뿐입니다. 구체적인 구현은 해결하려는 문제의 특정 요구 사항과 제약 조건에 따라 달라집니다.

 
Maxim Dmitrievsky #:

피처 해싱은 피처 세트의 피처에 해시 함수를 적용하고 해시 값을 고정 크기 피처 벡터의 인덱스로 사용하는 방식으로 작동합니다. 이를 통해 가변 길이의 특징 집합을 고정 크기 벡터에 매핑할 수 있으며, 이를 머신 러닝 모델의 입력으로 사용할 수 있습니다.

그런 다음 숫자 벡터에 어떤 해시 함수의 변형이 사용되는지 설명합니다.

 
Maxim Dmitrievsky #:

특징의 수가 항상 다른 경우, 고정된 크기의 특징 벡터를 입력으로 기대하는 기존의 머신 러닝 알고리즘을 적용하기 어려울 수 있습니다. 이 문제에 대한 한 가지 해결책은 '특징 해싱'이라는 방법을 사용하여 가변 길이의 특징 집합을 고정 크기의 특징 벡터로 나타낼 수 있게 하는 것입니다.

피처 해싱은 피처 세트의 피처에 해시 함수를 적용하고 해시값을 고정 크기 피처 벡터의 인덱스로 사용하는 방식으로 작동합니다. 이를 통해 가변 길이의 특징 집합을 고정 크기 벡터에 매핑할 수 있으며, 이를 머신 러닝 모델의 입력으로 사용할 수 있습니다.

예를 들어 가변적인 수의 특징이 있는 데이터 세트가 있고 로지스틱 회귀를 사용하여 데이터를 분류하려고 한다고 가정해 보겠습니다. 데이터 세트의 특징에 특징 해싱을 적용하여 로지스틱 회귀 모델에 입력으로 사용할 수 있는 고정 크기의 특징 벡터를 만들 수 있습니다.

전반적으로 피처 해싱은 피처 수가 다양한 데이터 세트를 처리하는 데 유용한 기술이며, 로지스틱 회귀와 같은 머신 러닝 알고리즘과 함께 사용하여 분류 문제를 해결할 수 있습니다.

upd


특징 수가 가변적인 데이터의 경우 사용할 수 있는 몇 가지 가능한 표현은 다음과 같습니다:

  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가 없으면 삶이 훨씬 더 간단했습니다) 우리는 AI 시대에 어려움을 겪을 것입니다)

사유: