零基础入门推荐系统-新闻推荐-【多路召回】

零基础入门推荐系统-新闻推荐-天池大赛-阿里云天池Task03【多路召回】

导包
零基础入门推荐系统-新闻推荐-【多路召回】_第1张图片
若当用pip install faiss,出现下图所示:
请参照https://github.com/facebookresearch/faiss/blob/master/INSTALL.md来解决问题。
在这里插入图片描述
debug模式:从训练集中划出一部分数据来调试代码:
零基础入门推荐系统-新闻推荐-【多路召回】_第2张图片
注意:1.all_click.user_id.unique()中unique()函数具有去重作用,在这里作用是获取每一个user_id,去除相同user_id,只保留一个即可;
在这里插入图片描述

2.np.random.choice()用法。可以参观官方文档:https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.choice.html

numpy.random.choice(all_user_ids,size=sample_nums,replace=False

在这里插入图片描述

all_user_ids中,按照size的shape提取样本。
这里all_user_ids是array,则抽样元素,若是整数,则从np.arrange(a)中抽样(即[0,a))
replace参数的作用,是决定重复抽样还是不重复抽样。
replace=True(默认模式)时,则为可重复抽样
replace=False时,则为不重复抽样
3.
零基础入门推荐系统-新闻推荐-【多路召回】_第3张图片
isin()接受一个列表,判断该列中元素是否在列表中,上面代码实现了从原始train_click_log.csv数据集中获取随机抽样的数据。因为随机抽出10000,所以可以从下图查看:
在这里插入图片描述
4.drop_duplicates()函数用法
零基础入门推荐系统-新闻推荐-【多路召回】_第4张图片
DataFrame.drop_duplicates(subset=None,keep=‘first’,inplace=False)
参数说明:

参数 说明
subset 根据指定的列名进行去重,默认整个数据集
keep 可选{‘first’,'last’,False} ,默认first,即默认保留第一次出现的重复值,并删去其他重复的数据,False是指删去所有重复数据。
inplace 是否对数据集本身进行修改,默认False

#读取点击数据,这里分成线上和线下,如果是为了获取线上提交结果应该讲测试集中的点击数据合并到总的数据中
#如果是为了线下验证模型的有效性或者特征的有效性,可以只使用训练集
零基础入门推荐系统-新闻推荐-【多路召回】_第5张图片
#读取文章的基本属性
在这里插入图片描述
#读取文章的Embedding数据
零基础入门推荐系统-新闻推荐-【多路召回】_第6张图片
注意:1.np.ascontiguousarray()函数作用:返回一个连续的array,其内存是连续的。也就是将一个内存不连续存储的数组转换为内存连续存储的数组,使得运行速度更快。
零基础入门推荐系统-新闻推荐-【多路召回】_第7张图片

2.np.linalg.norm()用法
linalg = linear(线性)+ algebra(代数),norm则表示范数。
函数参数:

x_norm = np.linalg.norm(x,ord=None,axis=None,keepdims=False)
x 表示矩阵(也可以是一维)
ord:范数类型 ord:列和的最大值;ord=2:λE-ATA的绝对值=0,求特征值,然后求最大特征值得算术平方根;ord=∞:行和的最大值
axis:处理类型 axis=1表示按行向量处理,求多个行向量的范数;axis=0表示按列向量处理,求多个列向量的范数;axis=None表示矩阵范数
keepdims:是否保持矩阵的二维特性 True表示保持矩阵的二维特性,False相反

零基础入门推荐系统-新闻推荐-【多路召回】_第8张图片

3.dict()函数用于创建一个字典。返回一个字典。
4.zip()函数来可以把列表合并,并创建一个元组对列表。
5.pickle模块提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。
pickle.dump(obj,file[,protocol]):序列化对象,并将结果数据流写入到文件对象中。参数protocol是序列化模式,默认值为0,表示以文本的形式序列化。protocol的值还可以是1或2,表示以二进制的形式序列化。详见:https://blog.csdn.net/sxingming/article/details/52164249?utm_source=app
零基础入门推荐系统-新闻推荐-【多路召回】_第9张图片
工具函数
获取用户-文章-时间函数

这个在基于关联规则的用户协同过滤的时候会用到
零基础入门推荐系统-新闻推荐-【多路召回】_第10张图片

注意:
1.python pandas sort_values()方法使用,请参考:https://blog.csdn.net/weixin_45144170/article/details/106305532?utm_source=app
2. python pandas groupby()方法使用,请参考:
https://blog.csdn.net/qq_43283527/article/details/82899130?utm_source=app
3.python pandas reset_index()方法使用,可以参考:https://blog.csdn.net/jingyi130705008/article/details/78162758?utm_source=app
零基础入门推荐系统-新闻推荐-【多路召回】_第11张图片
获取文章-用户-时间函数
这个在基于关联规则的文章协同过滤的时候会用到
零基础入门推荐系统-新闻推荐-【多路召回】_第12张图片
零基础入门推荐系统-新闻推荐-【多路召回】_第13张图片
获取历史和最后一次点击
这个在评估召回结果,特征工程和制作标签转成监督学习测试集的时候会用到
零基础入门推荐系统-新闻推荐-【多路召回】_第14张图片

注意:
1.当tail()的参数为1时,此时实际上没有融合,直接是选择的要groupby的最后一行
获取文章属性特征
零基础入门推荐系统-新闻推荐-【多路召回】_第15张图片

获取用户历史点击的文章信息
零基础入门推荐系统-新闻推荐-【多路召回】_第16张图片
注意:
1.df.groupby(‘user_id’).agg(set)具体使用,可以参考:https://blog.csdn.net/qq_39321513/article/details/110395460?utm_source=app
2.pandas iloc()函数,可以参考:https://blog.csdn.net/rocking_struggling/article/details/105126692?utm_source=app
获取点击次数最多的Top-k个文章
在这里插入图片描述
注意:
1.value_counts用法参考:https://blog.csdn.net/weixin_30359021/article/details/98382926?utm_source=app
定义多路召回字典
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

召回效果评估
做完了召回有时候也需要对当前的召回方法或者参数进行调整以达到更好的召回效果,因为召回的结果决定了最终排序的上线,下面也会提供一个召回评估的方法
零基础入门推荐系统-新闻推荐-【多路召回】_第17张图片

由于时间原因,就暂时不写了,以上代码来自
https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12586969.1002.3.410521d8QgUzic&postId=144452可以到那里自己学习

你可能感兴趣的:(人工智能,python)