머신러닝 성능개선 비법

더 나은 예측을 위해 사용할 수 있는 32가지 팁, 트릭 및 해킹.


머신러닝의 가장 중요한 부분은 예측 모델링입니다.

이것은 기록 데이터에 대해 훈련되고 새 데이터에 대한 예측을 수행하는 모델의 개발입니다.

예측 모델링과 관련하여 가장 중요한 질문은 다음과 같습니다.

어떻게 하면 더 나은 결과를 얻을 수 있습니까?

이 비법 가이드에는 수년간의 응용 프로그램과 최고의 머신러닝 실무자 및 경쟁 우승자를 연구하여 추출한 최고의 조언이 포함되어 있습니다.

이 가이드를 사용하면 성능을 향상시킬 수 있을 뿐만 아니라 예측 문제에 대해 세계적 수준의 결과를 얻을 수도 있습니다.

이 가이드의 구조는 딥 러닝 성능을 향상시키는 방법이라는 제목의 딥 러닝 성능을 개선하는 데 유용할 수 있는 초기 가이드를 기반으로 합니다.


개요

이 비법 가이드는 머신러닝 문제의 성능을 향상시킬 수 있는 아이디어를 제공하도록 설계되었습니다.

돌파구를 마련하는 데 필요한 것은 좋은 아이디어 하나뿐입니다.

그 아이디어를 찾은 다음 돌아와서 다른 아이디어를 찾으십시오.

목록을 4 개의 하위 주제로 나누었습니다.

  1. 데이터로 성능을 개선합니다.
  2. 알고리즘으로 성능을 개선합니다.
  3. 알고리즘 튜닝으로 성능을 개선합니다.
  4. 앙상블로 성능을 향상시킵니다.


이익은 종종 목록 아래로 내려갈수록 작아집니다.

예를 들어, 문제 또는 더 많은 데이터의 새로운 프레이밍은 종종 가장 성능이 좋은 알고리즘의 매개 변수를 조정하는 것보다 더 많은 성과를 거둘 수 있습니다. 항상 그런 것은 아니지만 일반적으로 그렇습니다.



1. 데이터로 성능 향상

학습 데이터 및 문제 정의를 변경하여 큰 성과를 거둘 수 있습니다. 아마도 가장 큰 승리일 수도 있습니다.

전략: 기본 문제의 구조를 학습 알고리즘에 가장 잘 노출시키기 위해 데이터에 대한 새롭고 다양한 관점을 만듭니다.


데이터 전술

  • 더 많은 데이터를 가져옵니다. 더 많거나 더 나은 품질의 데이터를 얻을 수 있습니까? 딥 러닝과 같은 최신 비선형 머신러닝 기술은 더 많은 데이터로 성능이 계속 향상됩니다.
  • 더 많은 데이터를 발명하십시오더 많은 데이터를 얻을 수 없는 경우 새 데이터를 생성할 수 있습니까? 기존 데이터를 보강 또는 치환하거나 확률적 모델을 사용하여 새 데이터를 생성할 수 있습니다.
  • 데이터를 정리합니다데이터의 신호를 개선할 수 있습니까? 수정하거나 제거할 수 있는 누락되거나 손상된 관측치가 있거나 데이터 품질을 높이기 위해 수정하거나 제거할 수 있는 합리적인 범위를 벗어난 이상치가 있을 수 있습니다.
  • 데이터 리샘플링데이터를 리샘플링하여 크기 또는 분포를 변경할 수 있습니까? 아마도 실험에 훨씬 더 작은 데이터 샘플을 사용하여 데이터 세트에서 더 잘 표현하기 위해 특정 유형의 관찰 속도를 높이거나 과잉 샘플링하거나 과소 샘플링 할 수 있습니다.
  • 문제 재구성 : 해결중인 예측 문제의 유형을 변경할 수 있습니까? 데이터를 회귀, 이진 또는 다중 클래스 분류, 시계열, 변칙 검색, 등급, 추천 등 유형 문제로 재구성합니다.
  • 데이터 크기를 다시 조정합니다숫자 입력 변수를 다시 스케일링할 수 있습니까? 입력 데이터의 정규화 및 표준화는 가중치 입력 또는 거리 측정을 사용하는 알고리즘의 성능을 향상시킬 수 있습니다.
  • 데이터 변환데이터 분포를 재구성할 수 있습니까? 입력 데이터를 더 가우스적으로 만들거나 지수 함수를 통해 전달하면 데이터의 특징이 학습 알고리즘에 더 잘 노출될 수 있습니다.
  • 데이터 투영. 데이터를 저차원 공간에 투영할 수 있습니까? 비지도 클러스터링 또는 프로젝션 방법을 사용하여 데이터 집합의 완전히 새로운 압축 표현을 만들 수 있습니다.
  • 기능 선택모든 입력 변수가 똑같이 중요합니까? 기능 선택 및 기능 중요도 방법을 사용하여 모델링 알고리즘으로 탐색할 데이터의 새 보기를 만듭니다.
  • 기능 엔지니어링새 데이터 기능을 만들고 추가할 수 있습니까? 여러 개의 새 값(예: 범주, 날짜 또는 문자열)으로 분해할 수 있는 속성 또는 이벤트를 나타내기 위해 집계할 수 있는 속성(예: 개수, 이진 플래그 또는 통계 요약)이 있을 수 있습니다.


