2016-05-22 6 views
0

Ich habe derzeit ein Programm, das einen Merkmalsvektor und eine Klassifikation verwendet und es auf einen bekannten Gewichtsvektor anwendet, um einen Verlustgradienten mithilfe der logistischen Regression zu erzeugen. Dies ist der Code:Logistische Regressionsverlust-Funktion in Softmax umwandeln

double[] grad = new double[featureSize]; 

     //dot product w*x 
     double dot = 0; 
     for (int j = 0; j < featureSize; j++) { 
      dot += weights[j] * features[j]; 
     } 

     //-yi exp(-yi w·xi)/(1+ exp(-yi w·xi)) 
     double gradMultiplier = (-type) * Math.exp((-type) * dot)/(1 + (Math.exp((-type) * dot))); 

     //-yi xi exp(-yi w·xi)/(1+ exp(-yi w·xi)) 
     for (int j = 0; j < featureSize; j++) { 
      grad[j] = features[j] * gradMultiplier; 
     } 

     return grad; 

Was ich versuche zu tun, etwas umzusetzen ähnlich einer Softmax Regression, aber alle Infos von Softmax ich online finden nicht genau das gleiche Vokabular folgen wie das, was ich weiß, über Logit-Verlust-Funktionen, und so werde ich immer verwirrt. Wie würde ich eine Funktion implementieren, die der obigen ähnlich ist, aber Softmax verwendet?

Basierend auf der Wikipedia-Seite für Softmax, habe ich den Eindruck, dass ich mehrere Gewichtsvektoren benötigen könnte, eine für jede mögliche Klassifizierung. Liege ich falsch?

+0

Sie könnten darüber nachdenken, dies auf die [Math Website] (http://math.stackexchange.com) zu verschieben. –

Antwort

1

Die Softmax-Regression ist eine Verallgemeinerung der logistischen Regression. In der logistischen Regression sind die Bezeichnungen binär und in der Softmax-Regression können sie mehr als zwei Werte annehmen. Logistische Regression bezieht sich auf binomiale logistische Regression und Softmax Regression bezieht sich auf multinomiale logistische Regression.

Es gibt eine ausgezeichnete Seite darüber here. In Ihrem Code scheinen Sie zu versuchen, den Gradientenabstieg zu implementieren, um die weights Minimierung der Kostenfunktion zu berechnen. Dieses Thema wird durch den angegebenen Link abgedeckt.

Basierend auf der Wikipedia-Seite für Softmax, ich habe den Eindruck, dass ich mehrere Gewichtsvektoren benötigen, eine für jede mögliche Klassifizierung. Liege ich falsch?

Sie haben Recht. Wenn Sie n Merkmale und K Klassen haben, dann Ihre Gewichte sind K Vektoren n Elemente wie auf den Link oben angegeben.

Lassen Sie mich wissen, wenn es hilft.

Verwandte Themen