Mahout初探

article/2025/10/9 22:09:32

mahout官网,执行下面命令,详细安装过程可参考Mahout介绍、安装与应用案例

 tar -xzvf apache-mahout-distribution-0.13.0.tar.gzln -s apache-mahout-distribution-0.13.0 mahout

修改profile环境变量

export MAHOUT_HOME=/home/hadoop/application/mahout
export MAHOUT_CONF_DIR=/home/hadoop/application/mahout/conf
export PATH=$PATH:$MAHOUT_HOME/bin

mahout下载测试数据,进行验证

mkdir -p /home/hadoop/download
cd /home/hadoop/download
wget http://labfile.oss.aliyuncs.com/courses/237/synthetic_control.data
mkdir -p /home/hadoop/application/mahout/testdata
cp synthetic_control.data /home/hadoop/application/mahout/testdata/
hadoop fs -mkdir ./testdata
hadoop fs -put /home/hadoop/application/mahout/testdata/synthetic_control.data ./testdata
mahout org.apache.mahout.clustering.syntheticcontrol.kmeans.Job
hadoop fs -ls ./output # 查看输出
mahout vectordump -i ./output/data/part-m-00000 # 查看数据内容

1、第一个推荐程序
这个程序来自《Mahout in Action Mahout 实战》,Sean Owen Robin Anil著的

