1.熟练掌握爬虫相关知识,爬取网页相关知识;
2.熟练使用pandas, numpy进行数据分析相关工作;
3.熟练使用机器学习算法:线性回归,逻辑回归,kmeans,svm, 随机森林等进行分类,预测;
4.熟练使用tensorflow2搭建深度学习网络进行回归,分类,预测;
5.熟练使用tensorflow2搭建deep&fm等深度学习模型进行CTR预估;
6.熟练使用基于阿里EGES的graph embedding 方法召回
项目名称:新闻文章推荐系统
项目描述:对平台用户的点击日志(用户id, 点击文章id, 点击时间戳, 点击环境, 点击设备组, 点击地区, 文章类型id, 文章字数, 文章创建时间戳等信息)进行收集,再等所有用户的日志进行数据预处理,特征工程,相似度计算,模型排序,模型融合,召回出每个用户最可能点击的5篇文章
责任描述:
⚫使用 pandas 读取平台用户点击的所有新闻文章;
⚫使用hanzi.sentence对每一篇新闻文章进行分句
⚫使用 jieba.posseg.cut()对文章进行中文切词和词性标注,然后用stopwords和停用词性表['m','x','uj','ul','mq','u','v','f']对分词进行过滤
⚫使用Counter()及most_common()对所有新闻文章进行词频统计并排序,舍弃掉词频小于5的分词
⚫将所有分词组成的语料库喂入Word2Vec模型进行训练
⚫使用model.wv.get_vector()对文章进行word embedding处理
⚫使用协同过滤及关联规则计算item2item的相似性矩阵,也就是在计算相似性矩阵的时候将用户点击的时间权重,用户点击的顺序权重,文章创建的时间权重考虑进行
⚫使用协同过滤及关联规则计算user2user的相似性矩阵,也就是在计算相似性矩阵的时候将用户活跃度考虑进来;用户的活跃度通过点击数来衡量
⚫对新闻embedding矩阵进行行范数归一化,通过faiss.IndexFlatIP及add,search检索出每篇文章相似性最大的topk篇新闻及对应的score
⚫使用youtubednn及faiss.IndexFlatIP及add,search检索出每个用户相似性最大的topk个用户及对应的score
⚫定义一个多路召回的字典,将各路召回的结果都保存在这个字典当中;
⚫itemcf_sim_itemcf_recall:根据i2i_sim,通过每个用户浏览的历史新闻,找到每一篇历史新闻对应的相似度最高的topk篇新闻及score,不足的用热门新闻补全,将最终的召回新闻列表按照score进行排序;
⚫embedding_sim_item_recall:原理同上;
⚫youtubednn_recall:原理同上
⚫youtubednn_usercf_recall:通过youtubednn及faiss得到user2user相似性矩阵,根据score排序选出每个用户对应相似性最高的topk个用户,再通过user-item-time字典将相似性用户看过的新闻推荐给此用户,不足的用热门新闻补全,将最终的召回新闻列表按照score进行排序;
⚫cold_start_recall:冷启动召回,首先我们通过item2item相似性矩阵召回很多篇新闻,然后再对每个用户的历史新闻的如下指标进行统计,新闻主题类型,新闻平均字数,最后一天的新闻id,最后一篇新闻的创建时间,要满足如下条件方可召回:召回新闻类型在历史新闻类型里;召回新闻字数与历史新闻平均字数相差在200以内;召回新闻不在历史浏览的最后一天的新闻里;召回新闻的创建时间与历史最后一次点击新闻的创建时间在90天内
⚫多路召回合并,在做召回评估的时候就会发现有些召回的效果不错有些召回的效果很差,所以对每一路召回的结果,我们可以认为的定义一些权重,来做最终的相似度融合,对每一个召回类型,按照用户对score进行最大最小归一化,方便同一用户同一文章的score相加,最后控制召回数量,取最终的topk个;
⚫排序模型:
⚫用pad_sequences进行序列填充;
⚫用SparseFeat,DenseFeat,VarLenSparseFeat构造用户特征项迭代器和用户项迭代器;
⚫用MinMaxScaler对数据进行归一化;
⚫用lgb.LGBMRanker对训练集进行fit;
⚫用lgb_ranker对测试集进行predict,得到pred_score;
⚫用rank函数根据pred_score进行排序;
⚫将训练集均分为5份,训练5次,每次取其中4份作为训练集,剩余一份作为测试集,得到5个模型,用这五个模型,分别预测测试集,将5次预测得分求平均值,即为测试集的最终得分;
⚫同理,lgb.LGBMClassifier, DIN分类模型和上面的LGB排序模型的操作方法类似;
⚫模型融合:
⚫将以上三种模型训练出来的得分按照user_id和click_article_id进行groupby,然后对每组的pred_score进行求和;按照user_id对结果模型融合后的数据进行groupby,用rank函数对pred_score进行排序(降序);
⚫按照pre
根据用户点击日志结合用户基本特征以及商品特征,先进行特征处理,特征工程,特征编码等操作,使用GBDT对特征进行训练后。作为逻辑回归的输入,喂入模型进行fit,通过模型指标loss, auc等判断模型性能。最后通过GirdSearchCV进行调参,选择使模型效果最好的一组参数作为最
1.基于user,基于item分别求出对应的相似性矩阵; 2.用Grapg Embedding之阿里EGES方法将用户及商品特征信息转为向量; 3.基于相似性矩阵及embedding进行召回,得到每个用户对应的召回商品列表; 4.使用LGB,DIN,Deep&FM模
1.基于user,基于item分别求出对应的相似性矩阵; 2.用Grapg Embedding之阿里EGES方法将用户及商品特征信息转为向量; 3.基于相似性矩阵及embedding进行召回,得到每个用户对应的召回商品列表; 4.使用LGB,DIN,Deep&FM模