Exemplo n.º 1
0
  // 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
  }
Exemplo n.º 2
0
 @Override
 protected double predict(int u, int j) {
   return globalMean + DenseMatrix.rowMult(P, u, Q, j);
 }