import java.io.File;
import java.util.List;import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood;
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.recommender.Recommender;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;public class RecommenderIntro {public static void main(String[] args) throws Exception {// 数据模型DataModel dataModel = new FileDataModel(new File("F:/mawork/demo1/src/main/java/com/bwjf/mahout/demo1/one/intro"));// 皮尔逊相关系数——相似度模型UserSimilarity similarity = new PearsonCorrelationSimilarity(dataModel);// 临近算法——用户领域模型UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, dataModel);// 推荐引擎Recommender recommender = new GenericUserBasedRecommender(dataModel, neighborhood, similarity);List<RecommendedItem> recommendedItems =  recommender.recommend(1, 1);for (RecommendedItem recommendedItem: recommendedItems){System.out.println(recommendedItem);}}
}

数据为

1,101,5.0
1,102,3.0
1,103,2.5
2,101,2.0
2,102,2.5
2,103,5.0
2,104,2.0
3,101,2.5
3,104,4.0
3,105,4.5
3,107,5.0
4,101,5.0
4,103,3.0
4,104,4.5
4,106,4.0
5,101,4.0
5,102,3.0
5,103,2.0
5,104,4.0
5,105,3.5
5,106,4.0

Mahout中相似度计算方法介绍,上例用的是皮尔森相关度算法,
1.1 PearsonCorrelationSimilarity 皮尔斯相关系数
如何理解皮尔逊相关系数(Pearson Correlation Coefficient)?,两个变量之间的相关系数越高,从一个变量预测另一个变量的精确度也就越高。因为相关系数越高,变量之间的共变部分越多,基于皮尔森相关系数的协同过滤算法,这篇文章解释的更为详细,做笔记给自己脑补。
X、Y做线性相关假设,就有三种情况,无关系、正相关、负相关
org.apache.mahout.cf.taste.impl.similarity.AbstractSimilarityuserSimilarity方法使用的是红色方框中的内容
5
1.2 GenericUserBasedRecommender
参考GenericUserBasedRecommender推荐引擎源码分析
Mahout的taste推荐系统里的几种Recommender分析
【Machine Learning】Mahout基于协同过滤(CF)的用户推荐
Mahout推荐算法编程实践
数学公式忘的差不多了,但是试想想如果你进入一个网站,你不知道你想要什么,但是你会希望别人怎么推荐给你商品呢?
首先你告诉店主,你找几个跟我爱好类似的人吧。问题在于那些人与我的相似程度比较高呢?这里用到了皮尔逊相似系数算法,相关性系数越高,就属于同类爱好的人。
接着说不定他们喜欢的,我也喜欢。这里就用到了临近算法,根据相似度的高低,找到K个与自己相似的邻居。
然后你再告诉店主,和有类似爱好的人哪些商品的偏好值是多少,把最喜欢的推荐给我,说不定我也喜欢。
1.3 协方差与相关系数
如何通俗易懂地解释「协方差」与「相关系数」的概念
这篇文档我觉得写得非常清晰。
1.4 NearestNUserNeighborhood
这个紧邻代码也相对比较简单,主要采取优先队列,对皮尔逊相关系数进行排序,选出你觉得推荐的top N.
Java堆结构PriorityQueue完全解析

public static long[] getTopUsers(int howMany,LongPrimitiveIterator allUserIDs,IDRescorer rescorer,Estimator<Long> estimator) throws TasteException {Queue<SimilarUser> topUsers = new PriorityQueue<>(howMany + 1, Collections.reverseOrder());boolean full = false;double lowestTopValue = Double.NEGATIVE_INFINITY;while (allUserIDs.hasNext()) {long userID = allUserIDs.next();if (rescorer != null && rescorer.isFiltered(userID)) {continue;}double similarity;try {similarity = estimator.estimate(userID);} catch (NoSuchUserException nsue) {continue;}double rescoredSimilarity = rescorer == null ? similarity : rescorer.rescore(userID, similarity);if (!Double.isNaN(rescoredSimilarity) && (!full || rescoredSimilarity > lowestTopValue)) {topUsers.add(new SimilarUser(userID, rescoredSimilarity));if (full) {topUsers.poll();} else if (topUsers.size() > howMany) {full = true;topUsers.poll();}lowestTopValue = topUsers.peek().getSimilarity();}}int size = topUsers.size();if (size == 0) {return NO_IDS;}List<SimilarUser> sorted = new ArrayList<>(size);sorted.addAll(topUsers);Collections.sort(sorted);long[] result = new long[size];int i = 0;for (SimilarUser similarUser : sorted) {result[i++] = similarUser.getUserID();}return result;}

2 RecommenderEvaluator
mahout 返回主页 WEB系统架构与底层研发,我这篇文章对代码进行了分析,我就不再赘述,《MaHout实战》中返回结构是1.0,我的确实NaN,后来调整参数double score = evalutor.evaluate(builder, null, dataModel, 0.9, 1.0);,终于出现数据1.0了。
2.1 查准率和查全率

         相关 不相关
检索到     A    C
未检索到   B    D
查全率=A/(A+B)
查准率=A=(A+C)

GenericRecommenderIRStatsEvaluator定义评价好坏的阈值=μ(平均值)+σ(标准差)


http://chatgpt.dhexx.cn/article/Zu5iT1Zp.shtml

相关文章

mahout java api_Mahout推荐算法API详解

前言 用Mahout来构建推荐系统&#xff0c;是一件既简单又困难的事情。简单是因为Mahout完整地封装了“协同过滤”算法&#xff0c;并实现了并行化&#xff0c;提供非常简单的API接口&#xff1b;困难是因为我们不了解算法细节&#xff0c;很难去根据业务的场景进行算法配置和调…

mahout LDA

什么是Mahout&#xff1f; ” Apache Mahout™ project’s goal is to build a scalable machine learning library ” 我来拓展一下&#xff1a;(1) Mahout 是Apache旗下的开源项目&#xff0c;集成了大量的机器学习算法。(2) 大部分算法&#xff0c;可以运行在Hadoop上&…

Mahout

1、Mahout是什么 Mahout是一个算法库,集成了很多算法。Apache Mahout 是 Apache Software Foundation&#xff08;ASF&#xff09;旗下的一个开源项目&#xff0c;提供一些可扩展的机器学习领域经典算法的实现&#xff0c;旨在帮助开发人员更加方便快捷地创建智能应用程序。Ma…

mahout 详解

前言 用Mahout来构建推荐系统&#xff0c;是一件既简单又困难的事情。简单是因为Mahout完整地封装了“协同过滤”算法&#xff0c;并实现了并行化&#xff0c;提供非常简单的API接口&#xff1b;困难是因为我们不了解算法细节&#xff0c;很难去根据业务的场景进行算法配置和调…

基于Mahout实现协同过滤推荐算法的电影推荐系统

1 Mahout介绍 Apache Mahout 是 Apache Software Foundation&#xff08;ASF&#xff09; 旗下的一个开源项目&#xff0c;提供一些可扩展的机器学习领域经典算法的实现&#xff0c;旨在帮助开发人员更加方便快捷地创建智能应用程序。经典算法包括聚类、分类、协同过滤、进化编…

Mahout简介

Mahout简介 一、mahout是什么 Apache Mahout是ApacheSoftware Foundation &#xff08;ASF&#xff09;旗下的一个开源项目&#xff0c;提供了一些经典的机器学习的算法&#xff0c;皆在帮助开发人员更加方便快捷地创建智能应用程序。目前已经有了三个公共发型版本&#xff0…

推荐系统 Mahout入门之简单使用

Mahout&#xff1a; Apache Mahout 是 Apache Software Foundation&#xff08;ASF&#xff09;旗下的一个开源项目&#xff0c;提供一些可扩展的机器学习领域经典算法的实现&#xff0c;旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout项目目前已经有了多个公共发行…

Mahout介绍和简单应用

Mahout学习&#xff08;主要学习内容是Mahout中推荐部分的ItemCF、UserCF、Hadoop集群部署运行&#xff09; 1.Mahout是什么&#xff1f; Mahout是一个算法库,集成了很多算法。 Apache Mahout 是 Apache Software Foundation&#xff08;ASF&#xff09;旗下的一个开源项目&…

脚手架开发流程

先把原理讲通&#xff0c;方便后续的开发。 后续都拿vue-cli举例 脚手架实现原理 为什么全局安装vue/cli后会添加的命令为vue&#xff1f;全局安装vue/cli时发生了什么&#xff1f;执行vue命令时发生了什么&#xff1f;为什么vue指向一个js文件&#xff0c;我们却可以直接通过…

ns2模拟仿真实验

内容&#xff1a; 编写TCL脚本&#xff0c;搭建如下图所示的一个网络&#xff0c;共6个节点&#xff0c;其中2、3节点用做ftp服务器和客户端&#xff0c;4、5节点用做cbr流量的源和目的&#xff0c;而0、1节点用做转发设备。各节点间的链路属性见图。 模拟时间设为13秒钟&#…

NS2网络仿真环境的搭建和使用

一实验概述: 1学会安装和使用NS2&#xff1b;熟悉NS2的文档结构&#xff1b;掌握NS2的仿真环境、使用界面和操作方法。 2学会安装NS2仿真环境和配置。 3了解NS2的工作原理和程序组成。 4熟悉NS2中的脚本语言Tcl和Otcl 5学习分裂对象模型和TclCL 6NS的时间调度机制学习。 …

NS2的NODE类——node

本文转自&#xff1a;http://hi.baidu.com/wirelesscat/blog/item/67c6db4633f71e016b63e59b.html 同时推荐一个很好的博客&#xff0c;这里有连载的 ns2 仿真问题&#xff0c;感谢大牛&#xff5e;&#xff5e;&#xff5e; 博客地址&#xff1a;http://hi.baidu.com/wirele…

NS2问题解决

问题一&#xff1a; When configured, ns found the right version of tclsh in /usr/bin/tclsh8.6 but it doesnt seem to be there anymore, so ns will fall back on running the first tclsh in your path. The wrong version of tclsh may break the test suites. Reconfi…

NS2简单介绍

NS是一种针对网络技术的源代码公开的、免费的软件模拟平台&#xff0c;研究人员使用它可以很容易的进行网络技术的开发&#xff0c;而且发展到今天&#xff0c;它所包含的模块已经非常丰富&#xff0c;几乎涉及到了网络技术的所有方面。所以&#xff0c;NS成了目前学术界广泛使…

NS2网络仿真

NS2安装与配置TCP/UDP比较仿真静态/动态路由仿真 1.安装与配置 1.1更新系统 sudo apt-get update #更新源列表 sudo apt-get upgrade #更新已经安装的包 sudo apt-get dist-upgrade #更新软件&#xff0c;升级系统 1.2安装ns2需要的几个包 sudo apt-get install build-ess…

ns2安装详细过程与网络仿真

ns2安装详细过程与网络仿真 博客分类&#xff1a; Networks TclLinuxUnixGCCVC 简单的说&#xff0c;NS&#xff0d;2是一个网络模拟器&#xff0c;所以经常被用到网络课的教学中。 NS-2是OpenSource的&#xff0c;最早的版本是在linux/unix下运行的&#xff0c;后来有了wi…

NS2教程

柯老师的NS2新网址 Due to some reasons, my NS2 website is sometimes donw and unavailable for many users. Therefore, I provide another backup website. 1. NS2 http://csie.nqu.edu.tw/smallko/ns2/ns2.htm 2. old_NS2 (backup of NS2 Learning Guide) http://csie.n…

ns2安装和若干问题的解决方法

文章目录 1. 安装与配置2. 安装nam3. 配置环境变量4. 检查是否能够成功运行参考资料 在安装ns2的过程中遇到了很多问题&#xff0c;为了记录这些问题和为同样遇到这些问题的朋友提供思路&#xff0c;写下这篇博文。 安装ns2和nam主要分为如下几个步骤&#xff1a; 安装与配置…

Linux下安装ns2

最近为了项目需要用到NS2软件用于网络仿真实验&#xff0c;从Windows到Linux折腾了我将近一周的时间。在Windows装了卸、卸了装十几遍还是不成功&#xff0c;最后放弃了&#xff0c;回到了Linux系统&#xff0c;又折腾了两天终于安装测试成功&#xff01;&#xff08;安装其实蛮…

企业微信第三方扫码登录

为什么写这个文章 公司后台突然需要扫码登录&#xff0c;网上的企业微信扫码都是基于自建应用的扫码登录&#xff0c;对第三方的扫码并没有多加介绍 概述 企业微信的管理员和成员&#xff0c;可通过单点登录机制&#xff0c;登录到第三方网站。第三方可通过接口&#xff0c;…