테스트 데이터가 교육 데이터로 누출되지 않도록하려면 어떻게해야합니까?


60

예측 모델을 구축하는 사람이 있지만 적절한 통계 또는 기계 학습 원칙에 정통한 사람이 아니라고 가정합니다. 어쩌면 우리는 그 사람이 배우면서 도움을 줄 수도 있고, 또는 그 사람이 최소한의 지식이 필요한 소프트웨어 패키지를 사용하고있을 수도 있습니다.

이제이 사람은 실제 테스트가 샘플 외부 데이터 정확도 (또는 다른 메트릭)에서 온 것임을 잘 알고있을 것 입니다. 그러나 걱정해야 할 미묘한 부분이 많다는 점입니다. 간단한 경우, 모델을 구축하고 교육 데이터에서 평가하고 보류 된 테스트 데이터에서 평가합니다. 불행하게도 때때로이 시점에서 모델링 매개 변수를 조정하고 동일한 "테스트"데이터에서 결과를 확인하기가 너무 쉬울 수 있습니다. 이 시점에서 데이터는 더 이상 샘플에서 벗어난 실제 데이터가 아니며 오버 피팅은 문제가 될 수 있습니다.

이 문제를 해결하는 한 가지 가능한 방법은 각 테스트 데이터 세트를 사용 후 폐기하고 전혀 재사용하지 않도록 많은 샘플 외부 데이터 세트를 생성하도록 제안하는 것입니다. 그러나 많은 데이터 관리가 필요합니다. 특히 분석 전에 분할을 수행해야합니다 (따라서 사전에 분할 수를 알아야합니다).

아마도 더 일반적인 접근 방식은 k- 폴드 교차 검증입니다. 그러나 어떤 의미에서 "훈련"과 "테스트"데이터 세트의 차이점을 잃어 버리는 경우가 있습니다. 특히 학습중인 사람들에게 유용 할 수 있습니다. 또한 이것이 모든 유형의 예측 모델에 적합하다고 확신하지는 않습니다.

경험이 부족한 사용자에게는 여전히 명확한 상태를 유지하면서 과적 합 및 누수 테스트 문제를 극복하는 데 도움이되는 방법이 있습니까?


마이클, ML 사이트에서 중복 스레드 를 닫고 여기에 답변을 병합했습니다. 변경하려는 내용을 반영하여이 질문을 자유롭게 편집하십시오. 부주의하게 귀하의 의미가 변경 될 우려가 있습니다.
whuber

이 질문은 오래되었고 받아 들여진 대답이 있지만 초기 전제가 상충되는 것처럼 머리에서 벗어날 수는 없습니다. 이것이 학습 연습에 관한 것이라면, 접근하는 가장 좋은 방법은 그들이 실패하게하고 결과적으로 잘 예측하지 못하는 과적 합 모델을 만드는 것입니다. (아마도 자신의 방식의 오류를 보여주는 비밀 유지 데이터 세트를 보관하십시오.) 또한 자격이없는 사람들이 누군가가 진지하게 행동하고 피해를 최소화하려는 모델을 만드는 것처럼 들립니다. 팔 길이에. 당신이 말하는 것처럼 많은 미묘함이 있습니다.
Wayne

답변:


50

기계 학습 / 통계 모델링에서 중요한 문제입니다. 본질적으로이 문제를 실제로 해결하는 유일한 방법은 독립적 인 테스트 세트를 유지하고 연구가 완료 될 때까지 유지하고 최종 검증에 사용하는 것입니다.

그러나 필연적으로 사람들은 테스트 세트의 결과를보고 그에 따라 모델을 변경합니다. 그러나 다른 모델의 성능 차이가 우리가 보유한 특정 테스트 데이터 샘플로 인해 크게 달라질 수 있기 때문에 일반화 성능이 반드시 향상되는 것은 아닙니다. 이 경우 선택시 테스트 오류를 ​​효과적으로 과적 합시킵니다.

