Ejemplo n.º 1
0
    def fit(self, X, Y):
        n, d = X.shape[0], X.shape[1]
        Y = Y.reshape(-1, 1) 
        L = self.calculateL(self.xi)
        #secOrd = np.linalg.pinv((X.T.dot(X) * L + self.reg * np.eye(d)) / n)
#        I = np.eye(d)
#        I[-1, -1] = 0 #Not regularize the intercept
        try:
            secOrd = np.linalg.pinv(X.T.dot(X) * L / n + self.reg * np.eye(d))
        except Exception as e:
            print(e.message)
        if not self.manualInitial:
            self.initialize(X, Y)
        
        t = 0.
        while t < self.iterations:
            v = X.dot(self._beta)
            GEVFunc.clip(self.xi, v)
            Y_hat = GEVFunc.inverseLink(self.xi, v)
            #firOrd = (X.T.dot(Y_hat - Y) + self.reg * self._beta) / n  
#            tmp = self.reg * self._beta
#            tmp[-1] = 0
            firOrd = X.T.dot(Y_hat - Y) / n + self.reg * self._beta
            deltaBeta = self.step * secOrd.dot(firOrd)
            if t >= 100 and np.abs(deltaBeta).sum() < self.tol:
                self._beta -= deltaBeta
#                print "Converged. t = %d" % (t)
                break            
            self._beta -= deltaBeta
            t += 1
        self._beta = np.array(self._beta).flatten()
Ejemplo n.º 2
0
 def oneStep3(self, X, Y):
     n, d = X.shape[0], X.shape[1]
     Y = Y.reshape(-1, 1) 
     v = X.dot(self._beta)
     GEVFunc.clip(self.xi, v)
     W = np.diag(GEVFunc.derivInverseLink(self.xi, v).flatten())
     secOrd = np.linalg.pinv(X.T.dot(W).dot(X) / n + self.reg * np.eye(d))
     Y_hat = GEVFunc.inverseLink(self.xi, v)
     firOrd = X.T.dot(Y_hat - Y) / n + self.reg * self._beta
     self._beta -= self.step * secOrd.dot(firOrd)    
Ejemplo n.º 3
0
 def oneStep(self, X, Y):
     n, d = X.shape[0], X.shape[1]
     Y = Y.reshape(-1, 1) 
     L = self.calculateL(self.xi)
     try:
         secOrd = np.linalg.pinv(X.T.dot(X) * L / n + self.reg * np.eye(d))
     except Exception as e:
         print(e.message)
     v = X.dot(self._beta)
     GEVFunc.clip(self.xi, v)
     Y_hat = GEVFunc.inverseLink(self.xi, v)
     firOrd = X.T.dot(Y_hat - Y) / n + self.reg * self._beta
     self._beta -= self.step * secOrd.dot(firOrd)
Ejemplo n.º 4
0
    def fit3(self, X, Y):
        n, d = X.shape[0], X.shape[1]
        Y = Y.reshape(-1, 1) 
        if not self.manualInitial:
            self.initialize(X, Y)
        t = 0.
        while t < self.iterations:
            v = X.dot(self._beta)
            GEVFunc.clip(self.xi, v)
            W = np.diag(GEVFunc.derivInverseLink(self.xi, v).flatten())
#            secOrd = np.linalg.pinv(X.T.dot(W).dot(X) / n + self.reg * np.eye(d))
            A = X.T.dot(W).dot(X) / n + self.reg * np.eye(d)
            Y_hat = GEVFunc.inverseLink(self.xi, v)
            b = X.T.dot(Y_hat - Y) / n + self.reg * self._beta
            self._beta += np.linalg.lstsq(A, -b)[0]
#            self._beta -= self.step * secOrd.dot(firOrd)    
            t += 1
        self._beta = np.array(self._beta).flatten()
Ejemplo n.º 5
0
 def predict(self, X):
     v = X.dot(self.beta)
     GEVFunc.clip(self.xi, v)
     return GEVFunc.inverseLink(self.xi, v).flatten()
Ejemplo n.º 6
0
 def firstDeriva(self, X, Y, beta):
     v = X.dot(beta)
     GEVFunc.clip(self.xi, v)
     Y_hat = GEVFunc.inverseLink(self.xi, v)
     return X.T.dot(Y_hat - Y) / X.shape[0] + self.reg * beta
Ejemplo n.º 7
0
 def loglikelihood(self, beta, xi):
     v = self.X.dot(beta.reshape(-1, 1))
     GEVFunc.clip(xi, v)
     res = GEVFunc.inverseLink(xi, v)
     res[self.targets == 0] = 1 - res[self.targets == 0]
     return sum([np.log(x + 1e-8) for x in res])