Wie kann ich sicherstellen, dass keine Testdaten in die Trainingsdaten gelangen?


60

Angenommen, wir haben jemanden, der ein Vorhersagemodell erstellt, der sich jedoch nicht unbedingt mit den richtigen statistischen oder maschinellen Lernprinzipien auskennt. Vielleicht helfen wir dieser Person beim Lernen, oder vielleicht verwendet diese Person ein Softwarepaket, für dessen Verwendung nur minimale Kenntnisse erforderlich sind.

Nun könnte diese Person sehr wohl erkennen, dass der eigentliche Test von der Genauigkeit (oder einer anderen Metrik) der Daten außerhalb der Stichprobe herrührt. Meine Sorge ist jedoch, dass es viele Feinheiten gibt, über die man sich Sorgen machen muss. Im einfachen Fall bauen sie ihr Modell auf und werten es anhand von Trainingsdaten aus und werten es anhand von durchgehaltenen Testdaten aus. Leider kann es zu diesem Zeitpunkt manchmal zu einfach sein, einige Modellierungsparameter zu ändern und die Ergebnisse auf denselben "Test" -Daten zu überprüfen. Zu diesem Zeitpunkt sind diese Daten jedoch keine Out-of-Sample-Daten mehr, und eine Überanpassung kann zu einem Problem werden.

Ein möglicher Weg, um dieses Problem zu lösen, besteht darin, viele außerhalb der Stichprobe liegende Datensätze zu erstellen, sodass jeder Testdatensatz nach der Verwendung verworfen und überhaupt nicht mehr verwendet werden kann. Dies erfordert jedoch viel Datenmanagement, insbesondere, dass die Aufteilung vor der Analyse durchgeführt werden muss (Sie müssten also vorher wissen, wie viele Aufteilungen es gibt).

Vielleicht ist ein konventionellerer Ansatz die k-fache Kreuzvalidierung. In gewissem Sinne verliert dies jedoch die Unterscheidung zwischen einem "Training" - und einem "Testen" -Datensatz, die meiner Meinung nach nützlich sein können, insbesondere für diejenigen, die noch lernen. Ich bin auch nicht davon überzeugt, dass dies für alle Arten von Vorhersagemodellen Sinn macht.

Gibt es eine Möglichkeit, die ich übersehen habe, um das Problem der Überanpassung und des Testens von Leckagen zu lösen, ohne dass dies einem unerfahrenen Benutzer auffällt?


Michael, ich habe einen doppelten Thread von der ML-Site geschlossen und die Antworten hier zusammengeführt. Sie können diese Frage jederzeit bearbeiten, um Änderungen widerzuspiegeln, die Sie vornehmen möchten. Ich möchte dies nicht tun, um zu befürchten, dass sich Ihre Bedeutung versehentlich ändert.
Whuber

Diese Frage ist alt und hat eine akzeptierte Antwort, aber ich komme nicht aus dem Kopf, dass die ursprüngliche Prämisse in Konflikt zu geraten scheint. Wenn es um Lernübungen geht, ist es am besten, sie scheitern zu lassen und ein Overfit-Modell zu erstellen, das anschließend nicht gut vorhersagt. (Bewahren Sie möglicherweise einen geheimen Datenbestand auf, in dem Sie ihnen den Fehler ihres Verhaltens aufzeigen.) Es hört sich jedoch auch so an, als hätten Sie unqualifizierte Mitarbeiter, die Modelle herstellen, die jemand ernst nehmen und nach denen Sie handeln werden, und Sie versuchen, den Schaden so gering wie möglich zu halten bei Waffenlänge. Es gibt viele Feinheiten, wie Sie sagen.
Wayne

Antworten:


50

Sie haben Recht, dies ist ein erhebliches Problem beim maschinellen Lernen / bei der statistischen Modellierung. Die einzige Möglichkeit, dieses Problem wirklich zu lösen, besteht darin, ein unabhängiges Testset aufzubewahren und es so lange aufzubewahren, bis die Studie abgeschlossen ist, und es für die endgültige Validierung zu verwenden.

Es ist jedoch unumgänglich, dass sich die Benutzer die Ergebnisse auf dem Testset ansehen und dann ihr Modell entsprechend ändern. Dies führt jedoch nicht zwangsläufig zu einer Verbesserung der Generalisierungsleistung, da der Leistungsunterschied bei verschiedenen Modellen hauptsächlich auf die von uns zur Verfügung gestellten Testdaten zurückzuführen sein kann. In diesem Fall passen wir bei der Auswahl den Testfehler effektiv an.

