JAVA实现用户协同算法计算用户喜爱相似度

原创文章,转载请注明出处https://blog.csdn.net/FRYAN28/article/details/90474141

基于用户的协同过滤算法是指通过分析用户对商品的行为,计算出兴趣相似的用户,并向被推荐用户推荐其兴趣相同的用户感兴趣的商品。

土话说大概就是,我跟你看的东西,基本上一样,那就可以判定我们有相似的喜好,那么我浏览的其他的东西,就可以推荐给你

我记录用户的浏览行为,并将用户对于每个商品的浏览行为的评分赋值为1.0。浏览1次为1分,多次浏览分值能够累加,通过皮尔逊公式计算用户喜爱相似度

在这里插入图片描述

这里贴上核心方法源码

/**
 * @Author Swallow
 * @Date 2019/4/21
 **/
public List<GoodsInfo> CFUserUtil(String Id){
        //存放所有用户数据
        Map<String, Map<String, Double>> allUsers = new HashMap<String, Map<String, Double>>();
        //查询所有的数据
        List<User> users = userDao.queryAllUser();
        List<GoodsInfo> goodsInfos = myGoodsDao.queryAll();
        //遍历每个用户,定义值
        for (User user : users) {
        /**
	 * 通过sql语句查询获取用户浏览记录,以及对应的浏览次数
	 */
            List<GoodsValue> goodsValues = browseDao.queryGoodsValue(user.getPhoneId());
            logger.info("goodsValues"+goodsValues.toString());
            if (goodsValues.size()>0){//有浏览记录的用户进行相似度计算
                Map<String, Double> u = new HashMap<String, Double>();//存放商品ID 评分值
                for (GoodsInfo goodsInfo:goodsInfos) {
                    String GId = String.valueOf(goodsInfo.getId());//商品列表中的商品ID
                    for (GoodsValue value:goodsValues){
                        String browseGId = String.valueOf(value.getGoodsId());//浏览记录中的商品ID
                        if (browseGId.equals(GId)){
                        
  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值