머신 러닝에서 교차 검증을 수행 할 때 "최종"모델을위한 기능 선택


76

기능 선택 및 기계 학습에 대해 약간 혼란스러워하며 도움이되는지 궁금합니다. 두 그룹으로 분류되고 1000 개의 기능을 가진 마이크로 어레이 데이터 세트가 있습니다. 내 목표는 이론적으로 다른 데이터 세트에 적용하여 해당 샘플을 최적으로 분류 할 수있는 서명으로 소수의 유전자 (내 특징) (10-20)를 얻는 것입니다. 샘플 수가 많지 않기 때문에 (<100), 테스트 및 교육 세트를 사용하지 않고 견고성을 결정하는 데 도움이되는 Leave-one-out 교차 검증을 사용합니다. 나는 샘플의 각 분할에 대해 기능 선택을 수행해야한다는 것을 읽었습니다.

  1. 하나의 샘플을 테스트 세트로 선택
  2. 나머지 샘플에서 기능 선택을 수행합니다.
  3. 선택된 기능을 사용하여 나머지 샘플에 머신 러닝 알고리즘 적용
  4. 테스트 세트가 올바르게 분류되었는지 테스트
  5. 1로 가십시오.

이렇게하면 매번 다른 유전자를 얻을 수 있으므로 어떻게 "최종"최적의 유전자 분류기를 얻을 수 있습니까? 6 단계는 무엇입니까?

내가 최적이라는 것은 추가 연구에서 사용해야하는 유전자의 수집입니다. 예를 들어, 암 / 정상 데이터 세트가 있고 SVM에 따라 종양 유형을 분류 할 상위 10 개의 유전자를 찾고 싶다고 가정합니다. 추가 실험에서 진단 테스트로 사용할 수 있는지 확인하는 데 사용할 수있는 유전자 세트와 SVM 매개 변수를 알고 싶습니다.


나는 이것을 이미 바이오 컨덕터리스트에 게시했다는 것을 공개해야합니다.
danielsbrewer

바이오 컨덕터 결과를 여기에 다시 요약 해주세요.
Shane

답변:


39

이것은 SNP 데이터로 작업 할 때 제가 직면 한 매우 좋은 질문입니다 ... 그리고 문헌을 통해 명확한 답을 찾지 못했습니다.

LOO를 사용하든 K- 폴드 CV를 사용하든, 교차 검증 반복이 가장 외부 루프 여야하므로 다른 기능으로 끝납니다. LOO-CV에서 얻은 기능의 n- 벡터를 평가하는 일종의 투표 방식을 생각할 수 있습니다 (논문을 기억할 수는 없지만 Harald Binder 또는 Antoine Cornuéjols 의 작업을 확인하는 것이 좋습니다 ). 새로운 테스트 샘플이없는 경우 일반적으로 수행되는 작업은 최적의 교차 검증 된 매개 변수를 찾은 후 ML 알고리즘을 전체 샘플에 다시 적용하는 것입니다. 그러나이 방법으로 진행하면 과적 합이 없는지 확인할 수 없습니다 (샘플이 이미 모델 최적화에 사용 되었기 때문에).

np

  1. Cutler, A., Cutler, DR 및 JR Stevens (2009). 암 연구 에서의 고차원 데이터 분석에서 트리 기반 방법, Li, X. 및 Xu, R. (eds.), pp. 83-101, Springer.
  2. Saeys, Y., Inza, I. 및 Larrañaga, P. (2007). 생물 정보학의 기능 선택 기법에 대한 검토. 생물 정보학 , 23 (19) : 2507-2517.
  3. Díaz-Uriarte, R., Alvarez de Andrés, S. (2006). 랜덤 포레스트를 이용한 마이크로 어레이 데이터의 유전자 선택 및 분류. BMC 생물 정보학 , 7 : 3.
  4. Diaz-Uriarte, R. (2007). GeneSrF 및 varSelRF : 랜덤 포레스트를 사용한 유전자 선택 및 분류를위한 웹 기반 도구 및 R 패키지. BMC 생물 정보학 , 8 :: 328

SVM에 대해 이야기하고 있으므로 불이익받은 SVM을 찾을 수 있습니다 .


고마워 나는 SVM에서 특별히 판매되지 않았으며 단지 예로 사용했습니다. 따라서 임의의 나무를 사용했다면 교차 검증을 할 필요가 없습니까? 맞습니까?
danielsbrewer

7
p

3
랜덤 트리가 아닌 랜덤 포레스트라고하는 것이 중요합니다. Google에 문제가있을 수 있습니다.

1
+1, 좋은 답변, 고요한 말-논문 참조, 특히 리뷰에 감사드립니다.
ars

