Ich habe einige Daten, die in einem Graphen . Die Eckpunkte gehören zu einer von zwei Klassen , und ich bin daran interessiert, eine SVM zu trainieren, um zwischen den beiden Klassen zu unterscheiden. Ein geeigneter Kern hierfür ist der Diffusionskern , wobei ist die Laplace von und ist ein Tuning - Parameter.K = exp ( - β L ) , L G β
Das Einstellen der SVM erfordert die Auswahl von Hyperparametern, daher muss ichHerkömmlicherweise verwenden wir für dieses Problem eine Kreuzvalidierung, aber das scheint hier nicht angemessen zu sein, da das Weglassen eines Scheitelpunkts in den gesamten Graphen ändert und möglicherweise sogar die Anzahl der verbundenen Komponenten erhöht! Wenn sich die Anzahl der verbundenen Komponenten ändert, sind einige Scheitelpunkte für andere nicht mehr erreichbar, und wir sehen uns mit einem ganz anderen Datensatz konfrontiert als zu Beginn. Das heißt, wir vermissen nicht nur den entfernten Scheitelpunkt , sondern auch Informationen über alle anderen Scheitelpunkte im Diagramm, die diesem Scheitelpunkt benachbart waren.i G i j
Der Grundbegriff der Kreuzvalidierung besteht darin, dass wir die Leistung des Modells bei der Präsentation neuer Daten approximieren möchten. Bei Standardproblemen ändert das Weglassen einiger Ihrer Daten zum Testen nicht die Werte der verbleibenden Trainingsdaten. Bei Diagrammdaten ist jedoch nicht klar, was es für das Modell bedeutet, "neue" Daten in der CV-Einstellung anzuzeigen. Das Weglassen von Scheitelpunkten oder Kanten kann die Daten vollständig ändern. Stellen Sie sich zum Beispiel einen Graphen der ein Stern-Graph ist, in dem ein Scheitelpunkt Kanten zu Scheitelpunkten hat und alle anderen Scheitelpunkte 1 Kante haben. Weglassen des zentralen Scheitelpunkts zum Erstellen der Trainingsdatenk k k S ≤ S ≤ S.wird den Graphen vollständig trennen und die Kernelmatrix wird diagonal sein! Aber natürlich wird es möglich sein, ein Modell anhand dieser in bereitgestellten Trainingsdaten zu trainieren . Weniger klar ist, was es bedeutet, die Out-of-Sample-Leistung des resultierenden Modells zu testen. Muss man neu berechnet die Kernmatrix für , und sehen vor , dass die Prognosen zu machen?
Oder beginnt man alternativ damit, die Kernelmatrix von in ihrer Gesamtheit zu berechnen und Zeilen und Spalten wegzulassen, wenn dies zur Erzeugung der zur Schätzung der SVM verwendeten Kernelmatrix erforderlich ist? Dies stellt seine eigenen konzeptionellen Probleme dar, da die Einbeziehung des zentralen Knotens in bedeutet, dass jeder Scheitelpunkt von jedem anderen Scheitelpunkt aus erreichbar ist und die Kernelmatrix dicht ist. Bedeutet diese Einbeziehung, dass Informationen über mehrere Falten hinweg verloren gehen und die Kreuzvalidierungsausgabe verzerrt wird? Einerseits sind noch Daten über die ausgelassenen zentralen Knoten vorhanden, da der ausgelassene zentrale Knoten den Graphen verbindet. Andererseits wissen wir nichts über die BezeichnungenS y von den ausgelassenen Knoten, so dass wir uns sicher sein können, dass wir durch die Durchführung von CV auf diese Weise einigermaßen unvoreingenommene Schätzungen außerhalb der Stichprobe erhalten.
Wie wählt man Hyperparameter für Probleme dieser Art aus? Ist der Lebenslauf unvollständig, aber akzeptabel, oder benötigen wir spezielle Methoden? Ist in meinem Kontext überhaupt eine Hyperparameter-Abstimmung möglich?
quelle
Antworten:
Haftungsausschluss: Ich bin mit Grafikkernen nicht sehr vertraut, daher könnte diese Antwort auf falschen Annahmen beruhen. Ich bin damit einverstanden, dass das Weglassen von Scheitelpunkten beim Berechnen der Kernelmatrix nicht optimal ist. Ich bin mir jedoch nicht sicher, ob eine Kreuzvalidierung unbedingt problematisch ist. Ist Ihr Lernkontext Transduktion oder Induktion?
Insgesamt bin ich nicht davon überzeugt, dass die Berechnung der Kernelmatrix für eine bestimmte basierend auf allen Daten (dh sowohl Zug als auch Test) notwendigerweise ein Informationsleck erzeugt. Wenn sich herausstellt, dass die Berechnung des Kernels basierend auf allen Daten in Ordnung ist, können Sie Modelle in einem typischen Lebenslauf-Setup trainieren, indem Sie die relevanten Blöcke der (vorberechneten) vollständigen Kernel-Matrix zum Trainieren / Testen verwenden.β
Dieser Ansatz würde es Ihnen ermöglichen, und gemeinsam zu optimieren , beispielsweise über Bibliotheken wie Optunity , wobei verwendet wird, um den Kernel basierend auf allen Daten zu berechnen, und verwendet wird, um Modelle ausschließlich auf den Trainingsfalten zu trainieren.C β C.β C β C
quelle