基于MLlib的机器学习--协同过滤与推荐

《Spark快速大数据分析》
11.5.4 协同过滤与推荐
协同过滤是一种根据用户对各种产品的交互与评分来推荐新产品的推荐系统技术。
协同过滤引入的地方就在于它只需要输入一系列用户/产品的交互记录;
无论是显式的交互(例如在购物网站上进行评分)还是隐式的(例如用户访问了一个
产品的页面但是没有对产品评分)交互皆可。仅仅根据这些交互,协同过滤算法就能
够知道哪些产品之间比较相似(因为相同的用户与它们发生了交互)以及哪些用户之间
比较相似,然后就可以做出新的推荐。
尽管MLlib的API使用了用户和产品概念,但是也可以将协同过滤用于其他应用场景中,
比如在社交网络中推荐用户,为文章推荐要添加的标签,为电台推荐歌曲等。
交替最小二乘法
MLlib中包含交替最小二乘法(ALS)的一个实现,这是一个协同过滤的常用算法,可以很好的
扩展到集群上。它位于mllib.recommendation.ALS类中。
ALS会为每个用户和产品都设一个特征向量,这样用户向量与产品向量的点积就接近于它们的
得分。它接收下面所列几个参数:
rank
使用的特征向量的大小,更大的特征向量会产生更好的模型,但是也需要话费更大的计算代价,默认10
iterations
要执行的迭代次数,默认10
lamda
正则化参数,默认0.01
alpha
用来在ALS中计算置信度的常量,默认1.0
numUserBlocks,  numProductBlocks
切分用户和产品数据的块的数目,用来控制并行度,可以选择传递-1来上MLlib自动决定.
要使用ALS算法,需要有一个由mllib.recommendation.Rating对象组成的RDD,其中每个包含
一个用户id,一个产品id和一个评分。实现过程中的一个挑战是每个id都需要是一个32位的整数值。
如果id是字符串或者更大的数字,那么可以直接在ALS中使用id的哈希值,
即使有两个用户或者产品映射到同一个Id上,总体结果依然会不错。还有一种办法是broadcast()一张
从产品id到正兴致的表,来付给每个产品独特的id。
ALS返回一个MatrixFactorizationModel对象来表示结果,可以调用predict()来对一个由(UserId,productId)对
组成的RDD进行预测评分。也可以对使用model.recommendProducts(userId,numProducts)来为一个
给定用户找到最值得推荐的前numProduct个产品。注意,和MLlib中的其他模型不同,MatrixFactorizationModel
对象很大,为每个用户和产品都存储了一个向量。这样我们就不能把它存储到磁盘上,然后在另一个程序中
读取回来。不过,可以把模型中生成的特征向量RDD,也就是model.userFeatures和
model.productFeatures保存到分布式文件系统上。
最后,ALS有两个变种:显示评分(默认情况)和隐式反馈(通过调用ALS.trainImplicit()而非ALS.train()来打开)。
用于显式评分时,每个用户对于一个产品的评分需要是一个得分(例如1到5星),而预测出来的评分也是得分。
而用于隐式反馈时,每个评分代表的是用户会和给定产品发送交互的置信度(比如随着用户访问一个网页次数
的增加,平跟也会提高),预测出来的也是置信度。

转载于:https://www.cnblogs.com/ihongyan/p/5017965.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431063.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python中什么是数据驱动_Python数据驱动DDT的应用

原标题:Python数据驱动DDT的应用 在开始之前,我们先来明确一下什么是数据驱动,在百度百科中数据驱动的解释是:数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试&#xff…

2008日志清理 server sql_SQL Server 2008 收缩日志 清空删除大日志文件

由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消:(SQL2005)BackupLog DNName with no_loggodumptransaction DNName with no_loggoUSE DNNameDBCC SHRINKFILE (2)Go-----------------------------------…

邻结矩阵的建立和 BFS,DFS;;

邻结矩阵比较简单,, 它的BFS,DFS, 两种遍历也比较简单,一个用队列, 一个用数组即可!!!但是邻接矩阵极其浪费空间,尤其是当它是一个稀疏矩阵的时候!!&#xff…

matlab cuda的.cu文件应该放在那里_无人机基于Matlab/Simulink的模型开发(连载一)

“一切可以被控制的对象,都需要被数学量化”这是笔者从事多年研发工作得出的道理,无论是车辆控制,机器人控制,飞机控制,还是无人机控制,所有和机械运动相关的控制,如果不能被很好的数学量化&…

java ask to_Java native和ASCII 互转工具Native2AsciiUtils.java下载

