문제

알려진 패턴을 기반으로 미래 사건을 예측하기 위해 연구할 알고리즘이나 예제 자료를 찾고 있습니다.아마도 이것에 대한 이름이 있을 것인데, 나는 그것을 모르거나 기억하지 못합니다.이런 일반적인 것이 없을 수도 있지만 저는 수학이나 알고리즘의 대가가 아니기 때문에 여기에 방향을 묻고 있습니다.

예를 들어, 내가 이해하는 바에 따르면 다음과 같습니다.

정적 이벤트는 1월 1일, 2월 1일, 3월 3일, 4월 4일에 발생합니다.간단한 해결책은 각 발생 사이의 일/시간/분/무언가를 평균화하고 해당 숫자를 마지막으로 알려진 발생에 추가하고 예측하는 것입니다.

나는 무엇을 요구하고 있으며, 무엇을 공부해야 합니까?

특별히 염두에 두고 있는 목표나 고려해야 할 특정 변수는 없습니다.이것은 단순히 개인적인 생각이며, 새로운 것을 배울 수 있는 기회입니다.

도움이 되었습니까?

해결책

조사 할 가치가있는 몇 가지 주제가 수치 분석, 구체적으로 보간, 외삽 및 회귀.

다른 팁

이것은 과잉 일 수 있지만 마르코프 체인 꽤 멋진 패턴 인식 물건으로 이어질 수 있습니다. 이 사건의 체인에 더 적합합니다. 아이디어는 일련의 사건의 마지막 N 단계를 기반으로 다음에 어떤 일이 일어날까요?

이것은 텍스트에 적합합니다. 셰익스피어의 큰 샘플을 처리하면 셰익스피어 같은 말도 안되는 말도로 가득 찬 단락을 생성 할 수 있습니다! 불행히도, 인구가 드문 인구 이벤트를 파악하려면 더 많은 데이터가 필요합니다. (한 달 이상으로 패턴을 감지하면 AT 체인을 추적해야합니다. 최소 한 달의 데이터.)

의사-파이썬에서는 여기에 Markov 체인 빌더/예측 스크립트의 대략적인 스케치가 있습니다.

n = how_big_a_chain_you_want
def build_map(eventChain):
    map = defaultdict(list)
    for events in get_all_n_plus_1_item_slices_of(eventChain):
        slice = events[:n]
        last = events[-1]
        map[slice].append(last)

def predict_next_event(whatsHappenedSoFar, map):
    slice = whatsHappenedSoFar[-n:]
    return random_choice(map[slice])

단일 '최고의'통조림 솔루션은 없으며 필요한 것에 따라 다릅니다. 예를 들어, 당신은 당신이 말한대로 값을 평균화하고 싶을 수도 있지만, 기존 값이 새로운 값만큼 크게 기여하지 않는 가중 평균을 사용하면 새로운 값을 사용합니다. 또는 일부 스무딩을 시도 할 수도 있습니다. 또는 이벤트 분포가 잘 알려진 분포 (정상, 포아송, 균일)에 적합한 지 확인하려고합니다.

모델을 염두에두고 (예 : 이벤트가 정기적으로 발생 함) Kalman 필터를 해당 모델의 매개 변수에 적용하는 것이 일반적인 기술입니다.

내가 그런 일을하려고 노력하기 위해 함께 일한 유일한 기술은 시리즈의 다음 단계를 예측하기 위해 신경망을 훈련시키는 것입니다. 이는 문제를 패턴 분류에서 문제로 해석하는 것을 의미하며, 그다지 적합하지 않은 것처럼 보입니다. 나는 그것을 다루는 퍼지 방법이 적다는 것을 의심해야합니다.

주파수의 사전 데이터가 주어지면 N 일 이후에 발생하는 이벤트 확률을 찾으려면 적절한 확률 분포에 맞는 데 도움이되는 경우 일반적으로 이벤트 소스에 대해 알아야합니다 (아마도 가능할 수도 있습니다. Poisson Distributed, 아마도 가우시안). 이전 사건이 발생한 경우 이벤트가 발생할 확률을 찾고 싶다면 베이지안 통계와 마르코프 체인을 구축하는 방법을보고 싶을 것입니다.

이 작업은 일련의 기록 단어가 주어지면 모델이 다음 단어에 대한 어휘에 대한 확률 분포를 예측하려고 시도하는 언어 모델링 작업과 매우 유사합니다.

다음과 같은 오픈 소스 소프트웨어가 있습니다. 스릴름 그리고 NLTK 이는 단순히 시퀀스를 입력 문장(각 event_id는 단어임)으로 가져오고 작업을 수행할 수 있습니다.

Google이 있어야합니다 유전자 프로그래밍 알고리즘

그들은 (혼돈이 언급 한 신경망과 같은 일종의) 솔루션을 프로그래밍 방식으로 생성 한 다음 프로그램이 기준에 따라 스스로를 수정하고 희망적으로 정확한 새로운 솔루션을 만들 수있게 해줄 것입니다.

신경망은 귀하에 의해 교육을 받아야하지만 유전자 프로그래밍을 통해이 프로그램은 모든 작업을 수행 할 것입니다.

비록 그들이 처음에 달리기를하는 것은 많은 일의 지옥이지만!

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