일반적으로 어떤 머신 러닝 분류기를 선택해야합니까? [닫은]


207

분류 문제를 해결하고 있다고 가정합니다. (사기 탐지 및 댓글 스팸은 현재 진행중인 두 가지 문제이지만 일반적으로 분류 작업이 궁금합니다.)

어떤 분류기를 사용해야하는지 어떻게 알 수 있습니까?

  1. 의사 결정 트리
  2. SVM
  3. 베이지안
  4. 신경망
  5. K- 최근 접 이웃
  6. Q- 러닝
  7. 유전자 알고리즘
  8. 마르코프 의사 결정 프로세스
  9. 컨볼 루션 신경망
  10. 선형 회귀 또는 로지스틱 회귀
  11. 부스팅, 배깅, 샘 블링
  12. 임의의 언덕 등반 또는 모의 어닐링
  13. ...

어떤 경우에 "자연적인"첫 번째 선택이 있으며, 그 중 하나를 선택하기위한 원칙은 무엇입니까?

내가 찾고있는 답변 유형의 예 (Manning et al. 's Introduction to Information Retrieval book) :

ㅏ. 데이터에 레이블이 지정되어 있지만 수량이 한정되어있는 경우 바이어스가 높은 분류기를 사용해야합니다 (예 : Naive Bayes) .

바이어스가 높을수록 분산이 낮기 때문에 작은 양의 데이터 때문에 좋습니다.

비. 많은 양의 데이터가 있다면 분류자는 그다지 중요하지 않으므로 확장 성이 좋은 분류기를 선택해야합니다.

  1. 다른 지침은 무엇입니까? "상위 관리 담당자에게 모델을 설명해야하는 경우 의사 결정 규칙이 상당히 투명하므로 의사 결정 트리를 사용해야합니다"와 같은 대답도 좋습니다. 그래도 구현 / 라이브러리 문제에 대해서는 신경 쓰지 않습니다.

  2. 또한 표준 베이지안 분류 자 ​​외에 다소 별도의 질문이있는 경우 스팸 스팸 탐지에 대한 '표준 최신 기술'방법이 있습니까 (이메일 스팸과 반대 되는가)?


7
당신의 "이 질문을 물어 최고의 장소"에 대한 응답에서, 당신은 또한 시도 할 수 있습니다 stats.stackexchange.com
jxramos

답변:


94

여기에 이미지 설명을 입력하십시오

우선, 문제를 식별해야합니다. 어떤 종류의 데이터가 있고 원하는 작업이 무엇인지에 따라 다릅니다.

당신이 있다면 Predicting Category:

  • 당신은 Labeled Data
    • 따라야 Classification Approach하고 알고리즘
  • 당신은 가지고 있지 않습니다 Labeled Data
    • 당신은 갈 필요가 Clustering Approach

당신이 있다면 Predicting Quantity:

  • 당신은 갈 필요가 Regression Approach

그렇지 않으면

  • 당신은 갈 수 있습니다 Dimensionality Reduction Approach

위에서 언급 한 각 접근 방식마다 다른 알고리즘이 있습니다. 특정 알고리즘의 선택은 데이터 세트의 크기에 따라 다릅니다.

출처 : http://scikit-learn.org/stable/tutorial/machine_learning_map/


60

교차 검증을 사용한 모델 선택 이 필요할 수 있습니다.

교차 검증

데이터 셋을 k 개의 겹치지 않는 부분 집합 (겹)으로 나누고 k-1 겹을 사용하여 모델을 훈련시키고, 폴드 한 부분을 사용하여 성능을 예측하는 것입니다. 이것은 가능한 모든 폴드 조합에 대해 수행합니다 (먼저 첫 번째 폴드 아웃 후 두 번째, ..., kth 및 나머지 폴드로 훈련). 마무리 후에는 모든 접기의 평균 성능을 추정합니다 (성능의 편차 / 표준 편차 일 수도 있음).

매개 변수 k를 선택하는 방법은 시간에 따라 다릅니다. k의 일반적인 값은 3, 5, 10 또는 N입니다. 여기서 N은 데이터의 크기입니다 ( 일회용 교차 유효성 검증 과 동일 ). 나는 5 또는 10을 선호합니다.

모델 선택

각 방법에 대해 5 가지 방법 (ANN, SVM, KNN 등)과 10 가지 매개 변수 조합이 있다고 가정합니다 (방법에 따라 다름). 각 방법 및 매개 변수 조합 (5 * 10 = 50)에 대해 교차 검증을 실행하고 최상의 모델, 방법 및 매개 변수를 선택하기 만하면됩니다. 그런 다음 모든 데이터에 대해 최상의 방법과 매개 변수로 재교육을 받으면 최종 모델이 만들어집니다.

할 말이 더 있습니다. 예를 들어, 각각에 대해 많은 방법과 매개 변수 조합 을 사용하면 과잉 적합 할 가능성이 높습니다. 이런 경우 중첩 교차 검증 을 사용해야 합니다 .

중첩 교차 검증

에서 중첩 교차 검증 , 당신은 모델 선택 알고리즘에 교차 유효성 검사를 수행합니다.

다시 말하지만, 먼저 데이터를 k 배로 나눕니다. 각 단계 후에는 훈련 데이터로 k-1을 선택하고 나머지는 테스트 데이터로 선택합니다. 그런 다음 해당 k 접기의 가능한 각 조합에 대해 모델 선택 (위에서 설명한 절차)을 실행합니다. 이 작업을 마친 후에는 각 접기 조합마다 하나씩 k 개의 모델이 생깁니다. 그런 다음 나머지 테스트 데이터로 각 모델을 테스트하고 가장 적합한 모델을 선택합니다. 다시 말하지만, 마지막 모델을 얻은 후에는 모든 데이터에 대해 동일한 방법과 매개 변수를 사용하여 새 모델을 학습하십시오. 이것이 최종 모델입니다.

물론, 이러한 방법과 내가 언급하지 않은 다른 것들에는 많은 변형이 있습니다. 이에 대한 자세한 정보가 필요하면 해당 주제에 대한 일부 서적을 찾으십시오.


5
그렇습니다. 교차 검증에 대해 알고 있습니다. 특정 분류자를 선택해야하는 선험적 인 이유에 대해 더 궁금했습니다. 그런 다음 교차 검증을 사용하여 일부 매개 변수를 조정하거나 일부 작은 분류기 중에서 선택할 수 있습니다. 그래도 고마워!
LM.

45

" OpenCV " 책 에는 462-463 페이지에 2 페이지가 있습니다. "미분"(아마도 Google 도서)이라는 단어를 아마존 미리보기에서 검색하면 문제의 페이지를 볼 수 있습니다. 이 두 페이지는이 책에서 찾은 가장 큰 보석입니다.

한마디로 :

  • 부스팅 - 많은 양의 교육 데이터 를 사용할 수 있을 때 종종 효과적 입니다.

  • 랜덤 트리 -종종 매우 효과적 이며 회귀 분석 을 수행 할 수도 있습니다 .

  • K- 최근 접 이웃 - 가장 간단한 일, 종종 효과적 이지만 느리며 많은 메모리 가 필요합니다 .

  • 신경망훈련 속도는 느리지달리기는 매우 빠르며 문자 인식을 위한 최적의 성능을 제공 합니다.

  • SVM - 최고의 가운데제한 데이터강화에 대한 손실 또는 임의 나무대규모 데이터 세트를 사용할 수 있습니다.


39

사용할 알고리즘을 선택할 때 고려해야 할 사항은 다음과 같습니다.

  1. (일괄 처리가 아닌) 점진적 으로 훈련 해야 합니까?

    분류기를 새 데이터로 자주 업데이트해야하거나 많은 데이터가있는 경우 Bayesian을 사용하는 것이 좋습니다. 신경망과 SVM은 훈련 데이터를 한 번에 처리해야합니다.

  2. 데이터가 범주 만, 숫자 만 또는 둘 다로 구성되어 있습니까?

    베이지안은 범주 형 / 이항 데이터와 가장 잘 작동한다고 생각합니다. 의사 결정 트리는 숫자 값을 예측할 수 없습니다.

  3. 귀하 또는 귀하의 청중 이 분류기의 작동 방식 을 이해해야 합니까?

    대부분의 사람들에게 쉽게 설명 할 수 있으므로 베이지안 또는 의사 결정 트리를 사용하십시오. 신경망과 SVM은 데이터를 분류하는 방법을 실제로 볼 수 없다는 의미에서 "블랙 박스"입니다.

  4. 얼마나 많은 분류 속도 가 필요합니까?

    SVM은 데이터의 "라인"쪽을 결정하기 만하면되기 때문에 분류가 빠릅니다. 의사 결정 트리는 특히 복잡한 경우 (예 : 많은 분기) 느릴 수 있습니다.

  5. 복잡성 .

    신경망과 SVM은 복잡한 비선형 분류를 처리 할 수 ​​있습니다.



31

Andrew Ng 교수는 종종 다음과 같이 말합니다. 항상 거칠고 더러운 알고리즘 을 구현하여 시작한 다음 반복적으로 수정하십시오 .

분류의 경우 Naive Bayes 는 성능이 뛰어나고 확장 성이 뛰어나 거의 모든 종류의 분류 작업에 적응할 수 있으므로 좋은 출발점 이됩니다. 또한 1NN (1 개의 이웃 만있는 K- 최근 접 이웃)은 번거롭지 않은 최적 알고리즘입니다 (데이터가 모델이므로 결정 경계의 차원 적합성에 신경 쓸 필요가 없기 때문에). 문제는 계산 비용입니다 (거리 매트릭스를 계산해야하기 때문에 2 차적이므로 고차원 데이터에는 적합하지 않을 수 있습니다).

또 다른 좋은 시작 알고리즘은 Random Forests (의사 결정 트리로 구성됨)이며, 이는 여러 차원으로 확장 가능하며 일반적으로 상당히 수용 가능한 성능을 갖습니다. 마지막으로, 유전자 알고리즘 이 있으며 , 데이터 자체에 대한 최소한의 지식만으로도 모든 차원과 모든 데이터에 맞게 확장 할 수 있으며, 가장 작고 간단한 구현은 미생물 유전자 알고리즘 (C 코드의 한 줄만!)입니다. 1996), 가장 복잡한 것 중 하나는 CMA-ES 및 MOGA / e-MOEA입니다.