Die Möglichkeit, dies zu begrenzen, besteht darin, die Varianz des Testfehlers so gering wie möglich zu halten (dh die Variabilität des Testfehlers, die wir sehen würden, wenn wir verschiedene Stichproben von Daten als Testmenge verwenden würden, die aus derselben zugrunde liegenden Verteilung stammen). Dies wird am einfachsten mit einem großen Testsatz erreicht, wenn dies möglich ist, oder zB durch Bootstrapping oder Kreuzvalidierung, wenn nicht viele Daten verfügbar sind.

Ich habe festgestellt, dass diese Art der Überanpassung bei der Modellauswahl sehr viel mühsamer ist, als allgemein angenommen wird, insbesondere im Hinblick auf die Leistungsschätzung, vgl

GC Cawley und NLC Talbot, Überanpassung bei der Modellauswahl und anschließende Auswahlverzerrung bei der Leistungsbewertung, Journal of Machine Learning Research, 2010. Research, vol. 11, S. 2079-2107, Juli 2010 (www)

Diese Art von Problem betrifft insbesondere die Verwendung von Benchmark-Datensätzen, die in vielen Studien verwendet wurden, und jede neue Studie ist implizit von den Ergebnissen früherer Studien betroffen, sodass die beobachtete Leistung wahrscheinlich eine zu optimistische Schätzung des tatsächlichen Werts ist Durchführung der Methode. Ich versuche, dies zu umgehen, indem ich mir viele Datensätze anschaue (die Methode ist also nicht auf einen bestimmten Datensatz abgestimmt) und auch mehrere zufällige Test- / Trainingsaufteilungen für die Leistungsschätzung verwende (um die Varianz der Schätzung zu verringern). Die Ergebnisse erfordern jedoch immer noch den Vorbehalt, dass diese Benchmarks überbewertet wurden.

Ein weiteres Beispiel, bei dem dies der Fall ist, sind maschinelle Lernwettbewerbe mit einer Rangliste, die auf einem Validierungssatz basiert. Zwangsläufig basteln einige Konkurrenten weiter an ihrem Modell, um die Rangliste zu verbessern, landen dann aber auf dem letzten Platz der Rangliste. Der Grund dafür ist, dass ihre Mehrfachauswahl den Validierungssatz überpasst hat (effektiv das Lernen der zufälligen Variationen im kleinen Validierungssatz).

Wenn Sie einen statistisch reinen Testsatz nicht behalten können, sind die beiden besten Möglichkeiten, (i) neue Daten zu sammeln, um einen neuen statistisch reinen Testsatz zu erstellen, oder (ii) den Vorbehalt zu berücksichtigen, auf dem das neue Modell basiert Aufgrund einer Auswahl, die nach Beobachtung des Testsatzfehlers getroffen wurde, ist es wahrscheinlich, dass die Leistungsschätzung eine optimistische Tendenz aufweist.


1
+1 Ich bin beeindruckt davon, wie gut diese Antwort auf Erfahrung beruht und wie effektiv sie die Frage beantwortet.
whuber

3
jubel, dies ist seit ein paar Jahren mein hauptsächliches Forschungsthema, und ich habe festgestellt, dass viele im maschinellen Lernen weit verbreitete Modellauswahlverfahren sehr fragil sind und je gründlicher sie evaluiert werden, desto weniger gut scheinen sie zu funktionieren. Es würde mich nicht überraschen, dass viele Methoden, die beim maschinellen Lernen verwendet werden, nicht besser funktionieren als ältere, einfachere Methoden, einfach aufgrund der voreingenommenen Modellauswahlverfahren, die bei der Leistungsbewertung verwendet werden. Die Frage ist wirklich gut, es ist wichtig, nicht selbst Teil des Modellauswahlverfahrens zu werden, indem Sie basteln!
Dikran Marsupial

Sehr interessant. (Ich habe auch die Frage selbst aufgewertet, weil ich sie durch Ihre Antwort besser zu schätzen wusste.)
whuber

