CastellanZhang / lambdaFM

Multi-thread implementation of lambdaFM with FTRL for ranking problem. LambdaFM is a learning-to-rank algorithm by combining LambdaRank and Factorization Machines.
MIT License
111 stars 31 forks source link

在lettor数据集上,按照这里的实现,样本里只输入正样本,模型如何收敛呢? #7

Open CasyWang opened 6 years ago

CasyWang commented 6 years ago

https://github.com/CastellanZhang/lambdaFM/blob/2e7b26fe074ce8682bdc2a2702bb4878dddd4563/src/FTRL/ftrl_trainer.h#L262

CastellanZhang commented 6 years ago

我猜你是认为我把输入样本对(A>B)、(C<D)都改成了(A>B)、(D>C)是吧? 这里pairwise的“正样本”(A>B)、“负样本”(C<D)的概念,和LR的pointwise正负样本不太一样。 pairwise的输入是样本对,然后有个大小关系,所以(A>B)和(B<A)只是形式上的差异,在信息上没有什么差别,是等价的,即pairwise没有什么严格的正负样本区别。 我纯粹是为了数学形式的简化和推导方便,把所有样本对的形式都改成了前者>后者这种,即如果是(A<B)则改为(B>A),公式推导具体见 http://castellanzhang.github.io/2017/07/16/lambdafm/

如果保留输入样本对中大于、小于号都有的话,只是改变一下数学形式和推导,实现起来繁琐一些,二者没有本质区别。

CasyWang commented 6 years ago

多谢回复。另外,在FM打分的时候,不需要用sigmoid激活吗?

CastellanZhang commented 6 years ago

这个算法是用来解决排序问题的,具体的分数大小没有意义,只要序关系正确就行。