그리고 알고리즘을 실제로 시도하기 전에 데이터에서 무엇이 가장 효과가 좋은지 알 수없는 경우가 종종 있습니다.

부수적으로, 주어진 문제에 대한 가설과 알고리즘의 이론적 성능을 테스트하기 위해 이론적 프레임 워크를 원한다면 PAC (아마 대략 정확합니다) 학습 프레임 워크를 사용할 수 있습니다 ( 매우 추상적이며 복잡합니다!) 요약하면 PAC 학습의 요지는 데이터에 맞는 복잡하지는 않지만 복잡성 (알고에 맞는 최대 차원) 복잡한 알고리즘을 사용해야한다고 말합니다. 즉, Occam의 면도기를 사용하십시오.



8

필자는 데이터를 이해하기 위해 항상 기본 분류 기준을 먼저 실행해야합니다. (적어도 내 경험으로는) 충분하지 않은 것보다 더 자주 있습니다.

따라서 데이터를 감독 한 경우 Naive Bayes 분류기를 훈련하십시오. 감독되지 않은 데이터가있는 경우 k- 평균 군집화를 시도 할 수 있습니다.

다른 리소스는 스탠포드 머신 러닝 시리즈 비디오의 강의 비디오 중 하나입니다 . 비디오 4 또는 5에서 강사는 분류 자, 장점 / 교섭 등을 훈련 할 때 일반적으로 수용되는 몇 가지 규칙에 대해 논의합니다.


