Example #1
0
def main():
    X1_train, X2_train, Y_train, X1_test, X2_test, Y_test = davis_data.settingB_split()
    learner = KronRLS(X1 = X1_train, X2 = X2_train, Y = Y_train)
    log_regparams = range(15, 35)
    for log_regparam in log_regparams:
        learner.solve(2.**log_regparam)
        P = learner.predict(X1_test, X2_test)
        perf = cindex(Y_test, P)
        print("regparam 2**%d, cindex %f" %(log_regparam, perf))
Example #2
0
def main():
    X1_train, X2_train, Y_train, X1_test, X2_test, Y_test = davis_data.setting2_split()
    learner = KronRLS(X1 = X1_train, X2 = X2_train, Y = Y_train)
    log_regparams = range(15, 35)
    for log_regparam in log_regparams:
        learner.solve(2.**log_regparam)
        P = learner.predict(X1_test, X2_test)
        perf = cindex(Y_test, P)
        print("regparam 2**%d, cindex %f" %(log_regparam, perf))
Example #3
0
def main():
    X1, X2, Y = davis_data.load_davis()
    Y = Y.ravel(order='F')
    learner = KronRLS(X1 = X1, X2 = X2, Y = Y)
    log_regparams = range(15, 35)
    for log_regparam in log_regparams:
        learner.solve(2.**log_regparam)
        P = learner.in_sample_loo()
        perf = cindex(Y, P)
        print("regparam 2**%d, cindex %f" %(log_regparam, perf))
Example #4
0
    def fit(self, Y, user_features, item_features, reg):

        self.Y = np.array(Y.toarray(), dtype=float)

        self.m, self.n = Y.shape
        self.Y = self.Y.ravel(order='F')

        self.user_features = user_features
        self.item_features = item_features

        X_users = np.array(user_features.toarray(), dtype=float)
        X_items = np.array(item_features.toarray(), dtype=float)

        self.learner = KronRLS(X1=X_users, X2=X_items, Y=self.Y, regparam=reg)
Example #5
0
def main():
    X1_train, X2_train, Y_train, X1_test, X2_test, Y_test = davis_data.settingD_split()
    kernel1 = GaussianKernel(X1_train, gamma=0.01)
    kernel2 = GaussianKernel(X2_train, gamma=10**-9)
    K1_train = kernel1.getKM(X1_train)
    K1_test = kernel1.getKM(X1_test)
    K2_train = kernel2.getKM(X2_train)
    K2_test = kernel2.getKM(X2_test)
    learner = KronRLS(K1 = K1_train, K2 = K2_train, Y = Y_train)
    log_regparams = range(-15, 15)
    for log_regparam in log_regparams:
        learner.solve(2.**log_regparam)
        P = learner.predict(K1_test, K2_test)
        perf = cindex(Y_test, P)
        print("regparam 2**%d, cindex %f" %(log_regparam, perf))
Example #6
0
def main():
    X1_train, X2_train, Y_train, X1_test, X2_test, Y_test = davis_data.setting4_split()
    kernel1 = GaussianKernel(X1_train, gamma=0.01)
    kernel2 = GaussianKernel(X2_train, gamma=10**-9)
    K1_train = kernel1.getKM(X1_train)
    K1_test = kernel1.getKM(X1_test)
    K2_train = kernel2.getKM(X2_train)
    K2_test = kernel2.getKM(X2_test)
    learner = KronRLS(K1 = K1_train, K2 = K2_train, Y = Y_train, regparam=2**-5)
    predictor = learner.predictor
    P = predictor.predict(K1_test, K2_test)
    print("Number of predictions: %d" %P.shape)
    print("three first predictions: " +str(P[:3]))
    x1_ind = [0,1,2]
    x2_ind = [0,0,0]
    P2 = predictor.predict(K1_test, K2_test, x1_ind, x2_ind)
    print("three first predictions again: " +str(P2))
    print("Number of coefficients %d" %predictor.A.shape)
Example #7
0
    Y = np.random.randn(size**2)
    return X1, X2, Y

if __name__=="__main__":
    #trains Kronecker RLS for different sample sizes
    #comparing CPU time and verifying that the learned
    #dual coefficients are same for both methods
    regparam = 1.0
    for size in [10, 20, 40, 60, 80, 100, 500, 1000, 2000, 4000, 6000]:
        X1, X2, y = random_data(size, 100)
        kernel1 = GaussianKernel(X1, gamma=0.01)
        K1 = kernel1.getKM(X1)
        kernel2 = GaussianKernel(X2, gamma=0.01)
        K2 = kernel2.getKM(X2)
        start = time.clock()
        rls = KronRLS(K1=K1, K2=K2, Y=y, regparam=regparam)
        dur = time.clock() - start
        print("RLScore pairs: %d, CPU time: %f" %(size**2, dur))
        #forming full Kronecker product kernel matrix becomes fast
        #unfeasible
        if size <=100:
            K = np.kron(K2, K1)
            start = time.clock()
            ridge = KernelRidge(alpha=regparam, kernel="precomputed")
            ridge.fit(K, y)
            dur = time.clock() - start
            print("sklearn pairs: %d, CPU time: %f" %(size**2, dur))
            sklearn_coef = ridge.dual_coef_
            core_coef = rls.predictor.A.reshape(K1.shape[0], K2.shape[0]).T.ravel()
            print("Are the coefficients same: %r" %np.allclose(sklearn_coef, core_coef))
        else:
Example #8
0
class QuestionsXTags():
    def fit(self, Y, user_features, item_features, reg):

        self.Y = np.array(Y.toarray(), dtype=float)

        self.m, self.n = Y.shape
        self.Y = self.Y.ravel(order='F')

        self.user_features = user_features
        self.item_features = item_features

        X_users = np.array(user_features.toarray(), dtype=float)
        X_items = np.array(item_features.toarray(), dtype=float)

        self.learner = KronRLS(X1=X_users, X2=X_items, Y=self.Y, regparam=reg)

    def predict(self, row):
        x = self.user_features.getrow(row)
        W = self.learner.predictor.W
        X = sp.kron(self.item_features, x)
        predictions = X.dot(W)
        return (predictions)

    def predict_online(self, x):
        #x = x.reshape(1,-1)
        W = self.learner.predictor.W
        X = sp.kron(self.item_features, x)
        predictions = X.dot(W)
        return (predictions)

    def predict1(self):
        m, n = self.m, self.n
        X_users = np.array(self.user_features.toarray(), dtype=float)
        X_items = np.array(self.item_features.toarray(), dtype=float)
        predictions = self.learner.predict(X_users, X_items).reshape((m, n),
                                                                     order='F')
        return (predictions)

    def predict2(self, item_features):
        m, n = self.m, self.n
        t, k = item_features.shape
        X_users = np.array(self.user_features.toarray(), dtype=float)
        predictions = self.learner.predict(X_users, item_features).reshape(
            (m, t), order='F')
        return (predictions)

    def predict3(self, user_features):
        m, n = self.m, self.n
        t, k = user_features.shape
        X_items = np.array(self.item_features.toarray(), dtype=float)
        predictions = self.learner.predict(user_features, X_items).reshape(
            (t, n), order='F')
        return (predictions)

    def predict4(self, user_features, item_features):
        t, k = user_features.shape
        s, k = item_features.shape
        predictions = self.learner.predict(user_features,
                                           item_features).reshape((t, s),
                                                                  order='F')
        return (predictions)