零基础入门推荐系统 - 新闻推荐-Task1 DataWhale学习小组
赛题理解和Baseline
datawhale在天池举办的零基础入门比赛:
https://tianchi.aliyun.com/competition/entrance/531842/information
Baseline
主要通过论坛提供的baseline进行了一个初步探索。
使用的数据主要是train_click_log(没有考虑新闻的内容articles_emb),使用的算法是itemCF(基于商品的协同过滤)
新增知识点
- for循环中的进度条显示
from tqdm import tqdm
for i in tqdm(range(n)):
-
对于比较大的数据集的处理tips:
- 修改变量类型以达到节约内存的目的
- 从训练集中划出一部分数据来调试代码
- 将需要用的临时数据作为pickle文件存储,方便导入导出
-
itemCF的原理:
根据用户的点击日记生成相似矩阵,利用相似矩阵进行新文章的推荐 。 -
item的相似度计算:
- 考虑用户浏览的item数量
- 考虑item被浏览的数量
-
DataFrame及字典中的数据处理方法
- 分组后使用apply查询每组最值,assert的使用
tmp = recall_df.groupby('user_id').apply(lambda x: x['rank'].max()) assert tmp.min() >= topk
- 数据框重构
submit = recall_df[recall_df['rank'] <= topk].set_index(['user_id', 'rank']).unstack(-1).reset_index() submit.columns = [int(col) if isinstance(col, int) else col for col in submit.columns.droplevel(0)]
- 字典排序并取topk值
item_rank = sorted(item_rank.items(), key=lambda x: x[1], reverse=True)[:recall_item_num]
-
其他:
天池实验室的notebook的使用