2016-06-17 7 views
2

L2 Regularisierung muss in die Kostenfunktion hinzugefügt werden, wenn lineare Regression verwendet wird?L2 Regularisierung muss in die Kostenfunktion hinzugefügt werden, wenn lineare Regression verwendet wird?

Im nicht hinzufügen l2 oder Berücksichtigung bei der Berechnung der Kosten. Ist das falsch?

Der Code-Snippet sollte ausreichend sein:

def gradient(self, X, Y, alpha, minibatch_size): 

    predictions = None 

    for batch in self.iterate_minibatches(X, Y, minibatch_size, shuffle=True): 
     x, y = batch 
     predictions = x.dot(self.theta) 

     for it in range(self.theta.size): 
      temp = x[:, it] 
      temp.shape = (y.size, 1) 

      errors_x1 = (predictions - y) * temp 

      self.theta[it] = self.theta[it] - alpha * (1.0/y.size) * errors_x1.sum() + self.lambda_l2 * self.theta[it] * self.theta[it].T 

    print self.cost(X, Y, self.theta) 


def cost(self, X, Y, theta, store=True): 
    predictions = X.dot(theta) 

    from sklearn.metrics import mean_squared_error 
    cost = mean_squared_error(Y, predictions, sample_weight=None, multioutput='uniform_average') 

    if store is True: 
     self.cost_history.append(cost) 

    return cost 

Antwort

1

Es ist nicht notwendig L2 (oder L1) Regularisierung Ihre lineare Regression (LR) Implementierung hinzuzufügen.

Das Hinzufügen des L2-Regularisierungsbegriffs zu unserer Kostenfunktion hat jedoch einen Vorteil gegenüber LR ohne Regularisierungszeitraum. Am wichtigsten ist, Regularisierung Begriff hilft Ihnen, die Überanpassung des Modells zu reduzieren und die Verallgemeinerung Ihrer Modelle zu verbessern. LR mit L2-Regularisierung wird allgemein als "Ridge Regression" bezeichnet.

Zusätzlich zur Ridge-Regression ist LR mit L1-Regularisierung als Lasso Regression bekannt. Wenn Sie Regressionsmodelle mithilfe der Lasso-Regression erstellen, sind Ihre Modelle spärliche Modelle. Daher kann Lasso auch für die Merkmalauswahl verwendet werden.

Viel Glück!

+0

self.theta [it] = selbst.theta [it] - alpha * (1.0/y.größe) * errors_x1.sum() + self.lambda_l2 * self.theta [it] * self.theta [it] .T – KenobiShan

Verwandte Themen