零基础入门推荐系统 - 新闻推荐-Task1 (DataWhale学习小组)

零基础入门推荐系统 - 新闻推荐-Task1 DataWhale学习小组

  • 赛题理解和Baseline
    • Baseline
    • 新增知识点

赛题理解和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:

    1. 修改变量类型以达到节约内存的目的
    2. 从训练集中划出一部分数据来调试代码
    3. 将需要用的临时数据作为pickle文件存储,方便导入导出
  • itemCF的原理:
    根据用户的点击日记生成相似矩阵,利用相似矩阵进行新文章的推荐 。

  • item的相似度计算:

    1. 考虑用户浏览的item数量
    2. 考虑item被浏览的数量
  • DataFrame及字典中的数据处理方法

    1. 分组后使用apply查询每组最值,assert的使用
    tmp = recall_df.groupby('user_id').apply(lambda x: x['rank'].max()) assert tmp.min() >= topk
    
    1. 数据框重构
    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)]
    
    1. 字典排序并取topk值
    item_rank = sorted(item_rank.items(), key=lambda x: x[1], reverse=True)[:recall_item_num]
    
  • 其他:
    天池实验室的notebook的使用

你可能感兴趣的:(算法,python,推荐系统,机器学习)