2
(+1) Nette Antwort. Die Verwendung mehrerer Klassifikatoren auf demselben Datensatz, die zu einem überoptimistischen Maß für die Testgenauigkeit führen, wurde in Optimale Klassifikatorauswahl und negative Verzerrung bei der Fehlerratenschätzung erörtert : Eine empirische Studie zur hochdimensionalen Vorhersage , BMC MRM 2009, 9:85 (mit einigen PDF-Folien hier ), mit anderer Diskussion in Multiple-Rule-Bias beim Vergleich von Klassifizierungsregeln (Yousefi et al., Bioinformatics 2011, 27 (12): 1675).
chl

Vielen Dank für die Links zu den Zeitungen, sie sehen interessant aus.
Dikran Marsupial

15

Eine Möglichkeit, dies zu gewährleisten, besteht darin, sicherzustellen, dass Sie alle Dinge, die Sie tun, um zum Modell zu passen, codiert haben , auch das "Basteln". Auf diese Weise behalten Sie die Konsistenz zwischen den Läufen bei, wenn Sie den Prozess wiederholt ausführen, z. B. durch Kreuzvalidierung. Dies stellt sicher, dass alle potenziellen Variationsquellen durch den Kreuzvalidierungsprozess erfasst werden.

Die andere wichtige Sache ist, sicherzustellen, dass Sie in beiden Datensätzen eine repräsentative Stichprobe haben. Wenn Ihr Datensatz nicht für die Art von Daten repräsentativ ist, die Sie voraussichtlich zur Vorhersage verwenden, können Sie nicht viel tun. Alle Modelle basieren auf der Annahme, dass "Induktion" funktioniert - die Dinge, die wir nicht beobachtet haben, verhalten sich wie die Dinge, die wir beobachtet haben.

Halten Sie sich generell von komplexen Modellanpassungsprozeduren fern, es sei denn, (i) Sie wissen, was Sie tun, und (ii) Sie haben die einfacheren Methoden ausprobiert und festgestellt, dass sie nicht funktionieren und wie die komplexe Methode die Probleme behebt Probleme mit der einfachen Methode. "Einfach" und "komplex" sind im Sinne von "einfach" oder "komplex" für die Person zu verstehen, die die Anpassung vornimmt. Der Grund, warum dies so wichtig ist, besteht darin, dass Sie das, was ich als "Schnüffeltest" bezeichne, auf die Ergebnisse anwenden können. Sieht das Ergebnis richtig aus? Sie können die Ergebnisse einer Prozedur, die Sie nicht verstehen, nicht "riechen".

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

Grundsätzlich reduziert sich dies auf die Verwendung eines Strafbegriffs, um den Unterschied zwischen Trainings- und Testfehlern wie BIC oder AIC zu berücksichtigen. Auf diese Weise erhalten Sie praktisch das gleiche Ergebnis wie mit einem Test-Set, müssen jedoch keine potenziell nützlichen Informationen wegwerfen. Mit dem BIC approximieren Sie den Beweis für das Modell, der mathematisch wie folgt aussieht:

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)]

Dies deutet auf eine Form der Kreuzvalidierung hin, bei der das Trainingsset jedoch ständig aktualisiert wird, und zwar eine Beobachtung nach der anderen aus dem Testset - ähnlich wie beim Kalman-Filter. Wir sagen die nächste Beobachtung aus dem Testsatz unter Verwendung des aktuellen Trainingssatzes voraus, messen die Abweichung vom beobachteten Wert unter Verwendung der bedingten Log-Wahrscheinlichkeit und aktualisieren dann den Trainingssatz, um die neue Beobachtung einzuschließen. Beachten Sie jedoch, dass bei diesem Verfahren alle verfügbaren Daten vollständig aufbereitet werden und gleichzeitig sichergestellt wird, dass jede Beobachtung als "Out-of-Sample" -Fall getestet wird. Es ist auch insofern unveränderlich, als es keine Rolle spielt, was Sie "Beobachtung 1" oder "Beobachtung 10" nennen; Das Ergebnis ist dasselbe (Berechnungen sind für einige Permutationen möglicherweise einfacher als für andere). Die Verlustfunktion ist auch "adaptiv"Li=log[p(yi|y1yi1MiI)]Lii

Ich würde vorschlagen, dass die Bewertung von Vorhersagemodellen auf diese Weise recht gut funktioniert.


