1

유전자 알고리즘을 사용하여 데이터 집합과 일치하는 함수를 추출하는 프로그램을 파이썬으로 작성하려고합니다. 예를 들어데이터 시리즈에서 함수 파생 ​​

, I 입력하는 경우 :

3, 5, 7, 9, 11 

출력은해야 뭔가 같은 :

2x + 1 

문제는, 내가 파이썬에서이 작업을 수행하기 위해 노력하고있어 나는 아무 생각하는 방법이 없습니다 Python에서 수학 함수를 모델링하는 방법에 대해 알아보십시오. 신경망과 같은 것이 필요합니까?

일단 내가 시작하는 법을 알게되면 수정할 일반 유전자 알고리즘을 작성했습니다.

고마워요.

+0

[회귀 분석] (https://en.wikipedia.org/wiki/Regression_analysis) 또는 곡선 피팅과 비슷하지만 알고리즘이 자동으로 "올바른"맞춤 함수를 선택하도록하고 싶습니까? 다항식을 다룰 수 있다면 다항식 함수로'scipy.optimize.curve_fit'와 같은 것을 사용할 수 있습니다.이 함수는 적합도와 매개 변수 (계수)를 반환합니다. –

답변

0

찾고있는 것은 symbolic regression입니다.

이미 유전자 알고리즘 경로에 있으니 genetic programming을 시도해 볼 수 있습니다.

유전 프로그래밍을 사용하여 각 개인은 터미널과 기본 기능 (빌딩 블록)을 사용하여 표현 된 "프로그램"입니다.

예, 상징적 회귀 :

terminal set = {x, 1, 2, 3, 4, 5, 6, 7, 8, 9} 
function set = {+, -, *, /, exp, log, sin} 

A "간단한"프로그램 (2x + 1) :

    + 
       /\ 
       2 + 
        /\ 
        * \ 
       /\ \ 
       10 x \ 
          - 
         /\ 
         * 1 
        /\ 
         - x 
        /\ 
        3 11 

이는 트리 구조로 표시되어 있지만, 비 트리 표현이 성공적으로 구현되었습니다 .

GP는 큰 검색 공간을 탐험해야하며 매우 계산 비용이 많이 든다는 단점이 있습니다. 이는 데이터를 생성 한 시스템의 기존 지식을 기반으로 알고리즘에 제공되는 빌딩 블록 세트를 제한함으로써 약화 될 수 있습니다.

그러나 상징적 회귀의 이러한 특성에도 장점이 있습니다. 진화 알고리즘이 검색 공간을 효율적으로 탐색하기 위해 다양성을 필요로하기 때문입니다.

학습 프로젝트 인 경우 Python은 비교적 짧은 시간 내에 간단한 프레임 워크를 개발할 수있는 좋은 언어입니다.

그렇지 않으면 DEAP (유전자 프로그래밍을 포함한 좋은 파이썬 기반 진화 연산 프레임 워크)을 살펴보십시오.

관련 문제