이를 제한하는 방법은 테스트 오류의 분산을 가능한 한 작게 만드는 것입니다 (즉, 테스트 오류의 변동성은 동일한 기본 분포에서 가져온 테스트 세트로 다른 데이터 샘플을 사용했는지 알 수 있습니다). 가능한 경우 큰 테스트 세트를 사용하거나 사용 가능한 데이터가 많지 않은 경우 부트 스트랩 또는 교차 검증을 사용하여 가장 쉽게 수행 할 수 있습니다.

모델 선택에서 이러한 종류의 과적 합은 특히 성능 추정과 관련하여 일반적으로 인식되는 것보다 훨씬 더 번거 롭다는 것을 알았습니다.

GC Cawley 및 NLC Talbot, 성능 평가에서 모델 선택 및 후속 선택 바이어스에 과적 합, Journal of Machine Learning Research, 2010. Research, vol. 11, pp. 2079-2107, 2010 년 7 월 (www)

이러한 종류의 문제는 특히 많은 연구에서 사용 된 벤치 마크 데이터 세트의 사용에 영향을 미치며, 각각의 새로운 연구는 이전 연구의 결과에 의해 암묵적으로 영향을 받으므로 관찰 된 성능은 실제에 대한 지나치게 낙관적 인 추정 일 수 있습니다. 방법의 성능. 이 문제를 해결하는 방법은 많은 데이터 세트를 살펴보고 (방법이 하나의 특정 데이터 세트에 맞게 조정되지 않은) 성능 추정을 위해 여러 개의 임의 테스트 / 훈련 분할을 사용하는 것입니다 (추정의 분산을 줄이기 위해). 그러나 결과는 여전히 이러한 벤치 마크가 과도하게 적합하다는 경고가 필요합니다.

이런 일이 발생하는 또 다른 예는 검증 세트를 기반으로하는 리더 보드와의 머신 러닝 경쟁입니다. 필연적으로 일부 경쟁 업체는 자신의 모델을 계속 사용하여 리더 보드를 더 높이고 최종 순위의 최하위에 도달합니다. 그 이유는 여러 선택 항목이 유효성 검사 세트에 너무 적합했기 때문입니다 (작은 유효성 검사 세트의 임의 변형을 효과적으로 학습).

통계적으로 순수한 테스트 세트를 유지할 수 없다면 (i) 새로운 통계적으로 순수한 테스트 세트를 만들기 위해 새로운 데이터를 수집하거나 (ii) 새 모델이 기반을 두었다는 경고를하는 것이 가장 좋습니다. 테스트 세트 오류를 ​​관찰 한 후 선택하면 성능 추정치에 낙관적 경향이있을 수 있습니다.


1
+1 나는이 답변이 경험에 의해 얼마나 잘 알려졌으며 그것이 얼마나 효과적으로 질문을 다루는 지에 깊은 인상을받습니다.
whuber

3
나는 이것이 몇 년 동안 나의 주요 연구 주제였으며, 나는 기계 학습에 널리 사용되는 많은 모델 선택 절차가 매우 취약하다는 것을 발견했으며, 더 철저하게 평가할수록 효과가 떨어집니다. 머신 러닝에 사용되는 많은 방법이 단순히 성능 평가 중에 사용되는 바이어스 된 모델 선택 절차 때문에 이전의 간단한 방법보다 더 잘 작동하지 않는다는 것은 놀라운 일이 아닙니다. 문제는 정말 좋은 것입니다. 어설프게 모델 선택 절차에 참여하지 않는 것이 중요합니다!
Dikran Marsupial

