머신러닝 결과를 개선하는 법

문제에 대해 합리적으로 잘 작동하는 하나 또는 두 개의 알고리즘을 갖는 것이 좋은 시작이지만 때로는 사용 가능한 시간과 리소스가 주어지면 최상의 결과를 얻을 수 있습니다.

이 게시물에서는 성능을 향상 시키고 머신러닝 알고리즘에서 얻는 결과를 개선하는 데 사용할 수 있는 방법을 검토합니다.

알고리즘을 튜닝할 때는 테스트 프로그램에서 제공하는 결과에 대해 높은 신뢰도를 가져야 합니다. 즉, 알고리즘 실행을 평가하는 데 사용하는 성능 측정값의 분산을 줄이는 기술을 사용해야 합니다. 합리적으로 많은 횟수의 교차 검증을 제안드립니다 (정확한 수는 데이터 세트에 따라 다름).


이 게시물에서 배우게 될 세 가지 전략은 다음과 같습니다.

  • 알고리즘 튜닝
  • 앙상블
  • 익스트림 피처 엔지니어링


알고리즘 튜닝

시작점은 이미 문제에 대해 잘 수행한다는 것을 알고 있는 알고리즘에서 더 나은 결과를 얻는 것입니다. 이 작업은 해당 알고리즘에 대한 구성을 탐색하고 미세 조정하여 수행할 수 있습니다.

머신러닝 알고리즘은 매개 변수화되며 이러한 매개 변수를 수정하면 학습 프로세스의 결과에 영향을 줄 수 있습니다. 각 알고리즘 매개 변수를 그래프의 차원으로 생각하고 주어진 매개 변수의 값을 축을 따라 점으로 생각하십시오. 세 개의 매개 변수는 알고리즘에 대해 가능한 구성의 큐브이고 n-매개 변수는 알고리즘에 대해 가능한 구성의 n차원 하이퍼큐브입니다.

알고리즘 튜닝의 목적은 해당 하이퍼큐브에서 문제에 가장 적합한 지점을 찾는 것입니다. 테스트 프로그램에 대해 최적화하게 되므로 신뢰할 수 있는 테스트 프로그램을 구축하는 데 시간을 소비하는 것의 중요합니다.

가능성 영역에 그리드를 부과하는 자동화된 방법을 사용하여 이 검색 문제에 접근하고 좋은 알고리즘 구성을 갖는 샘플을 사용할 수 있습니다. 그런 다음 최적화 알고리즘에서 이러한 점을 사용하여 최상의 성능을 확대할 수 있습니다.

여러 가지 잘 수행되는 방법으로 이 프로세스를 반복하고 각각으로 달성할 수 있는 최선의 방법을 탐색할 수 있습니다. 생산 시스템으로 변환되지 않을 수 있는 수익 감소(백분율 성능 증가) 지점에 빠르게 도달할 수 있으므로 프로세스가 자동화되고 합리적으로 조정되는 것이 좋습니다.

알고리즘의 매개 변수가 조정될수록 알고리즘은 학습 데이터 및 테스트 도구에 더 편향됩니다. 이 전략은 효과적일 수 있지만 테스트 프로그램에 과적합하고 실제로 잘 수행되지 않는 더 취약한 모델로 이어질 수도 있습니다.


앙상블

앙상블 방법은 향상된 결과를 얻기 위해 여러 방법의 결과를 결합하는 것과 관련이 있습니다. 앙상블 방법은 문제의 다른 부분을 전문으로 하는 여러 “충분히 좋은” 모델이 있을 때 잘 작동합니다.

이것은 여러 가지 방법을 통해 달성 될 수 있습니다. 탐색할 수 있는 세 가지 앙상블 전략은 다음과 같습니다.

  • Bagging: 더 공식적으로 부트스트랩된 집계로 알려진 것은 동일한 알고리즘이 학습 데이터의 다른 하위 집합에 대해 학습되어 문제에 대해 다른 관점을 갖는 경우입니다.
  • 부스팅: 동일한 학습 데이터에 대해 서로 다른 알고리즘이 학습됩니다.
  • 혼합: 더 공식적으로 누적 일반화 또는 스태킹으로 알려진 것은 예측을 전체 예측에 결합하는 방법을 학습하는 새 모델에 대한 입력으로 예측을 사용하는 다양한 모델입니다.