결과: 이제 데이터 세트의 새 뷰 및 버전 모음이 있어야 합니다.

다음예측 모델링 알고리즘을 사용하여 각각의 값을 평가할 수 있습니다.



2. 알고리즘으로 성능 향상

머신러닝은 알고리즘에 관한 것입니다.

전략: 성능 기준보다 높고 평균보다 나은 성능을 발휘하는 알고리즘과 데이터 표현을 식별합니다. 자신을 속이기 어렵게 만드는 결과와 설계 실험에 회의적입니다.


알고리즘 전술

  • 리샘플링 방법새 데이터에 대한 기술을 추정하는 데 사용되는 리샘플링 방법은 무엇입니까? 사용 가능한 데이터를 최대한 활용하는 방법 및 구성을 사용합니다. 홀드아웃 검증 데이터 세트를 사용하는 k-fold 교차 검증 방법이 모범 사례일 수 있습니다.
  • 평가 메트릭예측 기술을 평가하는 데 사용되는 메트릭은 무엇입니까? 문제 및 도메인의 요구 사항을 가장 잘 포착하는 메트릭을 사용합니다. 아마도 분류 정확도가 아닐 것입니다.
  • 기준 성능알고리즘 비교의 기준 성능은 무엇입니까? 임의 알고리즘 또는 제로 규칙 알고리즘(평균 또는 최빈 예측)을 사용하여 평가된 모든 알고리즘의 순위를 지정할 기준을 설정합니다.
  • 스팟 체크 선형 알고리즘어떤 선형 알고리즘이 잘 작동합니까? 선형 방법은 종종 더 편향되고 이해하기 쉬우며 빠르게 훈련할 수 있습니다. 좋은 결과를 얻을 수 있다면 선호됩니다. 다양한 선형 분석법 제품군을 평가합니다.
  • 임의 추출 검사 비선형 알고리즘. 어떤 비선형 알고리즘이 잘 작동합니까? 비선형 알고리즘은 종종 더 많은 데이터를 필요로하고 더 복잡하지만 더 나은 성능을 얻을 수 있습니다. 다양한 비선형 방법 모음을 평가합니다.
  • 표준 구성. 평가 중인 알고리즘의 표준 구성은 무엇입니까? 각 알고리즘은 문제를 잘 해결할 수있는 기회가 필요합니다. 이것은 매개 변수를 (아직) 조정하는 것을 의미하지는 않지만 각 알고리즘을 잘 구성하는 방법을 조사하고 알고리즘 베이크 오프에서 싸울 기회를 제공한다는 것을 의미합니다.


