이전 값을 기준으로 알려지지 않은 함수 값을 예측하는 방법이 있습니까?

StackOverflow https://stackoverflow.com/questions/1150862

  •  18-09-2019
  •  | 
  •  

문제

예를 들어 알려지지 않은 기능으로 반환 된 값이 있습니다.

# this is an easy case - parabolic function
# but in my case function is realy unknown as it is connected to process execution time
[0, 1, 4, 9]

다음 가치를 예측하는 방법이 있습니까?

도움이 되었습니까?

해결책

또한보십시오 이 질문.

다른 팁

반드시 그런 것은 아닙니다. "포물선 기능"은 다음과 같이 구현 될 수 있습니다.

def mindscrew
  @nums ||= [0, 1, 4, 9, "cat", "dog", "cheese"]
  @nums.pop
end

당신은 추측 할 수 있지만 확실성으로 예측하는 것은 불가능합니다.

사용해 볼 수 있습니다 신경망 접근하다. Google Query "Neural Network Function Masiimation"에서 찾을 수있는 기사가 많이 있습니다. 예를 들어 많은 책도 제공됩니다 이 하나.

데이터 포인트 만 원한다면

데이터 외삽 밖의 알려진 지점의 가능 추정된, 그러나 잠재적 차이가 데이터 보간보다 훨씬 큰 잠재적 차이를 받아 들여야합니다. ~ 사이 알려진 포인트. 엄격하게도, 기능은 잘 행동하는 연속 기능이더라도 알려진 지점 사이에 미친 짓을 할 수 있기 때문에 두 가지 모두 부정확 할 수 있습니다. 그리고 만약 그렇지 않습니다 잘 행동하고 모든 베팅은 이미 꺼져 있습니다.-P

이에 대한 여러 가지 수학적 접근법 (컴퓨터 과학에 직접 적용되는)이 있습니다. 단순한 선형 대수에서 입방 스플라인과 같은 것까지; 그리고 그 사이의 모든 것.

기능을 원한다면

난해한 것; 여기서 또 다른 흥미로운 모델은 유전자 프로그래밍입니다. 알려진 데이터 포인트에 대한 표현식을 발전시킴으로써 적절한 근사치를 찾을 수 있습니다. 때로는 작동합니다. 때로는 그렇지 않습니다. 당신이 찾고 있던 언어는 아니지만 Jason Bock은 .NET 3.5에서이를 수행하는 C# 코드를 보여줍니다. 진화하는 LINQ 표현.

나는 그의 코드가 "손에 든다"(일부 프레젠테이션에서 그것을 사용했다)를 가지고있다. 같은 것 a => a * a 그것은 거의 즉시 발견 될 것이지만, 이론적으로는 거의 모든 방법을 찾을 수 있어야하지만, 최대 달리 길이가 정의되지 않으면; 다시 덮다...

사용 Wolfram Alpha API :)

예. 아마도.

입력 및 출력 값이있는 경우, 즉 [0,1,2,3] 및 [0,1,4,9]에서는 응답 표면 (기본적으로 기능 피팅)을 사용하여 '추측'할 수 있습니다. 실제 함수 (귀하의 경우 f (x) = x^2). 추측 함수를 f (x) = c1*x+c2*x^2+c3 인 경우 입력 및 출력이 주어지면 C1 = 0, C2 = 1 및 C3 = 0을 결정하는 알고리즘이 있습니다. 기능 다음 값을 예측할 수 있습니다.

이 질문에 대한 대부분의 다른 답변도 유효합니다. 나는 당신이 데이터에 어떤 기능을 맞추고 싶다고 가정합니다. 다시 말해서, 나는 당신의 질문이 상당히 모호하다고 생각합니다. 가능한 한 완전한 질문을 제시하십시오!

일반적으로, 아니요 ... 특정 형태 (예 : 어느 정도의 다항식)의 기능이라는 것을 알지 못하고 기능을 제한하기에 충분한 정보가 있습니다.

예를 들어, 더 "일반적인"반례 (척의 답변 참조)는 2 차 방정식이라는 것을 알고 N^2 W/O를 반드시 가정 할 수없는 이유에 대해 f (n) = n을 가질 수 있습니다.4 -6n3 + 12n2 -6n, n = 0,1,2,3,4,5 f (n) = 0,1,4,9,40,145입니다.

특정 양식이라는 것을 알고 있다면 몇 가지 옵션이 있습니다 ... 양식이 기본 함수의 선형 추가 인 경우 (예 : F (x) = A + Bcos (x) + cSQRT (x)) 그런 다음 최소 제곱을 사용하면 해당 기준 기능을 사용하여 가장 적합한 것으로 알려지지 않은 계수를 얻을 수 있습니다.

다음 답변을 시도하고 추측하기 위해 통계적 방법을 적용 할 수 있지만 기능 이이 기능과 같으면 잘 작동하지 않을 수 있습니다 (c).

int evil(void){
  static int e = 0;
  if(50 == e++){
    e = e * 100;
  }
  return e;
}

이 함수는 간단한 숫자가 좋은 숫자를 반환 한 다음 ... BAM.

그것은 어려운 문제입니다.

당신은 확인해야합니다 재발 관계 그러한 작업이 가능할 수있는 특별한 경우에 대한 방정식.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top