Le1kk / Tianchi-News-Recommend

https://tianchi.aliyun.com/competition/entrance/531842/introduction

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Tianchi-News-Recommend

解决方案及算法

召回部分

用了两种召回策略,分别是基于新闻相似度的协同过滤召回和基于新闻热度的召回。

- 基于新闻相似度的协同过滤(25篇)
    先构造新闻相似度矩阵,相似度为相似新闻出现的次数取对数,之后根据矩阵选出前K篇相似度最高的新闻。
    
- 基于新闻热度的召回(10篇)
    选取用户最后一次点击时刻的前一天到后一天的前K篇最热门文章推荐给用户。
    
两者合并去重。

训练和预测

- 负采样
    由于召回的负样本过多,所以需要进行负采样。负采样使用比例0.001进行随机采样,最少1篇,最多5篇,分别从用户和新闻两个维度进行负采样。
    其中正样本数量为118761。

- 排序模型:LGBMRanker

- 训练数据:赛事提供的train_click_log和testA_click_log的前N-1次点击(由于testA中有部分用户只点击了一次,所以开始处理时已经去除。),其中80%为训练集,10%为模型使用的eval_set,10%为线下验证集,数据的最后一次点击作为预测目标。(80%是所有点击数据,不是用户数量,所以用户数量可能会有所不同)

- 线下召回率
    ItemCF RECALL:  41.09988356620093%
    Hot RECALL:     26.32152361942781%
    Total RECALL:   49.384980039920165%
    
- 线下MRR
    0.3167055542146056(有波动)

About

https://tianchi.aliyun.com/competition/entrance/531842/introduction

License:MIT License


Languages

Language:Python 100.0%