4
+1 - guter Rat und interessante Diskussion zur Hebelwirkung (für große Datensätze). Ich verwende in der Regel kleine Datensätze, bei denen eine Überanpassung wahrscheinlich ist, und in solchen Situationen ist es oft sehr einfach, die marginale Wahrscheinlichkeit ("Evidenz") zu überanpassen, und es ergibt sich ein schlechteres Modell als zu Beginn. Ich vermute, AIC und BIC sind ähnlich "spröde". Im Wesentlichen ist die Optimierung die Wurzel allen Übels in der Statistik, da jede Auswahl oder jeder Parameter, den Sie auf der Grundlage einer endlichen Stichprobe abstimmen, die Möglichkeit einer Überanpassung bietet. Marginalisierung ist viel sicherer, aber im Allgemeinen rechenintensiv.
Dikran Marsupial

2
+1 - vor allem im dritten Absatz (zuerst einfache Methoden anwenden). Erinnert an die gute alte Pareto-Regel. Wenn maschinelle Lernende dies berücksichtigen würden, bevor sie ihren unzureichenden Versuch veröffentlichen, die Überlegenheit ihres neuen gezüchteten Algorithmus zu beweisen ...
steffen

8

Ich nehme an, der einzige Weg, dies zu garantieren, ist, dass jemand anderes die Testdaten hat . In einer Kunden-Berater-Beziehung kann dies relativ einfach verwaltet werden: Der Kunde gibt dem Berater den Schulungssatz, auf dem die Modelle aufgebaut werden sollen, und innerhalb dieses Schulungssatzes kann der Berater die Daten auf die erforderliche Weise aufteilen, um sicherzustellen, dass keine Überanpassung erfolgt auftreten; Anschließend werden die Modelle an den Kunden zurückgegeben, um sie für ihre Testdaten zu verwenden.

Für einen einzelnen Forscher ist es naheliegend, diesen Aufbau zu imitieren. Dies würde bedeuten, einige der zu testenden Daten abzuspeichern, nachdem die gesamte Modellauswahl durchgeführt wurde. Leider, wie Sie sagen, wird dies von vielen Menschen nicht praktiziert, und es passiert sogar Menschen , die es besser wissen sollten!

Letztendlich hängt es jedoch davon ab, wofür das Modell verwendet wird. Wenn Sie sich nur für die Vorhersage eines einzelnen Datensatzes interessieren, können Sie dann vielleicht alles überanpassen, was Sie möchten? Wenn Sie jedoch versuchen, Ihr Modell als ein Modell zu fördern, das gut verallgemeinert oder das Modell in einer realen Anwendung verwendet, ist dies natürlich von großer Bedeutung.

Es gibt ein Nebenproblem, von dem ich dachte, dass ich es erwähnen sollte: Selbst wenn Sie alle Verfahren korrekt befolgen, können Sie trotzdem Modelle finden, die überarbeitet sind, da die Daten nicht wirklich stimmen . Wenn die Daten beispielsweise zeitliche Korrelationen aufweisen, Sie alle Trainingsdaten aus den Zeitpunkten 1 bis 3 abrufen und zum Zeitpunkt 4 testen, stellen Sie möglicherweise fest, dass der Vorhersagefehler größer als erwartet ist. Alternativ könnten experimentenspezifische Artefakte wie das verwendete Messgerät oder der Pool von Probanden in menschlichen Experimenten dazu führen, dass die Verallgemeinerung der Modelle schlechter als erwartet ausfällt.


Ja, ich bin mir bewusst, dass es überraschend schwierig ist, einen Datensatz außerhalb der Stichprobe zu erstellen, da es leicht ist, versehentlich zeitliche Korrelationen zu erhalten und was nicht.
Michael McGowan

1
Einige Unternehmen tun dies als Richtlinie, die z. B. implementiert wird, indem Datenbankberechtigungen viewentsprechend festgelegt werden, wenn einige Teams Testdaten-vertraulich und andere Testdaten-blind sind.
ijoseph

6

Dies ist eine sehr gute Frage und ein sehr subtiles Problem. Natürlich gibt es die böswilligen Fehler, die von jemandem stammen, der versucht, Sie zu täuschen. Aber es gibt eine tiefere Frage, wie man ein versehentliches Auslaufen und ehrliche Fehler vermeidet.

