推荐系统之Mahout学习(四)

本文介绍了如何使用Apache Mahout构建推荐系统,重点在于PearsonCorrelationSimilarity的计算。通过创建DataModel,计算用户相似度,然后运用NearestNUserNeighborhood或ThresholdUserNeighborhood选择近邻,最后构建推荐器。Pearson相关性系数用于衡量用户偏好的相似度,其计算涉及协方差和标准差。

Recommender

构建一个最简单的recommender
简单流程为:
①:创建DataModel读取数据源文件(读入DataModel的文件的格式为:用户ID,物品ID,偏好值,时间戳)。
②:相似度计算。
③:如果是UserCF则需要使用选择近邻算法(NearestNUserNeighborhood 参数为(邻居个数,相似度,datamodel),ThresholdUserNeighborhood (用户百分比,相似度,datamodel)),如果不是则不需要这一步。
④:构建推荐器

import org.apache.mahout.cf.taste.impl.model.file.*;
import org.apache.mahout.cf.taste.impl.similarity.*;
import org.apache.mahout.cf.taste.impl.neighborhood.*;
import org.apache.mahout.cf.taste.impl.recommender.*;

import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.similarity.*;
import org.apache.mahout.cf.taste.neighborhood.*;
import org.apache.mahout.cf.taste.recommender.*;

import java.io.File;
import java.util.List;

public class RecommenderIntro {
    private RecommenderIntro(){
    }

    public static void main(String[] args) throws Exception {
        DataModel model = new FileDataModel(new File("/root/data/*.csv"));//数据文件路径
        UserSimilarity similarity = new PearsonCorrelationSimilarity(model);//皮尔森距离,反映两个变量线性相关程度的统计量
        UserNeighborhood neighborhood = new NearestNUserNeighborhood(3,similarity,model);//选择邻近算法。三个参数分别是: 邻居的个数,用户相似度,数据模型    
        Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);使用DataModel,NearestNUserNeighborhood作为近邻算法,PearsonCorrelationSimilarity相似度计算构建一个简单的基于用户的推荐器

        List<RecommendedItem> recommendedItems = recommender.recommend(2, 3);//这个函数中前一个表示对哪一个用户进行推荐,后一个表示推荐几个(为id为2的用户推荐3个)。

        for (RecommendedItem recommendedItem1: recommendedItems){
            System.out.println(recommendedItem1);//输出从相似度从高到低
        }

    }
}

输出结果:
结果

PearsonCorrelationSimilarity的计算:
API计算方法
计算公式:PearsonCorrelationSimilarity是用协方差除以两个变量X,Y的标准差
公式

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值