결과: 이제 성능이 좋은 알고리즘과 데이터 표현의 짧은 목록이 있어야 합니다.

다음: 다음 단계는 알고리즘 튜닝을 통해 성능을 개선하는 것입니다.



3. 알고리즘 튜닝으로 성능 향상

알고리즘 튜닝은 가장 많은 시간을 보내는 것일 수 있습니다. 시간이 많이 걸릴 수 있습니다. 종종 스팟 체크를 통해 성능이 우수한 알고리즘을 하나 또는 두 개 발굴할 수 있습니다. 이러한 알고리즘을 최대한 활용하는 데 며칠, 몇 주 또는 몇 달이 걸릴 수 있습니다.

전략: 성능이 우수한 머신러닝 알고리즘을 최대한 활용합니다.


튜닝 전술

  • 진단알고리즘에 대해 어떤 진단 및 검토를 합니까? 학습 곡선을 검토하여 방법이 문제를 과대 또는 과소 적합하는지 파악한 다음 수정할 수 있습니다. 다른 알고리즘은 다른 시각화 및 진단을 제공할 수 있습니다. 알고리즘이 옳고 그름을 예측하는 것을 검토하십시오.
  • 직관을 시도하십시오당신의 직감은 당신에게 무엇을 말합니까? 매개 변수를 충분히 오랫동안 조작하고 피드백주기가 짧으면 문제에 대한 알고리즘을 구성하는 방법에 대한 직관을 개발할 수 있습니다. 이것을 시도하고 더 큰 테스트 하네스에서 시험해 볼 새로운 매개 변수 구성을 생각해 낼 수 있는지 확인하십시오.
  • 무작위 검색. 무작위 검색을 사용할 수 있는 매개 변수는 무엇입니까? 알고리즘 하이퍼파라미터의 임의 검색을 사용하여 시도할 생각이 없는 구성을 노출할 수 있습니다.
  • 그리드 검색그리드 검색을 사용할 수 있는 매개변수는 무엇입니까? 아마도 좋은 구성을 찾기 위해 열거할 수 있는 표준 하이퍼파라미터 값의 그리드가 있을 수 있으며, 그런 다음 더 세밀하고 미세한 그리드로 프로세스를 반복할 수 있습니다.
  • 최적화어떤 파라미터를 최적화할 수 있습니까? 아마도 직접 검색 절차 (예 : 패턴 검색) 또는 확률적 최적화 (예 : 유전 알고리즘)를 사용하여 조정할 수 있는 구조 또는 학습률과 같은 매개 변수가 있을 수 있습니다.
  • 대체 구현알고리즘의 다른 구현은 무엇입니까? 아마도 메서드의 대체 구현은 동일한 데이터에서 더 나은 결과를 얻을 수 있습니다. 각 알고리즘에는 알고리즘 구현자가 내려야 하는 수많은 미세 결정이 있습니다. 이러한 결정 중 일부는 문제에 대한 기술에 영향을 줄 수 있습니다.
  • 알고리즘 확장알고리즘의 일반적인 확장은 무엇입니까? 아마도 방법에 대한 공통 또는 표준 확장을 평가하여 성능을 향상시킬 수 있습니다. 구현 작업이 필요할 수 있습니다.
  • 알고리즘 사용자 지정특정 사례에 대해 알고리즘을 어떤 사용자 지정할 수 있습니까? 손실 함수, 내부 최적화 방법에서 알고리즘별 결정에 이르기까지 데이터 알고리즘을 수정할 수 있습니다.
  • 전문가에게 문의하십시오알고리즘 전문가는 귀하의 경우 무엇을 권장합니까? 예측 문제와 알고리즘에 대한 한 명 이상의 전문 학자에게 시도한 내용을 요약하는 짧은 이메일을 작성하십시오. 이것은 새롭거나 신선한 아이디어로 이전에 알려지지 않은 최첨단 작업이나 학업 작업을 드러낼 수 있습니다.