매우 흥미로운. (귀하의 답변으로 더 나은 답변을
얻었

2
(+1) 좋은 반응입니다. 테스트 정확도를 지나치게 낙관적으로 측정하는 동일한 데이터 세트에서 여러 분류기를 사용하는 것은 오류 분류 추정의 최적 분류기 선택 및 음의 바이어스에서 논의되었습니다 . 고차원 예측에 대한 실험적 연구 , BMC MRM 2009, 9:85 분류 규칙을 비교할 때 다중 규칙 편향에 대한 다른 논의와 함께 ( 여기에 PDF 슬라이드가 있음 ) (Yousefi et al., Bioinformatics 2011, 27 (12) : 1675).
chl December

논문에 대한 링크에 감사드립니다.
Dikran Marsupial

15

이를 보장하는 한 가지 방법 은 모델에 맞추기 위해 수행 하는 모든 작업, 심지어 "팅커 링" 을 코딩 하는 것입니다. 이렇게하면 교차 유효성 검사를 통해 프로세스를 반복적으로 실행할 때 실행간에 일관된 상태를 유지할 수 있습니다. 이를 통해 교차 검증 프로세스에서 모든 잠재적 변동 원인을 파악할 수 있습니다.

다른 중요한 것은 두 데이터 세트 모두에 대표 샘플이 있는지 확인하는 것입니다. 데이터 세트가 예측에 사용하려는 데이터 종류를 나타내지 않으면 할 수있는 일이 많지 않습니다. 모든 모델링은 "유도 (induction)"가 작동한다는 가정에 근거합니다. 우리가 관찰하지 않은 것은 우리가 관찰 한 것과 같이 행동합니다.

일반적으로 (i) 수행중인 작업을 알고 있고 (ii) 더 간단한 방법을 시도했지만 작동하지 않는 것으로 확인 된 경우와 복잡한 방법으로 문제를 해결하지 않는 한 복잡한 모델 피팅 절차를 피하십시오. 간단한 방법에 문제가 있습니다. "단순"및 "복합"은 피팅을하는 사람에게 "단순"또는 "복합"의 의미로 의미된다. 이것이 중요한 이유는 내가 "스 니프 테스트"라고 부르는 것을 결과에 적용 할 수 있기 때문입니다. 결과가 올바르게 보입니까? 이해할 수없는 절차의 결과를 "냄새"낼 수 없습니다.

N>>p p Np N<p

표본이 크면 모델링이 너무 "로컬"하지 않으면 주어진 관측 값 사용과 사용하지 않는 차이가 매우 작습니다. 주어진 데이터 포인트의 영향이 일반적으로 의 차수이기 때문입니다.1Nieitest=(1hii)1eitraineitrainhiiiihii=ppN>>phiip=21N×pX

hii=xiT(XTX)1xi=1Nsx2(1xi)(x2¯x¯x¯1)(1xi)=1+x~i2N

x¯=N1ixix2¯=N1ixi2sx2=x2¯x¯2x~i=xix¯sxxi1N100x~i=5hii=26100126100=7410010000126100001%10000x~=5025%

N>>p2hii=xiTEET(XTX)1EETxiEXTXΛhii=ziTΛ1zi=j=1pzji2Λjjzi=ETxixi

ke{k}test=(IkH{k})1e{k}trainH{k}=X{k}(XTX)1X{k}TX{k}N>>p

기본적으로 BIC 또는 AIC와 같은 훈련 오류와 테스트 오류의 차이를 설명하기 위해 페널티 용어를 사용하는 것으로 줄어 듭니다. 이렇게하면 테스트 세트를 사용하는 것과 동일한 결과를 효과적으로 얻을 수 있지만 잠재적으로 유용한 정보를 버리지 않아도됩니다. BIC를 사용하면 수학적으로 다음과 같이 모형에 대한 증거를 추정 할 수 있습니다.

p(D|MiI)=p(y1y2yN|MiI)

Mi

p(D|MiI)=p(y1|MiI)p(y2yN|y1MiI)
=p(y1|MiI)p(y2|y1MiI)p(y3yN|y1y2MiI)
==i=1Np(yi|y1yi1MiI)
log[p(D|MiI)]=i=1Nlog[p(yi|y1yi1MiI)]

이것은 교차 검증의 형태를 제안하지만, 훈련 세트가 지속적으로 업데이트되는 경우, 칼만 필터와 유사하게 테스트 세트에서 한 번에 하나씩 관찰됩니다. 현재 학습 세트를 사용하여 테스트 세트에서 다음 관측 값을 예측하고 조건부 로그 우도를 사용하여 관측 값과의 편차를 측정 한 다음 새 관측치를 포함하도록 학습 세트를 업데이트합니다. 그러나이 절차는 사용 가능한 모든 데이터를 완전히 요약하는 동시에 모든 관측치가 "샘플이없는"사례로 테스트되도록합니다. 또한 "관찰 1"또는 "관찰 10"이라고 부르는 것이 중요하지 않기 때문에 변하지 않습니다. 결과는 동일합니다 (일부 순열의 경우 다른 순열보다 계산이 더 쉬울 수 있음). 손실 기능도 "적응"Li=log[p(yi|y1yi1MiI)]Lii

이런 식으로 예측 모델을 평가하면 상당히 효과적이라고 제안합니다.


4
+1-유용한 조언과 흥미로운 레버리지에 대한 토론 (대용량 데이터 세트의 경우). 나는 과적 합 가능성이 작은 소규모의 데이터 세트를 사용하는 경향이 있으며, 이러한 상황에서 한계 가능성 ( "증거")을 과적 합하는 것이 매우 쉬운 경우가 많으며, 처음부터 시작하는 것보다 더 나쁜 모델로 끝납니다. 나는 AIC와 BIC가 비슷하게 "취 성적"이라고 생각한다. 유한 샘플을 기반으로 조정하거나 파라미터를 선택하면 과적 합의 가능성이 발생하므로 기본적으로 최적화는 통계의 모든 악의 근원입니다. 여백은 훨씬 안전하지만 일반적으로 계산 비용이 많이 듭니다.
Dikran Marsupial

2
+1-특히 세 번째 단락에서 (간단한 방법을 먼저 사용하십시오). 좋은 ol 'Pareto-Rule을 상기시킵니다. 기계 학습자들이 새로운 교배 알고리즘의 우수성을 입증하기위한 불충분 한 시도를 발표하기 전에이를 기억한다면 ...
steffen

8

나는 이것을 보증하는 유일한 방법은 다른 사람이 테스트 데이터를 가지고 있다고 가정합니다 . 클라이언트-컨설턴트 관계에서 이것은 상당히 쉽게 관리 될 수 있습니다. 클라이언트는 컨설턴트에게 모델을 구축하기위한 트레이닝 세트를 제공하고,이 트레이닝 세트 내에서 컨설턴트는 과적 합을 방지하기 위해 필요한 방식으로 데이터를 분할 할 수 있습니다 나오다; 그 다음에 모델은 테스트 데이터에서 사용할 수 있도록 클라이언트에게 다시 제공됩니다.

따라서 개별 연구원에게는 모범 사례가이 설정을 모방하는 것이 좋습니다. 이는 모든 모델 선택이 수행 된 후 테스트 할 일부 데이터를 차단하는 것을 의미합니다. 불행히도, 당신이 말했듯이, 이것은 많은 사람들에 의해 실행되지 않으며, 더 잘 알아야 하는 사람들에게도 발생합니다 !

그러나 궁극적으로 모델의 용도에 따라 다릅니다. 단일 데이터 세트에 대한 예측에만 관심이 있다면 원하는 것을 모두 과적 합할 수 있습니까? 그러나 모델을 일반화하는 모델로 홍보하거나 실제 응용 프로그램에서 모델을 사용하려는 경우 물론 이것은 매우 중요합니다.

내가 언급해야 할 부수적 인 문제가 있습니다. 모든 절차를 올바르게 수행하더라도 데이터가 실제로 iid가 아니기 때문에 과적 합 된 모델로 끝날 수 있습니다 . 예를 들어, 데이터에 시간적 상관 관계가있는 경우 1-3 시간에서 모든 학습 데이터를 가져 와서 4 시간에 테스트하면 예측 오류가 예상보다 큽니다. 대안 적으로, 사용되는 측정 장치 또는 인간 실험에서 피험자 풀과 같은 실험 특정 인공물이있을 수 있으며, 이로 인해 모델의 일반화가 예상보다 악화 될 수 있습니다.


예, 실수로 일시적인 상관 관계가 발생하기 쉬우므로 실제로 샘플이 아닌 데이터 세트를 만드는 것은 놀랍게도 어렵다는 것을 알고 있습니다.
Michael McGowan

1
예를 들어 view일부 팀은 테스트 데이터 개인, 다른 팀은 테스트 데이터 블라인드에 따라 데이터베이스 권한을 설정 하여 구현하는 정책으로 일부 회사가이를 정책으로 수행 합니다.
ijoseph

6

이것은 매우 좋은 질문이며 매우 미묘한 문제입니다. 물론 당신을 속이려고하는 누군가에게서 비롯된 나쁜 의도적 인 실수가 있습니다. 그러나 실수로 누수를 피하고 정직한 실수를 피하는 방법에 대한 더 깊은 의문이 있습니다.

운영 모범 사례를 나열하겠습니다. 그들은 모두 내가 어느 시점에서 한 정직한 실수에서 비롯됩니다.

  • 학습, 검증 및 테스트의 세 가지 그룹으로 데이터를 분리하십시오.
  • 무엇이 합리적이고 무엇이 합리적이지 논할 수 있도록 문제 구성을 이해하십시오. 문제를 이해하면 데이터가 나타내는 내용에 대한 미묘한 오해가 누출로 이어질 수 있습니다. 예를 들어, 한 비디오의 동일한 프레임에서 아무도 훈련하고 테스트하지는 않지만 동일한 비디오의 두 프레임이 서로 다른 폴드에 놓이면 더 미묘합니다. 동일한 비디오의 두 프레임이 동일한 개인을 동일한 조명 등으로 공유 할 수 있습니다. .
  • 이전에 작성된 교차 검증 절차에 매우주의하십시오. 귀하가 작성하지 않은 것들에 대해서도 마찬가지입니다 (LIBSVM은 큰 범죄자입니다).
  • 사무실 동료에게보고하더라도 아무 것도보고하기 전에 모든 실험을 적어도 두 번 반복하십시오. 버전 제어는 실험 커밋을 실행하기 전에 친구이며, 실행중인 코드 버전을 적어 둡니다.
  • 데이터를 정규화 할 때 매우주의하십시오. 여러 번 이것이 동시에 테스트하려는 전체 데이터 세트를 가질 것이라고 생각하게되는데, 이는 종종 현실적이지 않습니다.

교육 / 평가 세트에 대한 질문이 있었고 machinelearning.stackexchange.com/a/196/114 에서 계층화 된 홀드 아웃, k- 폴드 교차 검증 및 반복 실험 에 대한 이론적 개요를 제공했습니다 . 교육을받지 않은 사람들에게이 방법 들은 위의 질문을 완전히 해결하고 나머지는 "교사의 문제"입니다. 또한 귀하의 목록에있는 모든 관행은 "단순하게 느슨하고 용납 할 수없는 실수"를 해결하는 것으로 보이며 미묘한 부분은 없습니다. 나는 내가 무엇을 놓치고 있는지 이해하고 싶어합니다. 댓글을 달 수 있습니까?
andreister

나는 그것들이 모두 멍청함에서 나온다는 데 동의합니다. 나는 또한 그것들이 전혀 이론적이지 않다고 언급했다 (작동한다고 말했다). 내 게시물을 약간 편집했습니다.
carlosdc 2019

5

이미 주어진 훌륭한 답변에서 많은 중요한 점들이 다루어졌습니다.

최근에, 테스트 데이터의 통계적 독립성을 위해이 개인 체크리스트를 개발했습니다.

  • 최고 수준의 데이터 계층 구조로 데이터 분할 (예 : 환자 별 분할)
  • 악기의 일상적인 변형과 같이 알려 지거나 의심되는 혼란스러운 사람들을 위해 독립적으로 분할하십시오.
  • (DoE는 임의의 순서로 측정해야합니다 **)
  • 리샘플링 유효성 검사에서 각 대리 모델에 대해 둘 이상의 환자 *를 포함하는 첫 번째 (보통 전처리) 단계로 시작하는 모든 계산 단계를 다시 수행해야합니다. 홀드 아웃 / 독립 테스트 세트 보정의 경우이 단계 전에 테스트 환자를 분리 해야 합니다.
    • 이는 계산이 전처리라고하는지 또는 실제 모델의 일부로 간주되는지에 관계없이 적용됩니다.
    • 일반적인 범인 : 평균 센터링, 분산 스케일링 (일반적으로 경미한 영향 만), PCA 또는 PLS와 같은 차원 축소
  • 모든 종류의 데이터 중심 최적화 또는 모델 선택은 최종 모델을 독립적으로 검증하기 위해 다른 (외부) 테스트가 필요합니다.
  • 특정 독립적 인 테스트 세트로만 측정 할 수있는 일반화 성능에는 몇 가지 유형이 있습니다. 예를 들어 향후 측정되는 경우 예측 성능이 저하되는 방식이 있습니다 (악기 드리프트만으로는 시계열 예측을 다루지 않습니다). 그러나 이것은 적절하게 설계된 검증 연구가 필요합니다.
  • 내 분야에는 또 다른 독특한 유형의 데이터 유출이 있습니다. 우리는 생물학적 조직의 공간 분석 분광법을 수행합니다. 군집 분석을 사용하려는 유혹이 있더라도 각 군집이 속한 클래스를 찾는 경우에도 분광 정보에 대해 테스트 스펙트럼의 참조 레이블을 숨길 필요가 있습니다. 독립).

  • 마지막으로, 확실히 : 리샘플링 유효성 검사를 코딩 할 때 실제로 계산 된 인덱스가 데이터 세트에 계산 된 인덱스가 훈련 환자, 일 등에서 테스트 행을 가져 가지 않도록하지 않는지 실제로 확인합니다.

