增加偏置项的svd推荐

本文使用基于偏置项的svd,对评分矩阵进行矩阵分解,实现用户内容推荐的评分计算。如有错误的地方,希望大家指正。

package com.rec.SVDModel;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;

public class SVDBasic {
	
	//用户评分偏置
	private double[] bu;
	//物品评分偏置
	private double[] bi;
	//用户向量
	private double[][] pu;
	//物品向量
	private double[][] qi;
	
	//超参数
	//循环迭代次数
	private int iteration = 100;
	//学习率
	private double learningrate = 0.005;
	//正则系数
	private double coff = 0.02;
	//维度,隐向量的维度,m*k,k*n的k
	private int dimNum = 0;
	//通过构造函数传入超参数
	public SVDBasic(int iter,int dim,double lr,double cf){		
		iteration = iter;
		learningrate = lr;
		coff = cf;
		dimNum = dim;		
	}
	//对变量内存空间进行初始化
	public void init(){
		bu = new double[userNum];
		pu = new double[userNum][dimNum];
		for(int i = 0; i < userNum; i++){
			pu[i] = new double[dimNum];
		}
		bi = new double[itemNum];
		qi = new double[itemNum][dimNum];
		for(int i = 0; i < itemNum; i++){
			qi[i] = new double[dimNum];
		}	
		//对pu和qi赋初值
		for(int i = 0; i < userNum; i++){
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值