결과: 이제 머신러닝 문제에 대해 고도로 조정된 알고리즘의 짧은 목록이 있어야 합니다.

다음:이 시점에서 하나 이상의 모델을 마무리하여 예측을 수행하거나 프로덕션에 투입하는 데 사용할 수 있습니다. 여러 모델의 예측을 결합하여 성능을 추가로 향상시킬 수 있습니다.



4. 앙상블로 성능 향상

여러 모델의 예측을 결합할 수 있습니다. 알고리즘 튜닝 후 개선해야 할 다음 큰 영역입니다. 사실, 고도로 조정된(그리고 취약한) 여러 모델이 아닌 여러 “충분히 좋은” 모델의 예측을 결합하여 좋은 성능을 얻을 수 있는 경우가 많습니다.

전략: 성능이 좋은 여러 모델의 예측을 결합합니다.


앙상블 전술

  • 모델 예측 혼합여러 모델의 예측을 직접 결합할 수 있습니까? 아마도 동일하거나 다른 알고리즘을 사용하여 여러 모델을 만들 수 있습니다. 성능이 좋은 여러 모델의 예측에서 평균 또는 최빈값을 가져옵니다.
  • 데이터 표현을 혼합합니다서로 다른 데이터 표현에서 학습된 모델의 예측을 결합할 수 있습니까? 성능이 좋은 알고리즘을 훈련하는 데 사용할 수 있는 문제에 대한 다양한 예측이 있을 수 있으며, 이 알고리즘의 예측을 결합할 수 있습니다.
  • 데이터 샘플 혼합다양한 데이터 보기에서 학습된 모델을 결합할 수 있습니까? 훈련 데이터의 여러 하위 샘플을 만들고 성능이 좋은 알고리즘을 훈련시킨 다음 예측을 결합할 수 있습니다. 이를 부트스트랩 집계 또는 배깅이라고 하며 각 모델의 예측이 능숙하지만 다른 방식(상관 관계가 없음)일 때 가장 잘 작동합니다.
  • 올바른 예측. 성능이 좋은 모델의 예측을 수정할 수 있습니까? 예측을 명시적으로 수정하거나 부스트와 같은 방법을 사용하여 예측 오류를 수정하는 방법을 배울 수 있습니다.
  • 결합하는 법을 배우십시오새 모델을 사용하여 성능이 좋은 여러 모델의 예측을 가장 잘 결합하는 방법을 배울 수 있습니까? 이를 누적 일반화 또는 스태킹이라고 하며 하위 모델이 능숙하지만 다른 방식으로 수행되고 집계 모델이 예측의 단순한 선형 가중치인 경우 잘 작동하는 경우가 많습니다. 이 프로세스는 여러 레이어 깊이로 반복될 수 있습니다.


결과: 단일 모델을 능가하는 성능이 우수한 모델의 앙상블이 하나 이상 있어야 합니다.

다음: 이 시점에서 하나 이상의 앙상블을 마무리하여 예측을 하거나 프로덕션에 투입하는 데 사용할 수 있습니다.



요약

이 비법 가이드는 문제에 대한 성능을 향상시키기 위한 아이디어로 가득 차 있습니다.

시작하는 방법

모든 것을 할 필요는 없습니다. 성능을 높이려면 좋은 아이디어 하나만 있으면 됩니다. 다음은 많은 선택지 중 적합한 것을 선택하는 방법입니다.

  1. 하나의 그룹 선택

    1. 데이터.
    2. 알고리즘.
    3. 조율.
    4. 앙상블.
  2. 그룹에서 하나의 방법을 선택합니다.
  3. 선택한 방법 중 한 가지를 선택하십시오.
  4. 결과를 비교하고 개선이 있었는지 확인하십시오.
  5. 위의 과정을 반복하십시오.

네피리티
No Comments

Sorry, the comment form is closed at this time.