"독립성을 보장하기 위해 분할하지 않음"과 "여러 사례를 포함하는 계산이 발생하기 전에 분할"은 독립적 인 테스트 세트를 사용한다고 주장하는 테스트와 데이터 분석가가 테스트 사례의 참조에 대해 눈을 멀게했습니다. 최종 모델이 제시 될 때까지 테스트 데이터가 보류 된 경우 이러한 실수가 발생할 수 없습니다.

* 설명의 편의를 위해 환자를 데이터의 최상위 계층으로 사용하고 있습니다.
** 저는 분석 화학자입니다. 기기 드리프트는 알려진 문제입니다. 실제로, 화학 분석 방법의 검증의 일부는 검증 샘플에 대해 교정을 점검해야하는 빈도와 교정을 얼마나 자주 다시 수행해야 하는지를 결정하는 것입니다.


FWIW : 실제로, 저는 응용 프로그램을 다루고 있습니다.

  • p102103
  • nrowsp
  • nbiol.replicatesnpatientsp100101102
  • 분광 측정 방법에 따라, 다른 유형의 스펙트럼은 신호 대 잡음비 (악기 오류)가 크기의 정도에 따라 변하기 때문에 환자의 모든 행은 매우 유사하거나 유사하지 않을 수 있습니다.

개인적으로, 분류기 개발을위한 적절한 독립 테스트 세트를 따로 설정하기에 충분한 독립 사례를 얻는 애플리케이션을 아직 충족시키지 못했습니다. 따라서, 방법이 아직 개발 중에있는 동안 리샘플링 유효성 검사를 올바르게 수행하는 것이 더 나은 대안이라는 결론에 도달했습니다. 적절한 검증 연구는 결국 수행되어야하지만, 방법 개발이 여전히 변화하는 단계에있는 동안 그렇게하는 것은 막대한 자원 낭비 (또는 결과로 인해 분산으로 인해 유용한 정보를 가지지 않을 것입니다)입니다.


