SciPy를 사용한 기능 최적화

최적화에는 함수의 최소 또는 최대 출력값을 생성하는 목적 함수에 대한 입력값을 찾는 작업이 포함됩니다.

SciPy라는 과학 컴퓨팅을 위한 오픈 소스 Python 라이브러리는 최적화 알고리즘 모음을 제공합니다. 많은 알고리즘이 다른 알고리즘, 특히 scikit-learn 라이브러리의 머신러닝 알고리즘에서 빌딩 블록으로 사용됩니다.

이러한 최적화 알고리즘은 함수를 최적화하기 위해 독립형 방식으로 직접 사용할 수 있습니다. 특히 로컬 검색용 알고리즘과 전역 검색을 위한 알고리즘은 머신러닝 프로젝트에서 발생할 수 있는 두 가지 주요 최적화 유형입니다.

이 자습서에서는 SciPy 라이브러리에서 제공하는 최적화 알고리즘을 알아봅니다.

이 자습서를 완료하면 다음을 알 수 있습니다.

  • SciPy 라이브러리는 다양한 목적을 위해 다양한 최적화 알고리즘 모음을 제공합니다.
  • SciPy에서 사용할 수 있는 로컬 검색 최적화 알고리즘.
  • SciPy에서 사용할 수 있는 전역 검색 최적화 알고리즘.

튜토리얼 개요

이 자습서는 다음과 같이 세 부분으로 나뉩니다.

  1. SciPy를 통한 최적화
  2. SciPy를 사용한 지역 검색
  3. SciPy를 사용한 글로벌 검색

SciPy를 통한 최적화

과학 컴퓨팅을 위한 Python SciPy 오픈 소스 라이브러리는 최적화 기술 모음을 제공합니다.

많은 알고리즘은 SciPy 라이브러리 내의 다른 알고리즘과 scikit-learn과 같은 머신러닝 라이브러리의 빌딩 블록으로 사용됩니다.

특정 기술을 검토하기 전에 라이브러리에서 제공하는 알고리즘 유형을 다음과 같이 살펴보겠습니다.

  • 스칼라 최적화: 볼록 단일 변수 함수의 최적화.
  • 지역 검색: 단봉 다중 변수 함수의 최적화.
  • 글로벌 검색: 다중 모드 다중 변수 함수의 최적화.
  • 최소 제곱: 선형 및 비선형 최소 제곱 문제를 풉니다.
  • 곡선 피팅: 곡선을 데이터 샘플에 피팅합니다.
  • 루트 찾기: 함수의 루트(출력값이 0인 입력값)를 찾습니다.
  • 선형 계획법: 제약 조건에 따라 선형 최적화.


모든 알고리즘은 최적화되는 목적 함수가 최소화 함수라고 가정합니다. 함수가 최대화되는 경우 목적 함수에서 반환된 값에 음수 부호를 추가하여 최소화로 변환할 수 있습니다.

위의 목록 외에도 라이브러리는 일부 알고리즘에서 사용하는 유틸리티 함수와 Rosenbrock 테스트 문제도 제공합니다.

최적화를 위한 SciPy 라이브러리의 기능에 대한 좋은 개요는 다음을 참조하세요.

이제 라이브러리에서 지원하는 최적화 기술 유형에 대한 높은 수준의 아이디어를 얻었으므로 응용 머신러닝에서 사용할 가능성이 더 높은 두 가지 알고리즘 그룹을 자세히 살펴보겠습니다. 지역 검색 및 글로벌 검색입니다.


SciPy를 사용한 지역 검색

로컬 검색 또는 로컬 함수 최적화는 검색되는 함수 또는 제한된 영역이 단일 최적 (예 : unimodal)을 갖는 것으로 가정되는 최소 또는 최대 출력을 생성하는 함수에 대한 입력을 찾는 알고리즘을 나타냅니다.

최적화되는 함수는 볼록할 수도 있고 아닐 수도 있으며 하나 이상의 입력 변수를 가질 수 있습니다.

