-
常用禁止缓存的四种方法
2011-10-10 17:13:55以下是常用禁止缓存的四种方法: 1、客户端缓存要在head中加入类似如下内容: 或 2、在服务器的动态网页中禁止缓存,要加入类似如下脚本: 3、设置有限时间的缓存: 建议:jsp cache最好做在... -
Flask框架的学习——08—(数据库过滤条件、外键及其四种约束、表关系、反向查询模型属性)
2020-12-21 06:22:17过滤是数据提取的一个很重要的功能,以下对一些常用的过滤条件进行解释,并且这些过滤条件都是只能通过filter方法实现的。 equals not equals like in not in is null is not null and or # -*- encoding: utf-8 -*-... -
四种推荐系统原理介绍(基于内容过滤/协同过滤/关联规则/序列模式)
2017-01-11 11:25:44在推荐系统中常用的技术可大致分为四类:基于内容的过滤、协同过滤、基于规则的方法和混合方法。 一、基于内容过滤 基于内容过滤推荐系统思路如下: (1)通过在抓取每个商品的一系列特征来构建商品档案; ...在推荐系统中常用的技术可大致分为四类:基于内容的过滤、协同过滤、基于规则的方法和混合方法。
一、基于内容过滤
基于内容过滤推荐系统思路如下:
(1)通过在抓取每个商品的一系列特征来构建商品档案;
(2)通过用户购买的商品特征来构建基于内容的用户档案;
(3)通过特定的相似度方程计算用户档案和商品档案的相似度;
(4)推荐相似度最高的n个商品。所以,这种推荐基于与已购买商品的相似度来进行推荐。
最初,这种系统用于文档推荐如网络新闻, 网页以及书籍。 用户档案和商品档案都以使用信息提取技术或信息过滤技术提取出的关键词集合来表示。鉴于两个档案都以权重向量的形式表示,则相似度分数则可以使用如余弦近似度方程或皮尔森相关系数等启发式方程来计算得到。其它的技术如分类模型,构建一个统计方法或者数据挖掘方法,来判断文档内容和用户是否相关。
基于内容过滤局限:
(1)不容易找到足够数量的特征来构建档案(特征缺少问题);
(2) 推荐内容局限于目标用户已购买商品(超特化问题);
(3) 还未有购买记录的新用户或偏好特殊的用户不能得到合适的推荐(新用户、特殊用户问题) 。
二、协同过滤
协同过滤推荐系统思路如下:
(1)从每个用户对商品的评级信息中构建用户档案;
(2)使用如余弦相似度、皮尔森相关系数或距离函数来识别和目标用户具有相似意向的用户,他们对商品有相似的评级;
(3)对来自具有相似意向用户的偏好评级取均值、加权和或调整后的加权和,推荐n个商品。
所以,这种方法基于用户之间的相似性来进行推荐。这种评级预测的方法称为基于记忆的方法。其它的评级预测方法为基于模型的方法,这种方法从大量的评级数据上建立概率模型和机器学习模型来预测商品的评级。基于协同过滤的推荐系统目前有很多优化改进,包括推荐新闻的Tapestry算法,网络新闻的GroupLens算法,针对音乐的Ringo算法。
协同过滤推荐的局限如下:
(1)对于还未给商品评级的用户无法进行商品推进(新用户问题);
(2)对未被评过的商品进行推荐也有难度(新商品问题);
(3)评级信息缺乏时推荐效果较差(稀疏问题)。
三、基于规则的方法
还有计算简单且流行的推荐方法为基于规则的方法。使用数据挖掘技术从大量的过往交易数据中获取规则。它可以是会同时被购买的商品之间的关联规则,也可以是按时间依次被购买商品的序列模型。基于规则的推荐方法的主要局限为难以为没有在关联规则或序列模型中出现的商品进行推荐。Aggarwal提出了一种针对目标市场的发现局部关联规则的技术。他们首先聚类分析了来自UCI机器学习数据中的蘑菇数据集和成人数据集两个购物篮数据,然后从每个类别中提取关联规则。Huang提出了一个序列模式推荐系统来预测超市中顾客随时间变换的购买行为。
四、混合方法
混合推荐系统目的在于减少乃至克服基于内容推荐、协同过滤和基于规则的推荐系统的局限。Fab系统联合了协同过滤和基于内容过滤技术来消除基于内容过滤技术中的特征缺乏和超特化问题以及协同过滤中的新商品问题。在这个系统中,基于内容的用户档案依旧用来寻找相似的用户来进行协同推荐,商品会在以下两个条件同时满足时推荐给用户:(1)被推荐商品在目标用户档案中有较高的分数;(2)被推荐商品在目标用户的相似用户中有较高的评级。Liu对购物篮数据使用二变量选择分析(购买/未购买)聚类并选出k个近邻,从k个近邻中的购买频次来获得商品(未被目标用户购买)得分的预测值。同时,根据新的隐式用户评级信息来从整个用户空间来选择近邻,并根据这些近邻的评级的调整加权和来给出商品(未被购买或已被购买)得分的预测值。另外,他们将整个时间划分为三段,并对每个时间段的交易数据进行聚类分析,然后得到由三个阶段顺序交易数据聚类得到的序列模式,由此得到整个时间段由一系列商品代表的序列模式。因此,这种方法比其它方法更优在于可以做更过的个性化推荐。
五、总结
在不同的推荐系统技术中,所需的信息类别也有所不同。基于内容过滤推荐系统使用商品的内容信息来构建用户档案并基于内容相似性来寻找目标用户可能购买商品的类似品。另一方面,协同过滤推荐系统使用用户的评级信息来代表用户对相应商品的偏好,并根据用户们在评级上的相似性来预测用户对某商品的评级。基于规则的方法使用用户的购买行为信息来获得有意义的关联规则和序列模式,并基于此进行推荐。
-
机器学习常用算法三:协同过滤
2017-09-08 20:32:46协同过滤是用来做推荐的算法 1. 基于用户的协同过滤(UserCF) 2. 基于物品的协同过滤(ItemCF) 3. 四种求相似度的方法 4.基于物品的协同过滤的计算步骤以及利用mahout调用协同过滤的方法协同过滤是用来做推荐的算法
1. 基于用户的协同过滤(UserCF)
(1) 收集用户资料
(2) 最近邻搜索找到相似用户
(3) 计算产生推荐结果2. 基于物品的协同过滤(ItemCF)
(1) 收集用户资料
(2) 针对物品的最近邻搜索找到相似物品
(3) 计算产生推荐结果3. 四种求相似度的方法
不管是那种协同过滤,都需要找到相似的物品或用户,有以下4种求相似度的方法
(1) 基于距离计算相似度(欧几里德距离)
通过求高维空间中的点的距离来计算相似度(2) 基于相关系数计算相似度(皮尔逊相关系数)
皮尔逊相关系数一般用于计算两个变量间联系的紧密程度,它的取值在[-1,+1]之间(3) 基于夹角余弦计算相似度(Cosine Similarity)
一般用于计算文本之间的相似度(4) 基于Tanimoto谷本系数计算相似度,也成Jaccard系数,是Cosine相似度的扩展,也用于计算文档数据的相似度
4. 基于物品的协同过滤的计算步骤
(1) 建立物品的同现矩阵
同现矩阵是体现商品相似度的一种方式
(2) 建立用户对物品的评分矩阵
这个评分矩阵中大部分数据为0,因为用户购买的物品是远远小于物品所有的种类的,这样的矩阵称为稀疏矩阵
做推荐的本质就是:把用户的评分从稀疏矩阵变成稠密矩阵,也就是预测用户对没买过的物品的评分,然后取TopN后(3) 物品的同现矩阵与用户评分矩阵相乘
比如,给用户3推荐物品:
协同过滤的mahout命令格式如下:
MAHOUT_HOME/bin/mahout recommenditembased # 输入文件的位置 --input <input> # 输出文件的位置 --output <output> # 给每个用户推荐物品的数量,如果可推荐的数量小于指定的数量,取可推荐的数量的最大值 --numRecommendations <numRecommendations> # 设置误差的阈值 --threshold <threshold> # 选择计算相似度的方法:常用的有以下5种,协同过滤我们选择同现矩阵,可以缩写为-s --similarityClassname SIMILARITY_COOCCURRENCE # 同现矩阵 SIMILARITY_TANIMOTO_COEFFICIEN # 谷本系数 SIMILARITY_COSINE # cos余弦夹角 SIMILARITY_PEARSON_CORRELATION # 皮尔逊相关系数
使用mahout提交机器学习相关的内容,需有以下条件:
(1) Hadoop集群(HDFS和YARN)正常启动
(2) Mahout安装在Hadoop集群中的机器上提交命令:
/opt/mahout-0.10.2/bin/mahout recommenditembased -s SIMILARITY_COOCCURRENCE --input /mahout/input/user.txt --output /mahout/output/ --numRecommendations 5
注意:
(1) 在Linux中,一条命令必须是一行,屏幕中显示不了会自动换行,我们这里为了方便阅读,进行了人为换行
(2) - -input 和 - - output后接的路径都是HDFS的路径
(3) user.txt的内容如下
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(5) 如果报错内容中出现HDFS路径,比如
Output directory temp/preparePreferenceMatrix/itemIDIndex already exists
那么路径前没有加”/”的都是相对路径,temp/preparePreferenceMatrix/itemIDIndex 其实是 HDFS中的/user/当前登陆的用户名/temp/preparePreferenceMatrix/itemIDIndex,如果报以上错误,删除这个临时文件就可以,也有另外一种办法:提交命令时指定新的临时文件目录(仅适用于本次提交):/opt/mahout-0.10.2/bin/mahout recommenditembased - -tempDir执行结果:
1 [105:3.875,104:3.7222223,106:3.6] 2 [106:2.9285715,105:2.5833333,107:2.0] 3 [106:3.5,102:3.3333333,103:3.3125] 4 [107:4.75,105:4.3333335,102:4.111111] 5 [107:3.8333333]
-
SpringCloud微服务中gateway网关的使用(四)——filter过滤器的使用
2020-11-02 22:43:23这里主要是通过修改application.yml配置文件配置来配置过滤器,其配置方法与predicate断言的配置差不多,有兴趣的小伙伴可以看看我的另外一篇博文:SpringCloud微服务中gateway网关的使用(三)——predicates的九种...前言:
filter过滤器是gateway网关的三大核心概念之一,最主要的功能就是对访问进行一个过滤功能,类似于serverlet中的过滤器,下面介绍一下框架中含有的过滤器配置以及如何自定义过滤器。
一。框架中自带的过滤器配置
这里主要是通过修改application.yml配置文件配置来配置过滤器,其配置方法与predicate断言的配置差不多,有兴趣的小伙伴可以看看我的另外一篇博文:SpringCloud微服务中gateway网关的使用(三)——predicates的九种常用配置方式
平时我们最常用的是自定义过滤器,所以这里就不做详细描述,官方文档中有详细实现配置,有兴趣的小伙伴可以访问官网查看:gate官方API文档
1.GatewayFilter Factories
2.Global Filters
二。自定义过滤器
自定义过滤器的实现方式最主要是实现GlobalFilter和Ordered这两个接口,其中GlobalFilter接口用来编写过滤逻辑,Ordered用来过滤器加载的顺序,值越小,代表其优先级别越高。
具体实现过程如下:
1.编写全局过滤器实现类MyLogGatewayFilter :
/** * 全局自定义过滤器 * * @author zks * @version 1.0 * @create 2020/11/02 */ @Component public class MyLogGatewayFilter implements GlobalFilter, Ordered { /** * 执行过滤逻辑 * @param exchange * @param chain * @return */ @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { System.out.println("进入过滤器 "+new Date()); ServerHttpRequest request = exchange.getRequest(); //得到请求参数 String name = request.getQueryParams().getFirst("name"); //执行过滤逻辑 if (name == null || "".equals(name)) { System.err.println("name为null,非法用户"); //定义拦截返回状态码 exchange.getResponse().setStatusCode(HttpStatus.NOT_ACCEPTABLE); return exchange.getResponse().setComplete(); } // 放行 return chain.filter(exchange); } /** * 过滤器加载的顺序 越小,优先级别越高 * * @return */ @Override public int getOrder() { return 0; } }
需要注意的是实现类需要加上@Component,否则会无效。
2.依次启动服务,带上参数name并赋值,访问http://localhost:9527/provider/getInfo?name=1,访问成功:
3.带上参数name不赋值,访问http://localhost:9527/provider/getInfo?name,访问失败请求被拦截:
4.控制台输出:
-
VUE常用方法整理.pdf
2020-03-28 22:56:182. 常用的指令有哪些,及怎么使用这些指令 6 第四节 阐述vue单双向数据流及事件绑定 6 1. vue单向数据流绑定属性值 v-bind: (属性) 简写 :(属性) 6 2. vue双向数据流 v-model 只作用于有value属性的元素 7 3. 事件... -
防范SQL注入的几种方法 4
2017-11-15 16:37:00sql="SELECTIDT_ID,NAMEFROMCategorywhereID="&ID&"ORDERBYxhasc" rs.opensql,conn,1,1四,我自己常用的数据过滤脚本,专利,呵~id=replace(id,”’”,””)Iflen(request(“id”))>8t... -
Task 02:协同过滤
2020-10-22 22:56:32Task 02:协同过滤 文章目录 Task 02:协同过滤一、协同过滤算法简介1. 基本思想2. 两种基于邻域方法的算法二、相似性度量方法1....协同过滤(Collaborative Filtering)推荐算法是最经典、最常用的. -
模拟技术中的分析大功率无线路由器的微波器件选型方法
2020-10-22 17:33:44市场上流行的无线路由器一般都支持专线xdsl/ cable,动态xdsl,pptp四种接入方式,它还具有其它一些网络管理的功能,如dhcp服务、nat防火墙、mac地址过滤等等功能。有几个比较成功的案例,最近将常用的Wi-Fi产品的大... -
分析大功率无线路由器的微波器件选型方法
2021-01-20 03:53:06市场上流行的无线路由器一般都支持专线xdsl/ cable,动态xdsl,pptp四种接入方式,它还具有其它一些网络管理的功能,如dhcp服务、nat防火墙、mac地址过滤等等功能。有几个比较成功的,近将常用的Wi-Fi产品的大功率射频... -
Java EE常用框架.xmind
2020-06-19 16:08:35Java EE常用框架 WebService 介绍 基于Web的服务。它使用Web(HTTP)方式,接收和响应外部系统的某种请求。从而实现远程调用 术语 XML. Extensible Markup Language -扩展性标记语言 WSDL – ... -
MYSQL常用命令大全
2011-05-30 13:31:24MySql的用户管理是通过 User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下: grant all on mydb... -
-
jquery插件使用方法大全
2012-05-24 23:58:18这些都是较常用的方法,get和post用法一样。第一个参数是异步请求的url,第二个为参数,第三个回调方法。 (4)的方法会在指定的Dom对象上绑定响应ajax执行的事件。 (5)同步加载数据。发送请求时锁住浏览器。需要... -
安卓四大组件学习之Broadcast
2015-09-10 13:43:09首先讲需要传递的信息和用于过滤的信息装入(Action 、Category)并通过SendBroadcast()、sendOrderBroadcast()或sendStickyBroadcast()方法,把 Intent对象以广播方式发送出去。 发送以后所有已经注册的... -
黑马程序员——JAVA学习笔记十四(高新技术三)
2014-12-30 15:16:00代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类... -
工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究
2017-02-28 21:22:19媒体查询 CSS媒体查询允许开发者基于浏览网站的设备的特性来应用不同的样式申明,最常用的特性是视口宽度。 GCF 谷歌内嵌浏览器框架, 使用此插件,用户可以通过Internet Explorer的用户界面,以Chrome内核的渲染方式... -
(14)计算学习理论
2020-03-13 10:46:58首先从相关/无关特征出发引出了特征选择的基本概念,接着分别介绍了子集搜索与评价、过滤式、包裹式以及嵌入式四种类型的特征选择方法。子集搜索与评价使用的是一种优中生优的贪婪算法,即每次从候选特征子集中选出... -
周志华《Machine Learning》学习笔记(14)--计算学习理论
2019-07-30 17:36:20首先从相关/无关特征出发引出了特征选择的基本概念,接着分别介绍了子集搜索与评价、过滤式、包裹式以及嵌入式四种类型的特征选择方法。子集搜索与评价使用的是一种优中生优的贪婪算法,即每次从候选特征子集中选出... -
机器学习笔记[十]:计算学习原理
2019-07-25 22:20:37首先从相关/无关特征出发引出了特征选择的基本概念,接着分别介绍了子集搜索与评价、过滤式、包裹式以及嵌入式四种类型的特征选择方法。子集搜索与评价使用的是一种优中生优的贪婪算法,即每次从候选特征子集中选出... -
异常数据处理
2019-07-06 09:49:44异常值的处理方法常用有四种: 1.删除含有异常值的记录 2.将异常值视为缺失值,交给缺失值处理方法来处理 3.用平均值来修正 4.不处理 需要强调的是,如何判定和处理异常值,需要结合实际。 # 异常数据处理... -
Spring 注解下IOC&DI
2019-09-16 07:01:58DI组件注册简单配置组件扫描组件过滤CUSTOM方式过滤Bean作用域Bean常用有四种作用域配置Bean的作用域懒加载条件注入使用@Import导入bean多配置类整合使用ImportSelector接口导入使用ImportBeanDefinitionRegistrar... -
CHOCBase
2019-10-03 05:47:021.1 监听某个对象变化的四种方式 代理监听Delegate Notification通知 KVO键值监听 Block代码块 addTarget方法 1.2 音频视频相册等 2、常用操作工具 2.1 字符串处理 过滤字符串中的非汉字、字母、数字 2.2 系统...
-
零基础极简以太坊智能合约开发环境搭建并开发部署
-
java 备忘录模式_Java设计模式(十) 备忘录模式 状态模式
-
【Python-随到随学】 FLask第一周
-
Python爬取图片
-
Macos 周期性退出当前程序界面, 效果类似如按Esc键
-
java 虚拟机内存划分_Java虚拟机内存划分
-
个人记账本excel模版下载.7z
-
java 复制 粘贴_JAVA实现复制、粘贴
-
基于SSM实现的房屋租赁系统【附源码】(毕设)
-
Open vSwitch — 核心对象
-
wgcloud-v3.3.0操作说明手册
-
智能停车场云平台(附vue+SpringBoot前后端项目源码)
-
MySQL 高可用工具 DRBD 实战部署详解
-
MySQL 高可用(DRBD + heartbeat)
-
java 复制输入流_使用java输入输出流实现文件的复制:
-
LeetCode刷题进阶之托普利茨矩阵(766)
-
朱老师C++课程第3部分-3.6智能指针与STL查漏补缺
-
财务收支管理系统.7z
-
友善调试助手.rar
-
软考高级论文模板.docx