Open CasyWang opened 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/
如果保留输入样本对中大于、小于号都有的话,只是改变一下数学形式和推导,实现起来繁琐一些,二者没有本质区别。
多谢回复。另外,在FM打分的时候,不需要用sigmoid激活吗?
这个算法是用来解决排序问题的,具体的分数大小没有意义,只要序关系正确就行。
https://github.com/CastellanZhang/lambdaFM/blob/2e7b26fe074ce8682bdc2a2702bb4878dddd4563/src/FTRL/ftrl_trainer.h#L262