美文网首页
第一章 好的推荐系统-补充

第一章 好的推荐系统-补充

作者: 智慧IT人生 | 来源:发表于2019-08-03 21:55 被阅读0次

    感受

    想坚持做一件事,其实真的不容易。从这个系列的第一篇文章开始,当时制定了计划,但现实中总能找到各种理由把它抛之脑后。

    现在已经是计划的第二周,但是写的还是上周应该完成的内容。

    看书写文章这个事一直都在心里记着,而且之前也把计划也公布于众了,那么就应该坚持。

    第三节 推荐系统评测总结

    说了那么多评测指标,有的在现实中并不容易实现。推荐系统的最终目的是实现商业目标,所有的都应该以此为中心。

    关于离线实验优化目标(也可以从侧面作为一个系统目标),用数学表达为:

    最大化预测准确度

    使得 覆盖率 > A,多样性 > B,新颖性 > C

    基尼系数详解

    缘由:看到覆盖率那节的时候,有个基尼系数的公式,而且作者也提供了代码实现(书中代码有误)。可是这基尼系数是怎么来的呢? 于是根据作者注解到参考文章《Evaluating Recommendation Systems》中查找,但没发现有推导过程,此文章又提到了《Evaluating Recommendation Systems》,浏览一遍后仍然没发现推导过程。后来想,算了吧,还是得自己推导吧。。。

    阐述:

    1. 来源(摘录维基百科):基尼系数(英语:Gini coefficient),是20世纪初意大利学者科拉多·基尼(另一说赫希曼)根据劳伦茨曲线所定义的判断年收入分配公平程度的指标[4],是比例数值,在0和1之间。

    2. 迁移:基尼系数越大,代表贫富差距越大。用在推荐系统中就是:基尼系数越大,覆盖率越小,即商品的流行度(某商品在推荐中出现的次数/所有商品在推荐中出现的次数)不均匀;反之,基尼系数越小,覆盖率越大(大多数商品都能被推荐出来),则商品的流行度比较均匀。

    3. 推导过程:

    主要的推导目的为:G = \frac{1}{n-1} \sum_{j=1}^n (2j-n-1)p(i_{j} )

    (1)图示说明。假设有10个商品,被推荐次数分别为[5,18,12,45,34,26,17,27,206,610]。根据这10个商品画出gini系数图像(代码),如下(画图时已按流行度从小到大排序):

    (2)过程阐述。我们要求的目标为 gini = \frac{A}{A+B} =\frac{1/2-B}{1/2} =1-2\int_{0}^{1} L(u)du,即A的面积比上A+B的面积。由于曲线为不规则形状,方程不易求出,所以可通过积分求面积。即求每个小格子的面积,然后加起来。

    符号说明:

    * L(u)为蓝色曲线的方程,

    W_{i} 为到第 i 个商品的流行度累计和,即W_{i} = \sum_{j=1}^i  p(i_{j} )

    p(i_{j} )为第i_{j} 个商品的流行度,i_{j} 按照流行度从小到大排序后第 j 个商品,

    W_{0} =0, W_{n}=1

    (3)详细推导。先求积分(通过求小梯形面积和)

    \int_{0}^{1} L(u)du=\frac{1}{2} \cdot \frac{1}{n} \cdot (W_{0} + W_{1}) + \frac{1}{2} \cdot \frac{1}{n} \cdot (W_{1} + W_{2}) + ... + \frac{1}{2} \cdot \frac{1}{n} \cdot (W_{n-1} + W_{n})

    =\frac{1}{2n} \cdot (W_0+2W_1+2W_2+...+2W_{n-1}+W_n )

    =\frac{1}{2n} \cdot (W_0+2W_1+2W_2+...+2W_{n-1}+2W_n ) - \frac{1}{2n} W_{n}

    =\frac{1}{n} \sum_{i=1}^n W_{i}  - \frac{1}{2n}

    =\frac{1}{n} (p_{i_{1} } + p_{i_{1} } + p_{i_{2} } + ... + p_{i_{1} } + p_{i_{2} } + ... + p_{i_{n} }) - \frac{1}{2n}

    =\frac{1}{n} (np(i_{1} )+(n-1)p(i_{2})+...+p(i_{n})) - \frac{1}{2n}

    =\frac{1}{n} \sum_{j=1}^n(n-j+1) p(i_{j} ) - \frac{1}{2n}

    然后带入:

    1-2\int_{0}^{1} L(u)du=1 - \frac{2}{n} \sum_{j=1}^n(n-j+1) p(i_{j} ) + \frac{1}{n}

    =1 - \frac{1}{n} \sum_{j=1}^n(2n-2j+2) p(i_{j} ) + \frac{1}{n}

    =\frac{1}{n} (n-\sum_{j=1}^n(2n-2j+2) p(i_{j} ) + 1)

    =\frac{1}{n} [\sum_{j=1}^n np(i_{j} ) - \sum_{j=1}^n(2n-2j+2) p(i_{j} ) +\sum_{j=1}^n p(i_{j} )]

    =\frac{1}{n} \cdot \sum_{j=1}^n (n-2n+2j-2+1) p(i_{j})

    =\frac{1}{n} \cdot \sum_{j=1}^n (2j-n-1) p(i_{j})

    最终推导的结果和书上不太一样,书上前面的系数为\frac{1}{n-1} ,如果认为曲线的第一个点为W_{1} ,则可得出书上的结论。不过没关系啦,在工程计算上几乎没有差别。

    4. 计算过程(github)。根据上面推导的公式带入例子数据,基尼系数为:

    G = 0.6992

    5. 结果分析

    0.6992 如果用来评价贫富差距,说明有钱人太少且非常有钱,他们占了大部分财富。

    这里用来评价商品覆盖率,则商品流行度明显不均衡。

    相关文章

      网友评论

          本文标题:第一章 好的推荐系统-补充

          本文链接:https://www.haomeiwen.com/subject/jycsdctx.html