2

올바르게 기억한다면 Netflix 또는 Kaggle의 일부 대회와 같은 일부 대회는이 체계를 사용합니다.

"답변"과 함께 훈련 세트가 있습니다. 연구원이 답변을 제공하는 테스트 세트 # 1이 있습니다. 연구원은 점수를 알아냅니다. 연구원이 답변을 제공하는 테스트 세트 # 2가 있지만, 연구원은 점수를 찾지 못합니다. 연구원은 # 1과 # 2에 어떤 예측 사례가 있는지 모릅니다.

어느 시점에서 세트 # 2가 보일 수는 있지만 최소한 오염을 제한했습니다.


2

생물학적 서열 기반 예측 변수와 같은 일부 경우에는 사례가 둘 이상의 세트에 나타나지 않는 것으로 충분하지 않습니다. 여전히 세트 간의 종속성에 대해 걱정할 필요가 있습니다.

예를 들어, 서열-기반 예측 자의 경우, 상이한 세트 (서로 다른 교차 검증 세트 포함)의 서열이 높은 서열 유사성을 공유하지 않도록함으로써 중복성을 제거 할 필요가있다.


2

나는 "k-fold cross validation"이 이론적 관점에서 정답이라고 말 하겠지만, 당신의 질문은 조직적이고 가르치는 것에 대해 더 많이 보인다. 그래서 다르게 대답 할 것이다.


