介绍

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的更多相关文章

  1. JavaScript学习03 JS函数

    JavaScript学习03 JS函数 函数就是包裹在花括号中的代码块,前面使用了关键词function: function functionName() { 这里是要执行的代码 } 函数参数 函数的 ...

  2. Java虚拟机JVM学习03 连接过程:验证、准备、解析

    Java虚拟机JVM学习03 连接过程:验证.准备.解析 类被加载后,就进入连接阶段. 连接就是将已经读入到内存的类的二进制数据合并到虚拟机的运行时环境中去. 连接阶段三个步骤:验证.准备和解析. 类 ...

  3. Java学习03

    Java学习03 1.java面试一些问题 一.什么是变量 变量是指在程序执行期间可变的数据.类中的变量是用来表示累的属性的,在编程过程中,可以对变量的值进行修改.变量通常是可变的,即值是变化的 二. ...

  4. ThinkPhp学习03

    原文:ThinkPhp学习03 一.ThinkPHP 3 的输出      (重点) a.通过 echo 等PHP原生的输出方式在页面中输出 b.通过display方法输出   想分配变量可以使用as ...

  5. JVM学习03:性能监控工具

    JVM学习03:性能监控工具 写在前面:本系列分享主要参考资料是  周志明老师的<深入理解Java虚拟机>第二版. 性能监控工具知识要点Xmind梳理 案例分析 案例分析1-JPS 案例分 ...

  6. node.js 学习03

    node.js学习03 解决浏览器接收服务端信息之后乱码的问题: 服务器通过设置http响应报文头,告诉浏览器使用相应的编码 来解析网页. res.setHeader('Content','text/ ...

  7. Redis学习03——存储字符串(String)

    --------------------- 作者:愤怒的小明 来源:CSDN 原文:https://blog.csdn.net/qiwenmingshiwo/article/details/78118 ...

  8. Mybatis学习03

    title: Mybatis学习03 date: 2020-01-19 13:03:20 tags: Mybatis学习的第二天,内容有日志和分页. <!--more--> 1.日志 1. ...

  9. 推荐系统学习07-Waffles

    介绍 Waffles 英文原意是蜂蜜甜饼,在这里却指代一个很强大的机器学习的开源工具包. Waffles里包括的算法特别多.涉及机器学习的方方面面,推荐系统位于当中的Waffles_recommend ...

  10. Android JNI和NDK学习(03)--动态方式实现JNI(转)

    本文转自:http://www.cnblogs.com/skywang12345/archive/2013/05/23/3092491.html 前面总结了静态实现JNI的方法,本文介绍如何动态实现J ...

随机推荐

  1. (19)python扩展

    当python程序遇到瓶颈时,可以考略扩展其他语言 例如:程序的某部分,需要高速度,或者与硬件交互时可以用到C语言.当其他语言有现成的程序,重新起来很麻烦时.有些功能用别的语言写更方便时 扩展语言有  ...

  2. Bellman - Ford 算法解决最短路径问题

    Bellman - Ford 算法: 一:基本算法 对于单源最短路径问题,上一篇文章中介绍了 Dijkstra 算法,但是由于 Dijkstra 算法局限于解决非负权的最短路径问题,对于带负权的图就力 ...

  3. AMQ学习笔记 - 04. 消息选择器

    概述 消息选择器使用类似于SQL语法,为Consumer指定基于Message属性的筛选条件. 消息选择器 发送的时候,给消息添加一些属性:在接收的时候,根据属性进行过滤. API javax.jms ...

  4. 洛谷P1095 绝地武士的逃离

    好吧原题是守望者的逃离,我强行改了一波题面,因为信仰=-=(? May the force be with us. 绝地跑步速度为17m/s,但无法逃离荒岛.绝地的原力恢复速度为4点/s,只有处在原地 ...

  5. [BZOJ5006][LOJ#2290][THUWC2017]随机二分图(概率+状压DP)

    https://loj.ac/problem/2290 题解:https://blog.csdn.net/Vectorxj/article/details/78905660 不是很好理解,对于边(x1 ...

  6. 【枚举】【前缀和】【map】ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined) C. Molly's Chemicals

    处理出前缀和,枚举k的幂,然后从前往后枚举,把前面的前缀和都塞进map,可以方便的查询对于某个右端点,有多少个左端点满足该段区间的和为待查询的值. #include<cstdio> #in ...

  7. 【分块】hdu5057 Argestes and Sequence

    分块,v[i][j][k]表示第i块内第j位是k的元素数.非常好写.注意初始化 要注意题意,①第i位是从右往左算的. ②若x没有第i位,则用前导零补齐10位.比如103---->00000001 ...

  8. Linux发布Tomcat Web项目

    1.打包项目,项目右键–>Export –> WAR file 2.将.war文件放到tomcat下的webapps下.重启tomcat即可. ps  afux    —  查看进程 ki ...

  9. Android 架构 3.实现

    以实现最小化可用产品(MVP)的目标,用最简单的方式来搭建架构和实现代码.IDE采用Android Studio,Demo实现的功能为用户注册.登录和展示一个券列表,数据采用我们现有项目的测试数据,接 ...

  10. Oracle数据库冷备份与恢复(救命稻草)

    说明,只要是同样系统,同样数据库版本,是可以做冷备恢复.冷备份数据必须是数据库不在open状态下.以oracle11gR2为例. 一.冷备份与冷恢复 具体步骤如下. 1. 复制旧的数据库文件 (1) ...