1
“무료 점심 식사”정리에 따르면 모든 문제에 가장 적합한 모델은 하나도 없습니다. 하나의 문제에 대한 훌륭한 모델의 가정은 다른 문제에 대한 영향을 미치지 않을 수 있으므로 기계 학습에서 여러 모델을 시도하고 특정 문제에 가장 적합한 모델을 찾는 것이 일반적입니다.
msarafzadeh

5

추론과 예측의 균형을 항상 고려해야합니다 .

데이터에서 발생하는 복잡한 관계를 이해하려면 풍부한 추론 알고리즘 (예 : 선형 회귀 또는 올가미)을 사용해야합니다. 반면에 결과에만 관심이 있다면 신경망과 같이 차원이 높고 복잡하지만 해석하기 어려운 알고리즘을 사용할 수 있습니다.


3

알고리즘 선택은 시나리오와 데이터 세트의 유형 및 크기에 따라 다릅니다. 다른 많은 요소가 있습니다.

기본적인 기계 학습을위한 간단한 치트 시트입니다.

간단한 치트 시트로 시나리오를 검증 할 수 있습니다.


-2

우선, 그것은 분류인지 회귀인지 여부에 따라 어떤 유형의 문제를 다루고 있는지에 달려 있습니다. 그런 다음 현명하게 모델을 선택하십시오. 특정 모델에 따라 하나의 특정 모델이 다른 모델보다 성능이 우수합니다. sklearn 라이브러리에서 wine_dataset에 대해 작업 중이고 선형으로 커널 svm을 사용하여 데이터를 훈련하려고 시도했지만 일종의 정확성을 얻은 다음 만족스럽지 않다고 생각하면 DecisionTreeClassifier ()를 사용하여 데이터를 훈련하려고했습니다. 그런 다음 RandomForestClassifier ()로 시도했습니다. 그 후 어느 정도의 정확성이 나아지거나 데이터에 적합하다고 말할 수 있습니다. 테스트를 위해 모델을 계속 변경하면서 구할 수있는 구문상의 차이는 매우 작습니다. 따라서 최선을 다하고 문제를 잘 이해하십시오.


1
OP의 (Original Posters) 질문은 : 어떤 분류기를 사용해야하는지 어떻게 알 수 있습니까? 이것들이 분류 알고리즘을 찾고 있다는 결론을 내립니다 . 답변하기 전에 질문을 진지하게 읽으십시오.
Vetrivel PS
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.