Ich denke, ein erster Schritt ist zu überprüfen, ob das gemeldete Training und die Testleistung tatsächlich korrekt sind.
- Erfolgt die Aufteilung während der 5-fachen Kreuzvalidierung auf eine Weise, die statistisch unabhängige CV-Zug- / Test-Sets ergibt? ZB wenn es wiederholte Messungen in den Daten gibt, landen sie immer in der gleichen Menge?
- Eine Genauigkeit von 95,83% in einem 5-fachen Lebenslauf von 150 Proben entspricht 5 von 130 falschen Trainingsproben für die 5 Ersatzmodelle oder 25 falschen Fällen für 5 * 130 Trainingsproben.
Eine Testgenauigkeit von 98,21% ist schwieriger zu erklären: Während eines Durchlaufs des Lebenslaufs sollte jeder Fall einmal getestet werden. Daher sollten die möglicherweise gemeldeten Zahlen in Schritten von 100% / 150 angegeben werden. 98,21% entsprechen 2,68 falschen Fällen (2 und 3 falsche von 150 Testfällen ergeben eine Genauigkeit von 98,67 bzw. 98,00%).
Wenn Sie Ihr Modell extrahieren können, berechnen Sie die gemeldeten Genauigkeiten extern.
- Was sind die gemeldeten Genauigkeiten für zufällige Eingaben?
- Führen Sie eine externe Quervalidierung durch: Teilen Sie Ihre Daten auf und übergeben Sie nur den Trainingsteil an das Programm. Vorhersage der "externen" Testdaten und Berechnung der Genauigkeit. Entspricht dies der Programmausgabe?
- Stellen Sie sicher, dass die gemeldete "Testgenauigkeit" aus unabhängigen Daten stammt (doppelte / verschachtelte Kreuzvalidierung): Wenn Ihr Programm datengetriebene Optimierungen durchführt (z. B. Auswahl der "besten" Funktionen durch Vergleich vieler Modelle), entspricht dies eher einem Trainingsfehler (Güte) of fit) als wie ein Generalisierungsfehler.
Ich stimme @mbq zu, dass Trainingsfehler beim maschinellen Lernen kaum nützlich sind. Sie befinden sich jedoch möglicherweise in einer der wenigen Situationen, in denen dies tatsächlich nützlich ist: Wenn das Programm durch Vergleichen der Genauigkeiten ein "bestes" Modell auswählt, aber nur Trainingsfehler zur Auswahl hat, müssen Sie prüfen, ob der Trainingsfehler tatsächlich einen vernünftigen zulässt Wahl.
@mbq skizzierte das Best-Case-Szenario für nicht unterscheidbare Modelle. Es gibt jedoch auch schlimmere Szenarien: Genau wie die Testgenauigkeit unterliegt auch die Trainingsgenauigkeit einer Varianz, ist jedoch im Vergleich zur Generalisierungsgenauigkeit, die normalerweise von Interesse ist, optimistisch eingestellt. Dies kann zu einer Situation führen, in der Modelle nicht unterschieden werden können, obwohl sie tatsächlich eine unterschiedliche Leistung aufweisen. Ihre Trainings- (oder internen Lebenslauf-) Genauigkeiten sind jedoch zu eng, um sie aufgrund ihrer optimistischen Tendenz zu unterscheiden. Beispielsweise können iterative Merkmalsauswahlmethoden solchen Problemen unterliegen, die sogar für die internen Kreuzvalidierungsgenauigkeiten bestehen bleiben (abhängig davon, wie diese Kreuzvalidierung implementiert wird).
Wenn ein solches Problem auftreten könnte, ist es meiner Meinung nach eine gute Idee, zu prüfen, ob die vom Programm für die Entscheidung verwendeten Genauigkeiten möglicherweise zu einer vernünftigen Auswahl führen. Dies würde bedeuten, zu überprüfen, ob die interne Lebenslaufgenauigkeit (die angeblich zur Auswahl des besten Modells herangezogen wird) in Bezug auf einen extern durchgeführten Lebenslauf mit statistisch unabhängiger Aufteilung nicht oder nicht zu optimistisch ist. Auch hier können synthetische und / oder zufällige Daten helfen, herauszufinden, was das Programm tatsächlich tut.
In einem zweiten Schritt muss geprüft werden, ob die beobachteten Unterschiede für statistisch unabhängige Teilungen sinnvoll sind, wie @mbq bereits ausgeführt hat.
Ich schlage vor, Sie berechnen, welchen Genauigkeitsunterschied Sie bei der angegebenen Stichprobengröße beachten müssen, um einen statistisch aussagekräftigen Unterschied zu erhalten. Wenn Ihre beobachtete Variation geringer ist, können Sie nicht entscheiden, welcher Algorithmus mit Ihrem gegebenen Datensatz besser ist: Eine weitere Optimierung ist nicht sinnvoll.