Lassen Sie mich einige betriebliche bewährte Verfahren auflisten. Sie alle stammen aus ehrlichen Fehlern, die ich irgendwann gemacht habe:

  • Teilen Sie Ihre Daten in drei Gruppen ein: Trainieren, Validieren und Testen.
  • Verstehen Sie das Problem-Setup, um darüber streiten zu können, was sinnvoll ist und was nicht. Verstehen Sie das Problem. Oft kann ein subtiles Missverständnis der Daten zu Undichtigkeiten führen. Während zum Beispiel niemand an demselben Frame eines Videos trainieren und testen würde, ist es subtiler, wenn zwei Frames desselben Videos in unterschiedliche Falten fallen, zwei Frames desselben Videos wahrscheinlich die gleiche Beleuchtung haben und so weiter .
  • Seien Sie äußerst vorsichtig mit zuvor geschriebenen Kreuzvalidierungsverfahren. Mehr noch mit denen, die nicht von Ihnen geschrieben wurden (LIBSVM ist hier ein großer Täter).
  • Wiederholen Sie jeden Versuch mindestens zweimal, bevor Sie irgendetwas melden, auch wenn Sie dies Ihrem Bürokameraden melden. Versionskontrolle ist Ihr Freund, bevor Sie ein Experiment ausführen, schreiben Sie auf, welche Version des Codes Sie ausführen.
  • Seien Sie sehr vorsichtig, wenn Sie Ihre Daten normalisieren. Dies führt oft zu der Annahme, dass Sie den vollständigen Datensatz haben, auf dem Sie gleichzeitig testen möchten, was wiederum oft nicht realistisch ist.

Unter machinelearning.stackexchange.com/a/196/114 gab es eine Frage zu Trainings- / Evaluierungssets und ich gab einen theoretischen Überblick darüber - mit Erläuterungen zu geschichtetem Holdout, k-facher Kreuzvalidierung und wiederholten Experimenten. Meiner ungebildeten Meinung nach adressieren diese Methoden die obige Frage vollständig , und der Rest ist nur das "Problem des Lehrers". Außerdem scheinen alle Methoden in Ihrer Liste die "einfach schlampigen, inakzeptablen Fehler" zu beheben, und ich sehe dort keine Feinheiten. Ich bin sehr gespannt, was ich vermisse - können Sie das kommentieren?
Andreister

Ich stimme zu, dass sie alle aus Schlamperei stammen. Ich hatte auch erwähnt, dass sie überhaupt nicht theoretisch sind (nachdem gesagt wurde, dass sie betriebsbereit sind). Ich habe meinen Beitrag ein wenig bearbeitet.
CarlosDC

5

In den ausgezeichneten Antworten, die bereits gegeben wurden, wurden viele wichtige Punkte behandelt.

In letzter Zeit habe ich diese persönliche Checkliste für die statistische Unabhängigkeit von Testdaten entwickelt:

  • Daten auf höchster Ebene der Datenhierarchie aufteilen (z. B. patientenseitig aufteilen)
  • Aufteilung auch unabhängig für bekannte oder vermutete Störfaktoren, z. B. tägliche Variation von Instrumenten usw.
  • (DoE sollte auf zufällige Messreihenfolge achten **)
  • Alle Berechnungsschritte, die mit dem ersten (normalerweise vorbereitenden) Schritt beginnen, an dem mehr als ein Patient * beteiligt ist, müssen für jedes Ersatzmodell bei der Validierung der erneuten Probenahme erneut durchgeführt werden. Vor diesem Schritt müssen die Testpatienten getrennt werden .
    • Dies gilt unabhängig davon, ob die Berechnung als Vorverarbeitung oder als Teil des tatsächlichen Modells bezeichnet wird.
    • Typische Täter: Mittelwertzentrierung, Varianzskalierung (in der Regel nur geringer Einfluss), Dimensionsreduktion wie PCA oder PLS (kann starke Verzerrungen verursachen, z. B. keine Fehler um eine Größenordnung unterschätzen)
  • Jede Art von datengetriebener Optimierung oder Modellauswahl erfordert einen weiteren (äußeren) Test, um das endgültige Modell unabhängig zu validieren.
  • Es gibt einige Arten der Generalisierungsleistung, die nur mit bestimmten unabhängigen Testreihen gemessen werden können, z. B. wie sich die Vorhersageleistung in zukünftigen Fällen verschlechtert (ich beschäftige mich nicht mit Zeitreihenprognosen, sondern nur mit Instrumentendrift). Dies erfordert jedoch eine ordnungsgemäß konzipierte Validierungsstudie.
  • In meinem Bereich gibt es eine andere Art von Datenleck: Wir machen ortsaufgelöste Spektroskopie an biologischen Geweben. Die Referenzkennzeichnung der Testspektren muss gegenüber der spektroskopischen Information verblendet sein, auch wenn es verlockend ist, eine Clusteranalyse zu verwenden, und dann nur herauszufinden, welcher Klasse jeder Cluster angehört (das wären halbüberwachte Testdaten, die es nicht sind) unabhängig überhaupt).

  • Last but not least: Beim Codieren der Resampling-Validierung überprüfe ich tatsächlich, ob die berechneten Indizes im Datensatz nicht dazu führen, dass Testreihen von Trainingspatienten, Tagen usw. abgerufen werden.

