def hotStartTrainRMSE(model_1,model_2,K, L, X1, X2, train_I, train_J, train_Y, train_op): M = X1.shape[0] N = X2.shape[0] op1 = train_op['op1'] op2 = train_op['op2'] if model_1 == 'SCOAL': model = op1['model'] predictions = predict_scoal(train_I, train_J, train_Y, M, N, model) if model_1 == 'MF': model = op1['model'] predictions = mf_predict(train_I,train_J,M,N,model) if model_2 == 'SCOAL': model = op2['model'] predictions += predict_scoal(train_I, train_J, train_Y, M, N, model) if model_2 == 'MF': model = op2['model'] predictions += mf_predict(train_I,train_J,M,N,model) Z = sp.csr_matrix((train_Y, (train_I,train_J)), shape=(M,N)) nonzero_Z = np.array(Z[(train_I,train_J)]).ravel() hotStartTrainRMSE = np.sqrt(np.mean((predictions.flatten()-nonzero_Z)**2)) return hotStartTrainRMSE
def train_scoal(K, L, X1, X2, train_I, train_J, train_Y, reg,residue): # Train SCOAL learner = 'ridge' scoal_op = run_scoal(K, L, X1, X2, train_I, train_J, residue, learner, reg) # Predict using SCOAL M = X1.shape[0] N = X2.shape[0] model = scoal_op['model'] predictions = predict_scoal(train_I, train_J, residue, M, N, model) # Calculate residue residue = train_Y - predictions return scoal_op, residue