コード例 #1
0
ファイル: LLORMA.java プロジェクト: crescendoCat/librec
  // global svd P Q
  private void buildGlobalModel() throws Exception {
    for (int iter = 1; iter <= numIters; iter++) {
      for (MatrixEntry me : trainMatrix) {

        int u = me.row(); // user
        int i = me.column(); // item
        double rui = me.get();

        double pui = DenseMatrix.rowMult(P, u, Q, i);
        double eui = rui - pui;
        // update factors
        for (int f = 0; f < numFactors; f++) {
          double puf = P.get(u, f), qif = Q.get(i, f);

          P.add(u, f, lRate * (eui * qif - regU * puf));
          Q.add(i, f, lRate * (eui * puf - regI * qif));
        }
      }
    } // end of training
  }
コード例 #2
0
ファイル: BPMF.java プロジェクト: alonsa/librec
 @Override
 protected double predict(int u, int j) {
   return globalMean + DenseMatrix.rowMult(P, u, Q, j);
 }