/** Copyright 2012-2013 The Haohui Network Corporation*/package com.haohui.common.utils;/*** Java Native和Ascii转换代码** project common-utils* author cevencheng * create 2012-11-7 下午4:16:57*/public class Native2AsciiUtils {/*** prefix of ascii string of…

go java性能_服务端I/O性能大比拼:Node、PHP、Java和Go

理解应用程序的输入/输出(I/O)模型,意味着其在计划处理负载与残酷的实际使用场景之间的差异。若应用程序比较小,也没有服务于很高的负载,也许它影响甚微。但随着应用程序的负载逐渐上涨,采用错误的I/O模型有可能会让你到处踩坑&am…

python爬取数据步骤_Python爬虫爬取数据的步骤

爬虫: 网络爬虫是捜索引擎抓取系统(Baidu、Google等)的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。 步骤: 第一步:获取网页链接 1.观察需要爬取的多网页的变化规律…

Android开发日记(六)

textViewUserName.setCursorVisible(false);//隐藏光标 textViewUserName.setFocusable(false);//失去焦点 textViewUserName.setFocusableInTouchMode(false);//虚拟键盘隐藏 if(!userLocalName.equalsIgnoreCase("null")&&!userLocalEmail.equalsIgnoreCa…

python数据库安装_python数据库-MySQL安装问题总结(48)

一、ERROR 1698(28000):Access denied for user rootlocalhost错误 我的操作系统是ubuntu:我的MySQL版本是:安装完成后,登录mysql的时候就出现了如下错误:因为安装的过程中没让设置密码,可能密码为空,但无论…

java io 文件路径_如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径...

如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径我有一个包含2个包的项目:ListStopWords.txtListStopWords.txt在包(2)中我有一个文本文件ListStopWords.txt,在包(1)中我有一个类FileLoadder.这是代码FileLoader&#xff…

[转]什么是RSS

http://www.blogbus.com/bangzhuzhongxin-logs/5452786.html 如果您够仔细的话,一定会发现BlogBus的每一个Blog站上都会有一个 图标。这个图标表示Blogbus支持RSS功能(目前是RSS 2.0),即所谓的新闻聚合功能。 点击 图标&#xf…

京东的商品搜索功能是如何实现的_如何精准查询京东商品销量?分享一个京东运营小妙招...

京东平台和其他平台商品信息展示不一样,在京东平台商品的销售额无论是累计的还是当月的数据都没有展示,即便是通过商家后台的京东商智也是只能看到销售额的指数,这就给京东商家做竞品分析时设置了障碍,无法获取到竞品的真实销售额…

java zip解压进度条_java读取文件显示进度条的实现方法

实现这个功能比较简单,用到的类有两个:progressmonitorinputstream(主要是整个类) 和 progressmonitor ,它们在javax.swing中大体思路,你要首先知道整个文件的大小,和当前已经读取文件的大小,获得整个文件大…

ubuntu下软件中心闪退问题解决

前段时间不知道做了什么导致,ubuntu下的软件中心进不去。没事点开后就立马闪退出去。 然后重新安装软件中心解决了 重装命令: sudo apt-get install --reinstall software-center software-center-aptdaemon-plugins 当然也可以选择用其他包管理器&#…

python 可视化监控平台_python可视化篇之流式数据监控的实现

preface 流式数据的监控,以下主要是从算法的呈现出发,提供一种python的实现思路 其中: 1.python是2.X版本 2.提供两种实现思路,一是基于matplotlib的animation,一是基于matplotlib的ion 话不多说,先了解大概…

java 不执行构造函数_函数作为构造函数执行,但不作为函数执行

我在displayandmove.as文件中有以下代码:package {import flash.display.MovieClip;public class FigureConstruct extends MovieClip {public function displayandmove() {this.height stage.stageHeight/5;this.width stage.stageWidth/5;}}}我在displayandmove…

codeforce 606A - Magic Spheres

题意&#xff1a;a,b,c三种球&#xff0c;能把俩个一样的球变成另一颜色不一样的球。给你目标x,y,z&#xff0c;问能否经过变化至少达打目标。 1 #include<iostream>2 #include<stdio.h>3 #include<stdlib.h>4 #include<memory.h>5 #include<string…

cmd cd 无法切换目录_一分钟掌握cmd基础操作,告别鼠标

cmd基础操作cmdcmd是command的缩写&#xff0c;一直伴随着windows操作系统。有时称为&#xff1a;控制台窗口&#xff0c;cmd窗口&#xff0c;黑窗口&#xff0c;命令行窗口等。其实&#xff0c;在unix系统&#xff0c;Linux&#xff0c;MacOS等几乎所有的操作系统中&#xff0…

jsp java代码_jsp内的java代码不执行,急啊!!大家来看看!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼我的jsp页面上的java代码和html代码是穿插的&#xff0c;用System.out.println去跟踪的时候&#xff0c;内的代码都不执行&#xff0c;html都是执行的&#xff01;怎么回事啊&#xff1f;没有报错&#xff0c;没有任何”错误“的迹…

css 背景图怎么设置自动填充满_CSS属性设置 -- 背景样式

Ⅰ background-color: -- 设置标签的背景颜色rgba(0,0,0,0.65); -- (红,緑,蓝三原色,透明度)只能给背景设置透明度opacity: 0.65; -- 改变整个标签的透明度<style>Ⅱ background-image: --设置标签的背景图片url("图片网址"); -- 如果图片的大小没有标签大&…