Beachten Sie, dass das "Aufteilen nicht durchgeführt, um Unabhängigkeit zu gewährleisten" und "Aufteilen, bevor eine Berechnung erfolgt, die mehr als einen Fall umfasst" auch bei Tests auftreten kann, die behaupten, einen unabhängigen Testsatz zu verwenden, und letzterer auch dann, wenn der Datenanalyst dies ist blind gegenüber der Referenz der Testfälle. Diese Fehler können nicht auftreten, wenn die Testdaten bis zur Vorlage des endgültigen Modells zurückgehalten werden.

* Ich verwende Patienten als oberste Hierarchie in Daten, nur um die Beschreibung zu vereinfachen.
** Ich bin analytischer Chemiker: Instrumentendrift ist ein bekanntes Problem. Ein Teil der Validierung chemischer Analysemethoden besteht darin, zu bestimmen, wie oft Kalibrierungen mit Validierungsproben verglichen werden müssen und wie oft die Kalibrierung wiederholt werden muss.


FWIW: In der Praxis beschäftige ich mich mit Anwendungen, bei denen

  • p102103
  • nrowsp
  • nbiol.replicatesnpatientsp100101102
  • In Abhängigkeit von der spektroskopischen Messmethode können alle Reihen eines Patienten sehr ähnlich oder eher unähnlich sein, da verschiedene Arten von Spektren ein Signal-Rausch-Verhältnis (Instrumentenfehler) aufweisen, das ebenfalls um eine Größenordnung variiert

Persönlich muss ich mich noch mit der Anwendung auseinandersetzen, bei der ich für die Entwicklung von Klassifikatoren genügend unabhängige Fälle erhalte, um einen geeigneten unabhängigen Testsatz beiseite legen zu können. Daher bin ich zu dem Schluss gekommen, dass eine ordnungsgemäß durchgeführte Validierung der Neuabtastung die bessere Alternative ist, während sich die Methode noch in der Entwicklung befindet. Richtige Validierungsstudien müssen irgendwann durchgeführt werden, aber es ist eine enorme Verschwendung von Ressourcen (oder die Ergebnisse enthalten aufgrund von Abweichungen keine nützlichen Informationen), während sich die Methodenentwicklung in einem Stadium befindet, in dem sich die Dinge noch ändern.


2

Wenn ich mich richtig erinnere, verwenden einige der Prognosewettbewerbe (wie Netflix oder die auf Kaggle) dieses Schema:

Es gibt ein Trainingsset mit den "Antworten". Es gibt Test-Set Nr. 1, auf das der Forscher Antworten gibt. Der Forscher findet ihre Punktzahl heraus. Es gibt Test-Set Nr. 2, auf das der Forscher Antworten gibt, ABER der Forscher findet die Punktzahl nicht heraus. Der Forscher weiß nicht, welche Vorhersagefälle in # 1 und # 2 sind.

Irgendwann muss Satz 2 sichtbar werden, aber Sie haben die Kontamination zumindest begrenzt.


2

In einigen Fällen, z. B. bei Prädiktoren auf der Basis biologischer Sequenzen, reicht es nicht aus, sicherzustellen, dass Fälle nicht in mehr als einem Satz auftreten. Sie müssen sich immer noch um die Abhängigkeit zwischen den Sets kümmern.