보다 전통적인 방법을 다 써 버린 후에 앙상블 방법을 사용하는 것이 좋습니다. 여기에는 두 가지 좋은 이유가 있는데, 일반적으로 기존 방법보다 더 복잡하며 전통적인 방법은 앙상블을 만들기 위해 개선하고 그릴 수 있는 좋은 기본 수준을 제공합니다.


익스트림 피처 엔지니어링

앞의 두 전략은 머신러닝 알고리즘에서 더 많은 것을 얻는 방법을 살펴보았습니다. 이 전략은 알고리즘이 학습할 수 있도록 문제에서 더 많은 구조를 노출하는 것입니다. 데이터 준비에서는 머신러닝 알고리즘에 대한 데이터를 더 잘 정규화하기 위해 기능 분해 및 집계에 대해 배웠습니다. 이 전략에서 우리는 그 아이디어를 한계까지 밀어붙입니다. 저는 이 전략을 극단적인 기능 엔지니어링이라고 부르는데, 실제로 “기능 엔지니어링”이라는 용어로 충분합니다.

데이터에 머신러닝 알고리즘이 의사 결정을 내리고 활용하는 방법을 알고 있는 복잡한 다차원 구조가 내장되어 있다고 생각하십시오. 알고리즘이 최상의 작업을 수행할 수 있도록 이러한 구조를 알고리즘에 가장 잘 노출하려고 합니다. 어려움은 이러한 구조 중 일부가 너무 조밀하거나 너무 복잡하여 알고리즘이 도움없이 찾을 수 없다는 것입니다. 또한 도메인 전문 지식에서 이러한 구조에 대한 지식이 있을 수도 있습니다.

속성을 가져와 여러 기능으로 광범위하게 분해합니다. 기술적으로 이 전략으로 수행하는 작업은 종속성과 비선형 관계를 더 간단한 독립 선형 관계로 줄이는 것입니다.

다음은 두 가지 예입니다.

  • 범주형: [빨강, 녹색 파랑] 값을 가진 범주형 속성이 있는 경우 이를 빨강, 녹색 및 파랑의 3가지 이진 속성으로 분할하고 각 인스턴스에 각각에 대해 1 또는 0 값을 지정할 수 있습니다.
  • 실수: 0에서 1000 사이의 값을 가진 실제 값이 있는 수량이 있습니다. 각각 bin 값(bin 1의 경우 0-99, bin 2의 경우 100-199 등)을 나타내는 10개의 이진 속성을 만들고 각 인스턴스에 bin에 대한 이진 값(1/0)을 할당할 수 있습니다.

이 프로세스를 한 번에 한 단계씩 수행하고 각 수정 사항에 대해 새 테스트/학습 데이터 세트를 만든 다음 데이터 세트에서 알고리즘을 테스트하는 것이 좋습니다. 이렇게 하면 알고리즘에 더 많거나 적은 정보를 노출하는 데이터베이스의 속성 및 기능과 성능 측정에 대한 영향에 대한 직관이 시작됩니다. 이러한 결과를 사용하여 더 극단적인 분해 또는 집계를 안내할 수 있습니다.


요약

이 게시물에서는 문제에 대한 머신러닝 알고리즘에서 개선 된 결과를 얻기위한 세 가지 전략에 대해 배웠습니다.

  • 알고리즘 튜닝 여기서 최상의 모델을 발견하는 것은 모델 매개 변수 공간을 통한 검색 문제처럼 처리됩니다.
  • 여러 모델에 의한 예측이 결합되는 앙상블.
  • 데이터 준비에서 볼 수 있는 특성 분해 및 집계가 한계에 도달하는 익스트림 기능 엔지니어링.

리소스

이 주제에 대해 더 자세히 알아보려면 아래 리소스를 살펴보세요.


업데이트

알고리즘에서 더 많은 것을 얻기 위한 20 가지 팁과 요령은 다음 게시물을 참조하십시오.

네피리티
No Comments

Sorry, the comment form is closed at this time.