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)
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()