解读libFM

Last update: 2015-06-25 02:05

Posted on: 2015-06-24 17:44

Posted in : libFM,

写在前面

由于之前的比赛中用到了这个工具,所以顺带对矩阵分解以及FM深入学习了下。本文将结合其算法原理和Cpp源码,说说自己的使用心得,另外讲讲如何将Cpp源码分别用Python和Java改写。

问题的本质

对于推荐系统一类问题来说,最核心的就是衡量用户对未接触target的感兴趣程度。CF一类算法的思想是通过相似度计算来直接估计感兴趣程度,矩阵分解一类的思想则是借助隐变量的映射间接得到对target的感兴趣程度。那么,FM呢?

个人理解是,FM和词向量一类的做法有相通之处。通过分别对用户和商品等构建一个向量,训练结束后根据用户的向量和商品向量之间的内积,估计出用户对商品的感兴趣程度。OK,借用论文[Factorization Machines]中的一个例子来说明下:

假设观测到的数据集如下:

(A, TI, 5)

(A, NH, 3)

(A, SW, 1)

(B, SW, 4)

(B, ST ...

--- Read More ---

使用Pandas的一点经验和技巧

Last update: 2015-05-18 16:41

Posted on: 2015-05-18 16:39

Posted in :

上周刚做完ijcai中阿里赞助的一个比赛的第一赛季,无缘前三,甚是可惜。整个过程中都是采用pandas来抽取特征的,总的来说相当畅快,因此希望能够分享些用pandas过程中的经验技巧(坑),其中包含了许多从stackoverflow上查找的答案(我尽量引出出处,好多我找不到原始问答了),但愿大家少走弯路。暂时先写了这7点,以后想到了再补充,另外我把github上的一个pandas-cookbook翻译了一下,快速上手应该是够了,更多的还是遇到问题去查看官方文档。

1.读取csv文件的时候,注意指定数据类型

read_csv函数默认会把数值转换成int或者float,但是有时候对于一些ID列而言,这并不是好事。一不小心对ID列加减乘除操作后根本不会有任何提示!此外,string型的数据和int型的数据在打印出来后是没有区别的,有时候你明明看到一个df里有index为12345的这一行数据,df.ix['12345']返回的却是空,很可能原始的index是int型的,换成df.ix[12345]就行了。

2.灵活使用map ...

--- Read More ---

Throwing Eggs from a Building

Last update: 2015-02-04 00:08

Posted on: 2015-02-03 15:27

Posted in : Algorithms,

graphl.png_184fd5a153422104b0054be061ec2a80

下午做练习题时碰到的问题,Algorithms, 4th中的1.4.241.4.25。思考了之后发现是个挺有意思的问题。下面结合题目和网上的一些资料做个简单的分析。

1. 问题描述

原文的问题是这样的:

1.4.24 Throwing eggs from a building. Suppose that you have an N-story building and plenty of eggs. Suppose also that an egg ...

--- Read More ---

Data Visualization and Analysis in Recsys Challenge

Last update: 2015-02-03 15:23

Posted on: 2015-01-21 08:51

Posted in : DataVisualization,

a.png_a9b6f1920752df9ac5ec07ab83a06369

本来想写点关于pandas的,写了点后感觉,毕竟只是个工具,怎么写都只会变成技术文档。还是来点实际的In Acion之类的东西,所以本文就结合pandas和Recsys Challenge 2015的数据来做一些简单分析。侧重点在如何理解和分析数据。

  • 数据的下载和描述见这里

  • 下文中绘图代码在这里,(不建议在低于16G内存的机器上直接跑该脚本,中间变量很吃内存。某些不需要的中间变量可以del后释放掉。)

  • 原始网页的Leaderboard 太丑了...我做了个更Fancy的,有兴趣看看这里

  • 另外本文参考了以下内容:

  1. http://aloneindecember.com/words/recsys-challenge-part-i/

  2. http://aloneindecember.com/words/recsys-challenge-part-ii/

  3. Can we approximate ...

--- Read More ---

(3)一起用python之准备篇——ipython

Last update: 2015-01-18 16:12

Posted on: 2014-02-25 22:16

Posted in : Ipython,

img2

update

发现ipython notebook 灰常方便,主要是写一些代码片段的时候,debug起来甚至跟pycharm有的一拼。配置好服务器版本后,打开浏览器就能用,一定程度上提升了效率。具体如何配置ipython notebook的service可以看官网,值得注意的一点是,如果不配置直接本地运行的化,只能通过localhost:[port]打开,无法远程访问。

写在前面

从本文开始,以后都用markdown写作,向大家学习~(另,本文是一个多月前写的,当时只对终端的命令截图了的,没有保存文本,现在也懒得在重新敲了,第一个还是文本,其余的都是图片。以后代码部分都采用该主题)

ipython现在几乎是自己使用python过程中最常用的工具。其中的一些特性很是好用,所以在这里专门用一篇来简单介绍下。方便后面的学习和调试过程。照例,这里给出一本值得推荐的参考书。Learning IPython for Interactive ...

--- Read More ---

1 / 6 Next