사람들이 "아직 학습"을하는 경우 , 알고리즘과 모든 "추가"지식 (문제 동기 부여, 데이터 세트 준비, 검증, 오류 분석, 실제 문제 등) 을 "빠르고 더러워" 적용 하는 방법을 배우는 것처럼 종종 생각됩니다 . )는 "더 준비"되면 "나중에"배웁니다.

이것은 완전히 잘못되었습니다.

  1. 우리가 학생 또는 시험 세트와 훈련 세트의 차이점을 이해하기를 원하는 경우, 최악의 것은 "이 단계에서" "추가 지식"이 해로운. 이것은 소프트웨어 개발에서 몇 달 간의 순수한 디자인, 몇 달 간의 순수한 코딩, 그리고 몇 달 간의 순수한 테스트 및 결과적으로 유감스러운 결과를 가져 오는 폭포 접근 방식과 같습니다.

  2. 학습은 폭포처럼 가지 않아야합니다. 학습의 모든 부분 (문제 동기 부여, 알고리즘, 실제 문제, 결과 평가)은 작은 단계로 이루어져야합니다. (소프트웨어 개발에서 민첩한 접근 방식처럼).

아마도 여기에있는 모든 사람들이 Andrew Ng의 ml-class.org를 겪었을 것입니다. 저는 강의 "민첩한", 예를 들어, 학습 스타일, 예를 들어 "어떻게 하는가? 테스트 데이터가 교육 데이터로 누출되지 않도록하십시오 ".