데이터가 충분하면 테스트 세트를 유지하고 훈련 세트에서 loocv를 수행하여 모델 매개 변수를 최적화하고 전체 기차 세트를 맞추고 (최종 분류기라고 함) 최종 모델을 평가하는 것이 가장 좋지 않습니다. 테스트 세트에?
user0

40

원칙적으로:

전체 데이터 세트에 대해 훈련 된 단일 모델을 사용하여 예측을 수행하십시오 (따라서 하나의 기능 세트 만 있음). 교차 유효성 검사는 전체 데이터 집합에 대해 훈련 된 단일 모델의 예측 성능을 추정하는 데만 사용됩니다. 교차 검증을 사용하는 것은 매우 중요합니다. 각 폴드마다 기본 모델에 맞는 전체 절차를 반복해야합니다.

이 문제가 발생하는 이유를 확인하려면 사례와 기능이 모두 무작위 인 경우에만 1000 개의 이진 기능이 100 개인 이진 분류 문제를 고려하십시오. 따라서 기능과 사례간에 통계적 관계가 없습니다. 전체 데이터 세트에서 기본 모델을 학습하는 경우 사례보다 더 많은 기능이 있기 때문에 항상 트레이닝 세트에서 오류가 전혀 없습니다. "정보"기능의 하위 집합을 찾을 수도 있습니다 (우연히 상관되어 있음). 그런 다음 해당 기능 만 사용하여 교차 유효성 검사를 수행하면 임의 추측보다 나은 성능 추정치를 얻게됩니다. 그 이유는 교차 검증 절차의 각 접힘마다, 예측에 좋았 기 때문에 피처가 선택되었으므로 테스트에 사용 된 보류 사례에 대한 정보가 있기 때문입니다. 포함 된 것을 포함하여. 물론 실제 오류율은 0.5입니다.

적절한 절차를 채택하고 각 폴더에서 기능 선택을 수행하는 경우 해당 폴더에서 사용되는 기능을 선택할 때 보류 된 사례에 대한 정보가 더 이상 없습니다. 적절한 절차를 사용하면이 경우 약 0.5의 오류율을 얻게됩니다 (데이터 세트의 실현에 따라 약간 씩 다를 수 있음).

읽을만한 좋은 논문은 다음과 같습니다.

Christophe Ambroise, Geoffrey J. McLachlan, "마이크로 어레이 유전자 발현 데이터에 기초한 유전자 추출에서의 선택 편향", PNAS http://www.pnas.org/content/99/10/6562.abstract

OP와 관련성이 높고

Gavin C. Cawley, Nicola LC Talbot, "성능 평가에서 모델 선택 및 후속 선택 바이어스에 대한 과적 합", JMLR 11 (Jul) : 2079-2107, 2010 http://jmlr.csail.mit.edu/papers /v11/cawley10a.html

이는 모델 선택에서 동일한 일이 쉽게 발생할 수 있음을 보여줍니다 (예 : SVM의 하이퍼 파라미터 조정, CV 절차의 각 반복에서 반복되어야 함).

실제로:

Bagging을 사용하고 성능 예측을 위해 bag-of-bag 오류를 사용하는 것이 좋습니다. 많은 기능을 사용하여위원회 모델을 얻을 수 있지만 실제로는 좋은 것입니다. 단일 모델 만 사용하는 경우 기능 선택 기준을 과도하게 맞추고 더 많은 수의 기능을 사용하는 모델보다 예측이 좋지 않은 모델이 생길 수 있습니다.

Alan Millers는 회귀 분석에서 부분 집합 선택에 관한 책 (통계 및 적용 확률, 제 95 권에 대한 챕터 및 홀 논문)이 예측 성능이 가장 중요한 경우에는 기능 선택을 수행하지 않는다는 충고 (221 페이지)를 제공합니다. 대신 능선 회귀를 사용하십시오. 그리고 그것은 부분 집합 선택에 관한 책에 있습니다 !!! ;영형)


17

chl에 추가하려면 : 서포트 벡터 머신을 사용할 때 권장되는 벌칙은 탄력적 그물입니다. 이 방법은 계수를 0으로 줄이며 이론적으로 모델에서 가장 안정적인 계수를 유지합니다. 처음에는 회귀 프레임 워크에서 사용되었지만 지원 벡터 시스템과 함께 사용하기 위해 쉽게 확장되었습니다.

최초 간행물 : Zou and Hastie (2005) : 탄성 망을 통한 정규화 및 변수 선택. JRStatist.Soc. B, 67-2, 301-320 페이지

