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)

看看最后训练集和测试集的精准度:

基于点击率预估的推荐相关推荐

  1. 推荐算法炼丹笔记:排序模型CTR点击率预估系列

    微信公众号:炼丹笔记 ​CTR点击率预估系列家谱 炼丹之前,先放一张CTR预估系列的家谱,让脉络更加清晰. (一)FiBiNET:结合特征重要性和双线性特征交互进行CTR预估 1.1 背景 本文发表在 ...

  2. 推荐算法炼丹笔记:CTR点击率预估系列入门手册

    ​CTR点击率预估系列家谱 炼丹之前,先放一张CTR预估系列的家谱,让脉络更加清晰. (一)FiBiNET:结合特征重要性和双线性特征交互进行CTR预估 1.1 背景 本文发表在RecSys 2019 ...

  3. 业余草推荐阿里妈妈自研广告点击率预估核心算法MLR

    业余草推荐阿里妈妈自研广告点击率预估核心算法MLR. 小编觉得CTR(广告点击率)预估的能力对于广告系统的意义和重要性,类似于在证券市场上预测股价的能力,优秀的CTR预测,通向美好和财富...(以下转 ...

  4. 大规模推荐引擎和广告点击率预估引擎中的TopK计算

    转自:https://chuansongme.com/n/2035198 推荐引擎的研究结果成千上万,绝大部分工作都来自于矩阵分解或者类似,在针对用户和Item分别训练出特征向量之后,根据向量内积计算 ...

  5. 推荐搜索炼丹笔记:SIM 用户行为序列点击率预估模型

    作者:十方,公众号:炼丹笔记 Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click- ...

  6. 阿里最新论文解读:考虑时空域影响的点击率预估模型DSTN

    作者 | 石晓文 转载自小小挖掘机(ID: wAIsjwj) [导语]:在本文中,阿里的算法人员同时考虑空间域信息和时间域信息,来进行广告的点击率预估. 什么是时空域?我们可以分解为空间域(spati ...

  7. 点击率预估模型汇总_CIKM20MiNet:阿里|跨域点击率预估混合兴趣模型

    " 本文介绍了阿里提出的一种利用跨域信息的CTR预估模型,基于UC头条的应用场景,将新闻feed流作为源域,广告作为目标域.跨域点击率预估的最大优势在于通过使用跨域数据,目标域中的数据稀疏和 ...

  8. 点击率预估的几个经典模型简介

     点击率预估的几个经典模型简介 2016-02-22 00:32 点击率预估是大数据技术应用的最经典问题之一,在计算广告,推荐系统,金融征信等等很多领域拥有广泛的应用.本文不打算对这个话题做个全面 ...

  9. 【论文解读】CIKM20-MiNet:阿里|跨域点击率预估混合兴趣模型

    " 本文介绍了阿里提出的一种利用跨域信息的CTR预估模型,基于UC头条的应用场景,将新闻feed流作为源域,广告作为目标域.跨域点击率预估的最大优势在于通过使用跨域数据,目标域中的数据稀疏和 ...

最新文章

  1. poj1274(二分图匹配)
  2. flutter制作具有自定义导航栏的渐进式 Web 应用程序
  3. visual studio 2008快捷键大全 收藏
  4. 读取xml文件基于xpath
  5. jquery插件图片浏览
  6. Android widget开发有感
  7. C语言动态规划——背包问题详解
  8. DUMP-CX_SY_OPEN_SQL_DB-DBSQL_DUPLICATE_KEY_ERROR
  9. 计算机学习路线及java图书参考
  10. 量子计算学习笔记:量子计算发展史
  11. facebook 登陆失败 分享失败 原因汇总
  12. vue项目- v-lazy懒加载 图片没有出来之前 loding的图标占位
  13. 【概率论基础进阶】随机事件和概率-古典概型与伯努利概型
  14. Lync / Skype for Business登录界面UI切换
  15. STM32 DSP库
  16. c语言设计一个学生成绩管理系统,用C语言设计的学生成绩管理系统1.doc
  17. 【学习OpenCV4】键盘鼠标操作总结
  18. python协程gevent案例 爬取斗鱼图片过程解析 - python
  19. 用Excel为人生铺路,走向希望的彼岸
  20. 辉仔日记之学代码第二十一期——单例模式

热门文章

  1. 知乎被爆大裁员,我的心情像是过山车
  2. 《软件工具》分享3款开源免费的Markdown编辑器
  3. 如何成为优秀的技术主管?你要做到这三点 1
  4. 英警方调查无人机侵扰机场事件 操作者或被判无期
  5. python饮料购买_python - 饮料机,if elif与列表法
  6. 用U盘安装Linux图解
  7. 如何把模糊的照片还原?
  8. 搭建GPU版PyTorch Docker镜像
  9. mac 使用origin绘制多个数据误差棒 (叠加图层的方法)
  10. discuz!论坛修复站帮网vip插件bug:VIP会员到期后,重新开通永久会员时,所属的用户组没有切换到永久会员分组