推荐系统学习03-SVDFeature
介绍
SVDFeature是由Apex Data & Knowledge Management Lab在KDD CUP11竞赛中开发出来的工具包。它的目的是有效地解决基于特征的矩阵分解。新的模型能够仅仅通过定义新的特征来实现。这样的基于特征的设置同意我们把非常多信息包括在模型中,使得模型更加与时俱进。使用此工具包,能够非常easy的把其它信息整合进模型,比方时间动态,领域关系和分层信息。
除了评分预測,还能够实现pairwise
ranking任务。
模型
SVDFeature的模型定义例如以下:
输入包括三种特征<α,β,γ>,各自是用户特征,物品特征和全局特征。
模型的终于版本号是:
活跃函数和损失函数的通常选择例如以下(忽略后面的标识):
具体内容可自行查阅SVDFeature-manual。
输入格式
输入格式是和SVM格式相似的稀疏特征格式。对一个输入样本,我们须要指定三种特征,< α,β,γ
>和预測目标。格式例如以下:
这里的id和value相应非零项的特征id和特征值。特征文件首先指定预測的目标,然后是全局。用户,物品特征向量中非零项的数目。
然后以稀疏特征格式列举出非零全局,用户和物品特征。
比如。假设我们使用基本矩阵分解模型。用户0给物品10评分为5:
5 0 1 1 0:1 10:1
这里的<0,1,1>表示0个全局特征,1一个用户特征和1个物品特征。0:1表示用户特征。10:1表示物品特征。
其余具体内容自行查阅SVDFeature-manual。
SVDFeature工具包里的文件:
* solvers: all the customization
of SVDFeature solvers, not included in the basic package
* tools : the auxiliary tools that can be used for experiment
* demo : the examples that can help to get started on the toolkit
操作
我使用的是Ubuntu14.04。编译环境要求g++4.6及以上,至于怎样安装g++。自行百度。
将Svdfeature-1.2.2.tar.gz复制到Ubuntu中。解压。
进入主文件夹和tools文件夹分别输入“make”进行编译。
编译完毕后进入demo文件夹:
SVDFeature提供了5个样例,各自是:basicMF、binaryClassification、implicitfeedback、neighborhoodModel和pairwiseRank。
单独进入一个文件夹,里面包括了一个run.sh文件。执行“./run.sh”就可以完毕训练和測试阶段。
假如文件夹中还有run-ml100K.sh文件,说明能够使用Movielen数据,步骤为:下载
ml-100K 数据, 把 ua.base和ua.test放入文件夹 , 执行“ run-ml100K.sh”。
普通执行过程:
执行结束:
预測结果:
使用movielen执行:
执行的结果保存在pred.txt中:
其余几个样例就不一一展示了。
推荐系统学习03-SVDFeature的更多相关文章
- JavaScript学习03 JS函数
JavaScript学习03 JS函数 函数就是包裹在花括号中的代码块,前面使用了关键词function: function functionName() { 这里是要执行的代码 } 函数参数 函数的 ...
- Java虚拟机JVM学习03 连接过程:验证、准备、解析
Java虚拟机JVM学习03 连接过程:验证.准备.解析 类被加载后,就进入连接阶段. 连接就是将已经读入到内存的类的二进制数据合并到虚拟机的运行时环境中去. 连接阶段三个步骤:验证.准备和解析. 类 ...
- Java学习03
Java学习03 1.java面试一些问题 一.什么是变量 变量是指在程序执行期间可变的数据.类中的变量是用来表示累的属性的,在编程过程中,可以对变量的值进行修改.变量通常是可变的,即值是变化的 二. ...
- ThinkPhp学习03
原文:ThinkPhp学习03 一.ThinkPHP 3 的输出 (重点) a.通过 echo 等PHP原生的输出方式在页面中输出 b.通过display方法输出 想分配变量可以使用as ...
- JVM学习03:性能监控工具
JVM学习03:性能监控工具 写在前面:本系列分享主要参考资料是 周志明老师的<深入理解Java虚拟机>第二版. 性能监控工具知识要点Xmind梳理 案例分析 案例分析1-JPS 案例分 ...
- node.js 学习03
node.js学习03 解决浏览器接收服务端信息之后乱码的问题: 服务器通过设置http响应报文头,告诉浏览器使用相应的编码 来解析网页. res.setHeader('Content','text/ ...
- Redis学习03——存储字符串(String)
--------------------- 作者:愤怒的小明 来源:CSDN 原文:https://blog.csdn.net/qiwenmingshiwo/article/details/78118 ...
- Mybatis学习03
title: Mybatis学习03 date: 2020-01-19 13:03:20 tags: Mybatis学习的第二天,内容有日志和分页. <!--more--> 1.日志 1. ...
- 推荐系统学习07-Waffles
介绍 Waffles 英文原意是蜂蜜甜饼,在这里却指代一个很强大的机器学习的开源工具包. Waffles里包括的算法特别多.涉及机器学习的方方面面,推荐系统位于当中的Waffles_recommend ...
- Android JNI和NDK学习(03)--动态方式实现JNI(转)
本文转自:http://www.cnblogs.com/skywang12345/archive/2013/05/23/3092491.html 前面总结了静态实现JNI的方法,本文介绍如何动态实现J ...
随机推荐
- 形态学函数cvMorphologyEx
OpenCV提供了通用的形态学函数cvMorphologyEx,该函数能够实现开运算,闭运算,形态梯度,礼帽操作,黑帽操作 接口形式 编辑 void cvMorphologyEx(const CvAr ...
- Codeforces 702A Maximum Increase(dp)
题目链接:http://codeforces.com/problemset/problem/702/A 题意: 给你N个数,a[0], a[1], a[2], ....., a[n-1],让你找出最长 ...
- 递归输入与引用传值(UVa839 Not so Mobile)
题目的大意是一个树形天平,输入给出样例的个数,然后空一行,每行4个数W1,D1,W2,D2,分别代表天平左侧的重量.力臂和天平右侧的重量.力臂.如果W1或者W2为0,则代表该节点有左子树或右子树,如果 ...
- 2018 ACM-ICPC 徐州网络赛
Problem A Problem B Problem C. 首先枚举那些他知道但是我不知道的数字.枚举这些的所有情况. 然后对每种情况再枚举我们都不知道的数字.求出每行每列的期望,求个最大值. 这样 ...
- 【点分治】hdu5016 Mart Master II
点分治好题. ①手动开栈. ②dp预处理每个点被哪个市场控制,及其距离是多少,记作pair<int,int>数组p. ③设dis[u].first为u到重心s的距离,dis[u].seco ...
- python3开发进阶-Django框架中的ORM的常用操作的补充(F查询和Q查询,事务)
阅读目录 F查询和Q查询 事务 一.F查询和Q查询 1.F查询 查询前的准备 class Product(models.Model): name = models.CharField(max_leng ...
- python3 开发面试题(创建表结构)6.9
纯sql语句写出: '''设计 图书管理系统 表结构: - 书 - 书名 - 作者 - 姓名 - 出版社 - 出版社名称 - 地址 一本书只能由一家出版社出版 --> 多对一(书对出版社) 一本 ...
- 1.10(java学习笔记)super关键字
supe主要是调用父类中被重写的方法及属性. 用下列代码那说明: package cn.hcf.TestSuper; public class TestSuper { public static vo ...
- 实用类String.length应用-用户名密码长度
package demo3; import java.util.Scanner; //会员注册,用户名长度不小于3,密码长度不小于6,两次输入的密码必须相同 public class Register ...
- 微信小程序API·目录
网络 媒体 文件 数据缓存 位置 设备 界面 第三方平台 开放接口 数据 更新 多线程 监控 调试接口 日志