美文网首页
ItemCF - 限制"用户-物品倒排表"中物品数量

ItemCF - 限制"用户-物品倒排表"中物品数量

作者: Konverse | 来源:发表于2019-11-24 22:44 被阅读0次
    Squirrel.jpg

    What

     ItemCF在使用过程中,在建立用户-物品倒排表时,为了避免异常的用户数据行为对计算的影响,需要对每个用户喜欢的物品列表中物品数量进行限制。

    Why

    ItemCF流程.png

    1.异常值

     异常的用户行为数据对ItemCF中物品相似度的计算并没有意义。
     一个用户会在一个数据周期内(比如,7天)下载多少次应用呢?
     可以统计每个用户在一个数据周期内的平均下载数,然后根据这个平均值user_avg来判断异常值。
     如果一个用户(outlier)平均每天下载20个应用,那么拉取一周的数据,该用户就会下载140个应用,很明显,这个用户的行为数据是异常的,他的行为并不能起到协同过滤的作用。
     试想,谁会一天下载20多个应用呢?可能是幕后的测试人员吧,或者,一个把下载App当做个人爱好的朋友。而这个行为对于ItemCF并没有意义,因为ItemCF是通过用户对物品的行为来计算物品之间的相似度的,如果用户的对于物品的行为是随机的、无目的,将这种异常行为数据用于计算就没有意义。

    2.计算量

     不对异常值进行处理,会增加不必要的计算开销。
     还是上面的例子,如果将上面的异常用户(outlier)的行为数据用于ItemCF计算,在根据其用户-物品倒排表制作共现矩阵时,一共进行C_{140}^2 = \frac{140!}{2!(140-2)!} =9730次运算;
     而假设一个正常的用户每天最多下载5个应用,那么一周就是35个引用,在根据其用户-物品倒排表制作共现矩阵时,一共进行C_{35}^2 = \frac{35!}{2!(35-2)!} =595次运算。
     计算开销多了10倍。随着数据的不断增加,由于异常值造成的计算开销只会越来越大。

    How

    如何对异常值进行处理?
    1.删除
     直接将该用户的行为数据进行删除,不用于后续计算。我现在是这样做的,因为数据量较大。
    2.修改后保留
     根据经验对用户的行为数据进行保留,例如根据用户行为的时间戳,保留他在白天的时间段内的行为数据,而将凌晨的行为数据删除。
     需要说明的是,不同的数据挖掘场景,对于异常值的处理不同,需要根据具体的需求而定。

    How Good

    1.达到更好的计算效果;
    2.避免了不必要的资源浪费;
    3.当计算量很大,限制用户-物品倒排表中物品数量也是模型调优的选择之一。

    相关文章

      网友评论

          本文标题:ItemCF - 限制"用户-物品倒排表"中物品数量

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