Ich habe eine logistische Regression mit dem IRLS-Algorithmus programmiert . Ich möchte eine LASSO-Bestrafung anwenden , um automatisch die richtigen Funktionen auszuwählen. Bei jeder Iteration wird Folgendes gelöst:
Sei eine nicht negative reelle Zahl. Ich bestrafe nicht den in The Elements of. Statistisches Lernen . Das Gleiche gilt für die bereits null Koeffizienten. Ansonsten subtrahiere ich einen Begriff von der rechten Seite:
Ich bin mir jedoch nicht sicher, ob der IRLS-Algorithmus geändert wurde. Ist es der richtige Weg?
Edit: Obwohl ich mir nicht sicher war, ist hier eine der Lösungen, die ich endlich gefunden habe. Interessant ist, dass diese Lösung dem entspricht, was ich jetzt über LASSO verstehe. Bei jeder Iteration gibt es in der Tat zwei Schritte anstatt nur einen:
- Der erste Schritt ist derselbe wie zuvor: Wir machen eine Iteration des Algorithmus (als ob in der Formel für den obigen Gradienten),
- Der zweite Schritt ist der neue: Wir wenden auf jede Komponente (mit Ausnahme der Komponente , die dem entspricht) des Vektors , der im ersten Schritt erhalten wurde , eine weiche Schwelle an . Dies wird als iterativer Soft-Thresholding-Algorithmus bezeichnet . β