推荐系统模型-deep crossing

Deep Crossing模型在微软Bing搜索引擎的广告推荐中用于预测点击率,通过处理类别型、数值型和需要进一步处理的特征,实现端到端的训练。模型结构包含Embedding、Stacking、Residual Unit和Scoring层,使用log损失函数或softmax进行优化。特征交叉和组合是关键,避免使用复杂的组合特征,以适应稀疏和密集特征。
摘要由CSDN通过智能技术生成

Deep Crossing模型的应用场景是微软搜索引擎Bing中的搜索广告推荐场景。用户在搜索引擎中输入搜索词之后,搜索引擎除了会返回相关结果,还会返回与搜索词相关的广告。尽可能地增加搜索广告的点击率,准确地预测广告点击率,并以此作为广告排序的指标之一,是非常重要的工作,也是Deep Crossing模型的优化目标。

微软使用的特征如下表所示,这些特征可以分为三类:一类是可以被处理成one-hot或者multi-hot向量的类别型特征,包括用户搜索词(query)、广告关键词(keyword)、广告标题(title)、落地页(landing page)、匹配类型(match type);一类是数值型特征,微软称其为计数型特征,包括点击率、预估点击率(click prediction);一类是需要进一步处理的特征,包括广告计划(campaign)、曝光计划(impression)、点击样例(click)等。
特征的分类决定了接下来的处理方式:dense 或者sparse

类别型特征可以通过one-hot或multi-hot编码生成特征向量,数值型特征则可以直接拼接进特征向量中,在生成所有输入特征的向量表达后,Deep Crossing模型利用该特征向量进行CTR预估。深度学习网络的特点是可以根据需求灵活地对网络结构进行调整,从而达成从原始特征向量到最终的优化目标的端到端的训练目的。

特征包括个体特征(Individual Features)和组合特征(Combinatorial Features)。个体特征Xi可以通过向量进行表示,例如搜索词这样的文本特征,可以通过使用将字符串转换成3个字母的词来表示[3]。组合特征由个体特征组合而成,个体特征 [公式] ,[公式] ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个基于GroupLens的Book-Crossing数据集的Python书籍推荐系统的示例代码: ```python import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.metrics.pairwise import cosine_similarity # 加载数据集 ratings = pd.read_csv('BX-Book-Ratings.csv', delimiter=';', error_bad_lines=False, encoding="latin-1") books = pd.read_csv('BX-Books.csv', delimiter=';', error_bad_lines=False, encoding="latin-1") users = pd.read_csv('BX-Users.csv', delimiter=';', error_bad_lines=False, encoding="latin-1") # 过滤掉评分次数少于50次的书籍 book_ratings_count = pd.DataFrame(ratings.groupby('ISBN')['Book-Rating'].count()) book_ratings_count = book_ratings_count[book_ratings_count['Book-Rating'] >= 50] book_ratings_count.reset_index(inplace=True) # 合并数据集 ratings = pd.merge(ratings, book_ratings_count, on='ISBN', how='inner') ratings.drop('Book-Rating_y', axis=1, inplace=True) ratings.rename(columns={'Book-Rating_x': 'Book-Rating'}, inplace=True) # 过滤掉评分次数少于50次的用户 user_ratings_count = pd.DataFrame(ratings.groupby('User-ID')['Book-Rating'].count()) user_ratings_count = user_ratings_count[user_ratings_count['Book-Rating'] >= 50] user_ratings_count.reset_index(inplace=True) # 合并数据集 ratings = pd.merge(ratings, user_ratings_count, on='User-ID', how='inner') ratings.drop('Book-Rating_y', axis=1, inplace=True) ratings.rename(columns={'Book-Rating_x': 'Book-Rating'}, inplace=True) # 构建评分矩阵 ratings_matrix = ratings.pivot_table(index='User-ID', columns='ISBN', values='Book-Rating') # 填充缺失值 ratings_matrix.fillna(0, inplace=True) # 计算相似度矩阵 cosine_sim = cosine_similarity(ratings_matrix) # 定义函数:获取相似的书籍 def get_similar_books(book_title, cosine_sim=cosine_sim): idx = books[books['Book-Title'] == book_title].index[0] sim_scores = list(enumerate(cosine_sim[idx])) sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True) sim_scores = sim_scores[1:11] book_indices = [i[0] for i in sim_scores] return books['Book-Title'].iloc[book_indices] # 测试 book_title = 'The Da Vinci Code' print('对于书籍:', book_title, '的推荐如下:') print(get_similar_books(book_title)) ``` 这个示例代码使用了基于内容的推荐算法,通过计算书籍的相似度来进行推荐。具体实现,首先加载了Book-Crossing数据集,并过滤掉了评分次数过少的书籍和用户。然后,构建了评分矩阵,并计算了相似度矩阵。最后,定义了一个函数,通过输入书籍名称,返回相似度最高的10本书籍。 需要注意的是,这个示例代码只是一个基础的框架,实际使用时需要根据具体业务需求进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值