Beispielsweise muss für sequenzbasierte Prädiktoren die Redundanz beseitigt werden, indem sichergestellt wird, dass Sequenzen in verschiedenen Sätzen (einschließlich der verschiedenen Kreuzvalidierungssätze) keine hohe Sequenzähnlichkeit aufweisen.


2

Ich würde sagen, "k-fach Kreuzvalidierung" ist aus theoretischer Sicht die richtige Antwort, aber Ihre Frage scheint eher organisatorisch und lehrtechnisch zu sein, daher werde ich anders antworten.


Wenn die Leute "noch lernen", wird oft gedacht, dass sie "schnell und schmutzig" lernen , die Algorithmen und das gesamte "zusätzliche" Wissen (Problemmotivation, Datensatzvorbereitung, Validierung, Fehleranalyse, praktische Fallstricke usw.) anzuwenden ) wird "später" gelernt, wenn sie "besser vorbereitet" sind.

Das ist absolut falsch.

  1. Wenn wir wollen, dass ein Schüler oder wer auch immer den Unterschied zwischen einem Test-Set und einem Trainings-Set versteht, wird das Schlimmste sein, die beiden Sets zwei verschiedenen Leuten zu geben, als ob wir denken, dass "in diesem Stadium" das "zusätzliche Wissen" ist schädlich. Dies ist wie ein Wasserfall-Ansatz in der Software-Entwicklung - einige Monate reines Design, dann einige Monate reines Codieren, dann einige Monate reines Testen und letztendlich ein schade wegwerfendes Ergebnis.

  2. Lernen sollte nicht wie ein Wasserfall verlaufen. Alle Teile des Lernens - Problemmotivation, Algorithmus, praktische Fallstricke, Ergebnisbewertung - müssen in kleinen Schritten zusammengeführt werden. (Wie ein agiler Ansatz in der Softwareentwicklung).

Vielleicht hat jeder hier Andrew Ngs ml-class.org durchgesehen - ich würde seinen Kurs als Beispiel für einen robusten "agilen" Lernstil anführen , der niemals die Frage nach dem "Wie" ergeben würde stellen Sie sicher, dass die Testdaten nicht in die Trainingsdaten gelangen ".


Beachten Sie, dass ich Ihre Frage möglicherweise völlig falsch verstanden habe, also entschuldigen Sie! :)


Lernen für den Menschen (dh Lernen, wie man im Allgemeinen modelliert) sollte nicht als Wasserfall ablaufen, sondern das Lernen für das Modell . Andernfalls fließen Teile der Testdaten in die Trainingsdaten ein und Ihr Modell ist anfälliger für Überanpassungen.
Michael McGowan

Und ich habe mehr über Software nachgedacht. Ein Benutzer erstellt ein Modell, das beim Training eine Genauigkeit von 90% und beim Testen eine Genauigkeit von 75% aufweist. Sie ändern dann einige Regler und Einstellungen in der Software und erhalten eine Genauigkeit von 80% beim "Testen". Sie gehen wieder zurück und nehmen weitere Optimierungen vor und erhalten eine Genauigkeit von 85% beim "Testen". Dieser so genannte "Test" -Datensatz ist jedoch nicht mehr aus der Stichprobe und das Modell wurde überarbeitet.
Michael McGowan

Genau. Dies ist ein menschliches Lernproblem (Lehrerproblem, wenn Sie so wollen). Es sollte so schnell wie möglich aufgedeckt werden, anstatt durch künstliche Mittel verborgen zu werden, um sicherzustellen, dass X nicht in Y
eindringt

Leute, die es besser wissen sollten, machen diesen Fehler trotzdem. Sie können diesen Effekt bis zu einem gewissen Grad in einem Softwarepaket mit einem Workflow abschwächen, der implizit oder explizit gute Praktiken fördert und schlechte Praktiken abschreckt. Dass der Mensch es besser wissen sollte, ist kein Grund, das Problem zu ignorieren.
Michael McGowan

@MichaelMcGowan - Sie ignorieren auch die Vorteile des Leckens -, dass Ihr Algorithmus durch die Verwendung des Testsatzes möglicherweise verbessert wurde (dh train + test enthält mehr Daten als nur train). Es ist wirklich nur ein anderer Kompromiss zwischen verbesserter Genauigkeit und verbesserter Genauigkeitsmessung. Für mich ist ersteres wichtiger.
Wahrscheinlichkeitslogik
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.