基于点击率预估的推荐
1.传统算法不能真正应用到生产系统
2.推荐场景数据是海量的,数据是稀疏的,要求是实时性是秒级
3.推荐系统的核心是“数据召回”和“模型排序”
4.GBDT和LR融合是点击率预估模型的核心算法,也被应用到推荐中5.GBDT+LR的核心是将GBDT每棵树的决策路径直接作为LR的输入特征使用
推荐算法我们基本入门了,我们已经更新了传统的推荐算法:
推荐算法起步:协同过滤
用python实现【UserCF】算法
用python实现【ItemCF】算法
推荐算法的核心是“数据召回”和“模型排序”,它可以细分为四个步骤:
相似召回:可以通过协同过滤算法召回部分商品
标签召回:可以将标签作为媒介召回商品
关联规则:通过Apriori算法等挖掘频繁集合
热门数据:可以通过上下文分析(地域和热度分析等)召回部分商品
通常情况,召回的物品通过数据分析和算法处理,给用户推荐真正感兴趣的商品。点击率预估(CTR)首先被运用到广告推荐上,它计算用户点击广告的可能性;而在推荐系统中,推荐商品也被预测用户的兴趣度。而点击率预估最经典的算法是梯度提升树(GBDT)和逻辑回归(LR)的融合。这个算法的核心是将GBDT每棵树的路径直接作为LR的输入特征使用。也就是GBDT的输出结果作为新数据集训练LR模型,最终得到预测的概率值。
关于GBDT和LR算法的具体细节,以及GBDT如何生成新特征的,小编在机器学习篇已经花费了很长的功夫介绍,这里不再赘述。本文我们就介绍这个算法案例运用。
传送门:
决策树之原理与调参
决策树sklearn包细节讲解
集成学习(三)
集成学习(四)
集成学习(五)
集成学习(六)
从【为什么要用sigmoid函数】到真的懂【逻辑回归】
GBDT+LR
案例是Kaggle比赛的电信客户流失数据(Telco Customer Churn),首先,导入数据集,查看基本数据规模:
data = pd.read_csv(r'Telco_Customer_Churn.csv')
data.info()
data.shape
1.数据集一共21个维度,7043个样本,其中,customerID是客户id,最后一列Churn为标签:Yes表示流失,No表示非流失
2.其他19列是用户相关特征,其中,有4个是数值型特征,15个是离散型特征
接着,简单分析一下维度变量:
然后,做一些数据处理,主要有:
数值型不进行转换
TotalCharges有少许缺失,用0填充
离散型特征映射为0,1,2...
代码如下:
data['TotalCharges'] = data['TotalCharges'].fillna(0)
#标签编码
for f in discrete_feature.columns:data[f] = pd.factorize(data[f])[0]
进行数据集划分:
from sklearn.model_selection import train_test_splitX = data.drop(['customerID','Churn'],axis=1)
y = data['Churn'].replace({'No':0,'Yes':1})X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=0)
模型训练走起,先导入相关sklearn包:
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_scoreimport os
import pydotplus
from sklearn import tree
from IPython.display import Image #把graphviz安装包添加到环境变量中,GraphViz安装包下载地址https://graphviz.gitlab.io/_pages/Download/Download_windows.html
os.environ["PATH"] += os.pathsep + r'F:\决策树可视化\graphviz-2.38\release\bin'
这里只为了展示GBDT构造新特征以及与LR的融合,就不进行参数调节。为了方便展示,GBDT评估器设置为2,最大深度也为2.
f_name = [i for i in X.columns]
gbdt = GradientBoostingClassifier(n_estimators=2,max_depth=2)
gbdt.fit(X_train,y_train)
查看训练出的两颗评估器:
clf = gbdt.estimators_[0][0] #第一棵树,第二改索引即可
dot_data = tree.export_graphviz(clf, out_file=None,feature_names=f_name,filled=True, rounded=True,special_characters=True,proportion=False,rotate=False,precision=2)graph = pydotplus.graph_from_dot_data(dot_data)
Image(graph.create_png())
可见,两颗子树的叶子结点索引均是2,3,5,6.查看每个样本落入每棵树的叶子节点:
new_feature = pd.DataFrame(gbdt.apply(X_train).reshape(-1,2),columns=['tree1','tree2'])
new_feature.head()
开始构造新特征,进行独热编码转换:
new_feature = pd.get_dummies(new_feature,prefix='clf',columns=new_feature.columns) #独热编码
new_feature.head()
这个就是GBDT构造的新特征。
然后加入跟原数据集训练LR模型:
X_train = pd.concat([X_train.reset_index(drop=True),new_feature],axis=1)model = LogisticRegression(solver='liblinear')
model.fit(X_train,y_train)
看看最后训练集和测试集的精准度:
基于点击率预估的推荐相关推荐
- 推荐算法炼丹笔记:排序模型CTR点击率预估系列
微信公众号:炼丹笔记 CTR点击率预估系列家谱 炼丹之前,先放一张CTR预估系列的家谱,让脉络更加清晰. (一)FiBiNET:结合特征重要性和双线性特征交互进行CTR预估 1.1 背景 本文发表在 ...
- 推荐算法炼丹笔记:CTR点击率预估系列入门手册
CTR点击率预估系列家谱 炼丹之前,先放一张CTR预估系列的家谱,让脉络更加清晰. (一)FiBiNET:结合特征重要性和双线性特征交互进行CTR预估 1.1 背景 本文发表在RecSys 2019 ...
- 业余草推荐阿里妈妈自研广告点击率预估核心算法MLR
业余草推荐阿里妈妈自研广告点击率预估核心算法MLR. 小编觉得CTR(广告点击率)预估的能力对于广告系统的意义和重要性,类似于在证券市场上预测股价的能力,优秀的CTR预测,通向美好和财富...(以下转 ...
- 大规模推荐引擎和广告点击率预估引擎中的TopK计算
转自:https://chuansongme.com/n/2035198 推荐引擎的研究结果成千上万,绝大部分工作都来自于矩阵分解或者类似,在针对用户和Item分别训练出特征向量之后,根据向量内积计算 ...
- 推荐搜索炼丹笔记:SIM 用户行为序列点击率预估模型
作者:十方,公众号:炼丹笔记 Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click- ...
- 阿里最新论文解读:考虑时空域影响的点击率预估模型DSTN
作者 | 石晓文 转载自小小挖掘机(ID: wAIsjwj) [导语]:在本文中,阿里的算法人员同时考虑空间域信息和时间域信息,来进行广告的点击率预估. 什么是时空域?我们可以分解为空间域(spati ...
- 点击率预估模型汇总_CIKM20MiNet:阿里|跨域点击率预估混合兴趣模型
" 本文介绍了阿里提出的一种利用跨域信息的CTR预估模型,基于UC头条的应用场景,将新闻feed流作为源域,广告作为目标域.跨域点击率预估的最大优势在于通过使用跨域数据,目标域中的数据稀疏和 ...
- 点击率预估的几个经典模型简介
点击率预估的几个经典模型简介 2016-02-22 00:32 点击率预估是大数据技术应用的最经典问题之一,在计算广告,推荐系统,金融征信等等很多领域拥有广泛的应用.本文不打算对这个话题做个全面 ...
- 【论文解读】CIKM20-MiNet:阿里|跨域点击率预估混合兴趣模型
" 本文介绍了阿里提出的一种利用跨域信息的CTR预估模型,基于UC头条的应用场景,将新闻feed流作为源域,广告作为目标域.跨域点击率预估的最大优势在于通过使用跨域数据,目标域中的数据稀疏和 ...
最新文章
- poj1274(二分图匹配)
- flutter制作具有自定义导航栏的渐进式 Web 应用程序
- visual studio 2008快捷键大全 收藏
- 读取xml文件基于xpath
- jquery插件图片浏览
- Android widget开发有感
- C语言动态规划——背包问题详解
- DUMP-CX_SY_OPEN_SQL_DB-DBSQL_DUPLICATE_KEY_ERROR
- 计算机学习路线及java图书参考
- 量子计算学习笔记:量子计算发展史
- facebook 登陆失败 分享失败 原因汇总
- vue项目- v-lazy懒加载 图片没有出来之前 loding的图标占位
- 【概率论基础进阶】随机事件和概率-古典概型与伯努利概型
- Lync / Skype for Business登录界面UI切换
- STM32 DSP库
- c语言设计一个学生成绩管理系统,用C语言设计的学生成绩管理系统1.doc
- 【学习OpenCV4】键盘鼠标操作总结
- python协程gevent案例 爬取斗鱼图片过程解析 - python
- 用Excel为人生铺路,走向希望的彼岸
- 辉仔日记之学代码第二十一期——单例模式