基于svd++的java代码实现,实现了评分矩阵分解的参数计算,使用随机梯度下降,计算参数。
参考:
https://www.cnblogs.com/Xnice/p/4522671.html
https://blog.csdn.net/zhongkejingwang/article/details/43083603
推荐系统-技术、评估及高效算法
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SVDPlus {
//定义参数
private double mean;
private double[] bu;
private double[] bi;
private double[][] pu;
private double[][] qi;
private double[][] y;
private int userNum;
private Map<String,Integer> userMap = new HashMap<String, Integer>();
private Map<Integer,String> userIndexMap = new HashMap<Integer,String> ();
private int itemNum;
private Map<String,Integer> itemMap = new HashMap<String, Integer>();
private Map<Integer,String> itemIndexMap = new HashMap<Integer,String> ();
//定义超参数
private double learningrate;
private double lamda1;
private double lamda2;
private int iter;
private int dim;
public SVDPlus(double lr,double coff1,double coff2, int it,int d){
learningrate = lr;
lamda1 = coff1;
lamda2 = coff2;
iter = it;
dim = d;
}
//初始化参数
publi