Ist es möglich, Parameterregularisierung in der nichtlinearen Plattform durchzuführen?Ich habe ein Problem (vgl https://public.jmp.com/packages/Problematic-Nonlinear-Fit/js-p/kz0BFg2_XHtZjz6kNKdXg ), wo ich ein nichtlineares Modell anpasse, und aufgrund der Daten gibt es eine gewisse Instabilität in der Modellanpassung.Einer der Parameter im nichtlinearen Modell tendiert dazu, "ins Unendliche zu gleiten", wenn es kleine Fehler in den Daten im Vergleich zum wahren theoretischen Modell gibt.Ich möchte das nichtlineare Modell anpassen, aber diesen Parameter (z. B. die L2-Norm) bestrafen, damit der Parameter nicht explodiert.
Was ich damit meine:
Angenommen, mein nichtlineares Modell ist
f(t) = A * (1 - exp(-k*t)) + B * (1-exp(0,0193 * t))
normalerweise ist die Verlustfunktion, die minimiert wird, um die Parameterschätzungen zu finden, der quadrierte Fehlerverlust
find(A, k,
, sodass sum { (yf(t))^2) } minimiert wird
Was ich tun möchte, ist etwas mehr wie
find(A, k,
, sodass sum{ (yf(t))^2 + lambda*k^2} minimiert wird
wobei Lambda ein Regularisierungsparameter ist, den ich basierend auf einer einfachen Rastersuche selbst auswählen würde.
Ich habe versucht, eine benutzerdefinierte Verlustfunktionsspalte zu verwenden, aber ich weiß nicht, ob ich einen Modellparameter aus einer anderen Spalte in diese Spalte aufnehmen kann.
Irgendwelche Ideen, wie man verhindern kann, dass die Rate ("k") explodiert?
Betreff: Ist es möglich, Parameterregularisierung in der nichtlinearen Plattform durchzuführen?Ich habe versucht, numerische Ableitungen zu verwenden, das hat die Ergebnisse nicht geändert.Parametergrenzen tun, was Sie dachten, machen Sie einfach die Schätzung zur angegebenen Grenze.
Ich habe die Beispieldaten auch in diesem Beitrag hochgeladen.
Ich habe über eine Möglichkeit nachgedacht, dies mit dem Vorhersageprofiler zu tun.Hier ist mein Ansatz:
Ich habe eine Tabelle erstellt (siehe Anhang), die die Spalten k, A, B, Lambda und Spalte für die "Verlust" -Funktion hatte, die ich minimieren möchte.Die beigefügte Tabelle hat 2 Verlustfunktionen (QuadLoss und L2RegLoss).Jede dieser Spalten hat ein komplexeres Skript als die Formel.Ich speichere die Profildaten als Matrix, extrahiere die y- und t-Werte als Vektor und berechne dann die Differenz zwischen y und dem Modell (wobei ich das Modell als Funktion von t, k, A und B fertig schreibe).Dann berechne ich als letztes Ergebnis die Summe der quadrierten Fehler plus etwaiger zusätzlicher Regularisierungsstrafen.Der Wert für Lambda skaliert den Strafwert.Ich habe die Funktion "vektorisiert", um das Schreiben etwas einfacher zu machen.Hier ist die Funktion für den QuadLoss:
dmat = [0.061033 3, 0.0706 6, 0.0923 12, 0.104767 24, 0.122933 48, 0.1657 120, 0.2201 240];
yvec = dmat[0, 1];
tvec = dmat[0, 2];
rvec = yvec - (:A * (1 - Exp( -:k * tvec )) + :B * (1 - Exp( -0.0193 * tvec )));
(rvec` * rvec)[1];
Hier ist die Funktion für L2RegLoss
dmat = [0.061033 3, 0.0706 6, 0.0923 12, 0.104767 24, 0.122933 48, 0.1657 120, 0.2201 240];
yvec = dmat[0, 1];
tvec = dmat[0, 2];
rvec = yvec - (:A * (1 - Exp( -:k * tvec )) + :B * (1 - Exp( -0.0193 * tvec )));
(rvec` * rvec)[1] + :lambda * :k ^ 2;
Dann habe ich mithilfe des Prediction Profiler und einer Erwünschtheitsfunktion zur Minimierung des Verlusts untersucht, welche unterschiedlichen Lambda-Werte (der Regularisierungs-Tuning-Parameter) den k-Wert ergaben.In diesem Fall regularisiere ich nur k, nicht A und B.

Die gespeicherte Einstellung „NoReg“ verwendet nur den quadratischen Verlust (Summe des quadratischen Fehlers), der ähnlich sein sollte wie die nichtlineare Plattform (aber nicht genau, da ich in diesem Fall die Optimierungsroutine im Profiler verwende, die Ich bin mir ziemlich sicher, dass es anders ist als das, was die nichtlineare Plattform verwendet).Dann habe ich Werte von 0,01, 0,001, 0,1 für Lambda ausprobiert, und die Schätzung von k wird ziemlich stark durch den Wert des Abstimmungsparameters beeinflusst.Daher bin ich mit diesem Ansatz nicht ganz zufrieden.Die Wahl des Abstimmungsparameters ist eine Herausforderung, ich bin mir nicht sicher, ob dies ein vernünftiger Ansatz ist.
Betreff: Ist es möglich, Parameterregularisierung in der nichtlinearen Plattform durchzuführen?Ich habe lange über dieses Problem nachgedacht, aber ich sehe nicht, wie ich die aktuellen Parameterwerte an die Oberfläche bringen soll, damit sie in der regularisierten Verlustfunktion verwendet werden können. Es könnte möglich sein, die Vorhersageformel zu überspringen und das gesamte Modell in der Verlustfunktion auszudrücken. Benutzerdefinierte Verlustfunktionen sind meines Wissens eine Schwäche.
Es gibt eine eingebaute Funktion, die anstelle der Regularisierung helfen könnte. Sehen Hilfe > JMP-Dokumentationsbibliothek > Vorhersagende und spezialisierte Modellierung > Nichtlineare Regression > Zusätzliche Beispiele > Beispiel für das Festlegen von Parametergrenzen . Das Problem bei dieser Lösung ist, dass Ihr Parameter wahrscheinlich nur an der oberen Grenze statt an unendlich landen würde.
Haben Sie einige der nicht standardmäßigen Einstellungen ausprobiert, um zu helfen? ich frage mich, ob Nur numerische Ableitungen würde helfen? Würde die verwenden Zweite Ableitung Option helfen?