로컬 검색 최적화는 함수가 유니모달인 것으로 믿어지거나 알려진 경우 기능을 최적화하기 위해 직접 적용될 수 있습니다. 그렇지 않으면, 로컬 검색 알고리즘은 글로벌 검색 알고리즘의 결과를 미세 조정하기 위해 적용될 수 있습니다.

SciPy 라이브러리는 minimize() 함수를 통해 로컬 검색을 제공합니다.

minimize() 함수는 최소화되는 목적 함수의 이름과 검색을 시작할 초기 지점을 입력으로 사용하고 검색의 성공 또는 실패와 솔루션의 세부 정보(발견된 경우)를 요약하는 OptimizeResult를 반환합니다.

입력 변수의 한계, 함수의 1차 도함수를 계산하기 위한 함수(기울기 또는 야코비 행렬), 함수의 2차 도함수를 계산하기 위한 함수(헤세 행렬) 및 입력값에 대한 제약 조건과 같이 목적 함수에 대한 추가 정보를 알려진 경우 제공할 수 있습니다.

중요한 것은 함수가 로컬 검색에 사용되는 특정 최적화를 지정할 수 있는 “method” 인수를 제공한다는 것입니다.

다음과 같은 인기 있는 지역 검색 알고리즘 모음을 사용할 수 있습니다.

아래 예제는 L-BFGS-B 로컬 검색 알고리즘을 사용하여 2차원 볼록 함수를 푸는 방법을 보여줍니다.

예제를 실행하면 최적화가 수행되고 검색의 성공 또는 실패, 수행된 함수 평가 횟수 및 함수의 최적값을 초래한 입력이 보고됩니다.

이제 SciPy에서 로컬 검색 알고리즘을 사용하는 데 익숙해졌으므로 전역 검색을 살펴보겠습니다.


SciPy를 사용한 글로벌 검색

전역 검색 또는 전역 함수 최적화는 검색되는 함수 또는 제한된 영역이 다중 로컬 최적(예: 다중 모드)을 갖는 것으로 가정되는 최소 또는 최대 출력을 생성하는 함수에 대한 입력을 찾는 알고리즘을 나타냅니다.

최적화되는 함수는 일반적으로 비선형이고 볼록하지 않으며 하나 이상의 입력 변수를 가질 수 있습니다.

글로벌 검색 알고리즘은 일반적으로 확률적이며, 이는 검색 프로세스에서 임의성을 사용하고 검색의 일부로 후보 솔루션 모집단을 관리하거나 관리하지 않을 수 있음을 의미합니다.

SciPy 라이브러리는 다음과 같이 각각 다른 기능을 통해 다양한 확률적 글로벌 최적화 알고리즘을 제공합니다. 

라이브러리는 또한 시퀀스 최적화를 위한 shgo() 함수와 그리드 검색 최적화를 위한 brute()를 제공합니다.

각 알고리즘은 검색의 성공 또는 실패와 솔루션의 세부 정보(있는 경우)를 요약하는 OptimizeResult 개체를 반환합니다.

아래 예제는 시뮬레이션된 어닐링을 사용하여 2차원 다중 모드 함수를 푸는 방법을 보여줍니다.

예제를 실행하면 최적화가 수행되고 검색의 성공 또는 실패, 수행된 함수 평가 횟수 및 함수의 최적값을 초래한 입력이 보고됩니다.


추가 정보

이 섹션에서는 더 자세히 알아보려는 경우 주제에 대한 더 많은 리소스를 제공합니다.


증권 시세 표시기


기사


요약

이 자습서에서는 SciPy 라이브러리에서 제공하는 최적화 알고리즘을 발견했습니다.

특히 다음 내용을 배웠습니다.

  • SciPy 라이브러리는 다양한 목적을 위해 다양한 최적화 알고리즘 모음을 제공합니다.
  • SciPy에서 사용할 수 있는 로컬 검색 최적화 알고리즘.
  • SciPy에서 사용할 수 있는 전역 검색 최적화 알고리즘.

네피리티
No Comments

Sorry, the comment form is closed at this time.