SVM을위한 탄력적 네트워크 : Zhu & Zou (2007) : 서포트 벡터 머신을위한 변수 선택 : 신경 계산 동향, 2 장 (편집자 : Chen 및 Wang)

탄성 망의 개선 Jun-Tao 및 Ying-Min (2010) : 암 분류 및 유전자 선택을위한 향상된 탄성 망 : Acta Automatica Sinica, 36-7, pp.976-981


9

6 단계 (또는 0)로 전체 데이터 세트에서 기능 감지 알고리즘을 실행합니다.

n1n


동일한 샘플 (1)을 사용하여 분류 자 ​​분류 / 예측 성능을 평가하는 동안 매개 변수를 조정하고 (결과적으로 기능 선택) (2) 전체 데이터 세트에 대한 예측을 차례로 사용하는 경우 여전히 일반화 문제가 있다고 생각합니다. 실제로 교차 검증을 사용하여 정교화 한 과적 합 (overfitting)에 적용되는 통제를 어 기고 있습니다. Hastie et al. CV 함정의 좋은 예를 제공하십시오. wrt. ESL 서적에서 § 7.10.2, 2 판의 기능 선택.
chl

@ chl : 튜닝 매개 변수에 대해 누가 말했습니까? 추가 작업을 수행하는 경우 교차 검증 중에도 반복해야합니다. 교차 검증 된 오류율이 양호 할 때까지 알고리즘을 분명히 수정하는 것은 "속임수"입니다. BTW, 나는 교차 검증, 특히 일대일 퇴치가 그다지 크지 않다는 것에 동의합니다.
Aniko

CV는 알고리즘이 새로운 데이터에 대해 수행하는 방식을 대략적으로 보여주기 때문에 부정 행위가 아닙니다. 전체 세트를 기반으로 무언가에 정착하지 않았 음을 확인하면됩니다 (전체 세트의 구조에 대한 정보가 유출되어 모든 열차 부품을 즉시 바이어스 할 수 있음).

@mbq-Ankino는 정확합니다. CV 통계량을 최소화하도록 모델을 조정하는 것은 "속임수"이며 최종 모델의 CV 통계량은 상당히 낙관적입니다. 그 이유는 CV 통계량에 무시할 수없는 분산이 있기 때문에 (유한 한 데이터 집합에서 평가됨) CV 통계를 직접 최적화하면 과도하게 적합하고 모형을 만들 수 있기 때문입니다. 시작한 것보다 덜 일반적입니다. 이것의 데모를 들어, 기계 학습 맥락에서 볼 jmlr.csail.mit.edu/papers/v11/cawley10a.html 해결 방법 : 사용 중첩 된 경우 xval
Dikran 유대류

1

이것이 제가 기능을 선택하는 방법입니다. 특정 지식을 기반으로 비교할 두 가지 모델이 있다고 가정합니다. 모델 A는 1 번에서 1 번까지의 피처를 사용합니다. 모델 B는 11 번에서 11 번을 사용합니다. 20. LOO CV를 모델 A에 적용하여 샘플 외부 성능을 얻습니다. 모델 B와 동일하게 수행 한 후 비교하십시오.


-1

분류 문제에 대해 잘 모르겠지만 회귀 문제에 대한 기능 선택의 경우 Jun Shao는 Leave-One-Out CV가 점진적으로 일치하지 않습니다 . 즉, 기능의 적절한 하위 집합을 선택할 확률이 1 샘플 수가 증가합니다. 실제적인 관점에서 Shao는 Monte-Carlo 교차 검증 또는 휴가 다방면 절차를 권장합니다.


아, 또 다시; 이 기사의 제목을 읽었습니까?

2
LOOCV가 많은 수의 객체에 대해 좋은 아이디어라고 말하는 것은 아닙니다. 분명히 그렇지는 않지만 Shao는 적용 할 수 없습니다. 실제로 대부분의 경우 LM 규칙은 ML에 적용되지 않습니다.

1
많은 특징과 비교적 적은 패턴을 가진 데이터 세트를 볼 때 점근 적 결과가 실제로 사용되는지의 여부도 의문입니다. 이 경우 절차의 분산은 편의 나 일관성보다 실질적으로 더 중요 할 것입니다. LOOCV의 주요 가치는 많은 모델에서 무시할 수있는 계산 비용으로 구현할 수 있다는 것입니다. 따라서 부트 스트래핑보다 분산이 높지만 계산 가능한 예산 내에서 유일하게 실행 가능한 접근법 일 수 있습니다. 그렇기 때문에 나는 그것을 사용하지만 성능 평가를 위해 다른 것을 사용합니다!
Dikran Marsupial
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.