귀하의 질문을 완전히 잘못 이해했을 수도 있으므로 사과드립니다! :)


인간을 위한 학습 (즉, 일반적인 모델링 방법을 배우는 것)은 폭포 가되어서는 안되며 , 모델을 위한 학습은 이루어져야합니다. 그렇지 않으면 테스트 데이터의 비트가 훈련 데이터에 몰래 들어가고 모델이 과적 합되기 쉽습니다.
Michael McGowan 2012

그리고 나는 소프트웨어 끝에서 더 많이 생각하고있었습니다. 사용자는 교육에서 90 %의 정확도와 테스트에서 75 %의 정확도를 얻는 모델을 작성합니다. 그런 다음 소프트웨어에서 일부 노브와 설정을 조정하고 "테스트"에서 80 %의 정확도를 얻습니다. 그들은 다시 돌아가서 더 많은 조정을하고 "테스트"에 대해 85 %의 정확도를 얻습니다. 그러나이 소위 "테스트"데이터 세트는 더 이상 샘플에서 나오지 않으며 모델에 적합하지 않습니다.
Michael McGowan 2012

바로 그거죠. 이것은 인간의 학습 문제입니다 (원하는 경우 교사 문제). "X가 Y로 누출되지 않도록"인공적인 수단으로 숨기지 말고 가능한 빨리 공개해야합니다.
04 초

더 잘 알아야하는 사람들은 여전히이 실수를 할 것입니다. 우수 사례를 암시 적으로 또는 명시 적으로 장려하고 불량 사례를 권장하지 않는 워크 플로를 통해 소프트웨어 패키지에서이 효과를 어느 정도 완화 할 수 있습니다. 인간이 더 잘 알아야한다고해서 문제를 무시할 이유는 없습니다.
Michael McGowan

@MichaelMcGowan-누출의 이점도 무시하고 있습니다. 테스트 세트를 사용하여 알고리즘이 개선되었을 가능성이 있습니다 (즉, 기차 + 테스트는 기차보다 많은 데이터입니다). 실제로는 다른 트레이드 오프, 개선 된 정확도 및 개선 된 정확도 측정입니다. 저에게는 전자가 더 중요합니다.
probabilityislogic
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.