如何构建一个ABTest
谁会参与
- 业务部门。 定义一个Ab Testing.
- Ab Testing管理后台。 录入一个Ab Tesing.
- 业务开发者。 负责具体的方案开发实现。
- 用户。我们所关心的用户。
- 数据收集系统。收集我们关心的数据。
- 数据分析系统。根据收集到的数据,分析出我们所关心的指标。
愿世界和平!!!
RF,GBDT,XGBoost,lightGBM都属于集成学习(Ensemble Learning),集成学习的目的是通过结合多个基学习器的预测结果来改善基本学习器的泛化能力和鲁棒性。
根据基本学习器的生成方式,目前的集成学习方法大致分为两大类:即基本学习器之间存在强依赖关系、必须串行生成的序列化方法;以及基本学习器间不存在强依赖关系、可同时生成的并行化方法。前者的代表就是Boosting,后者的代表是Bagging和“随机森林”(Random Forest)。
本文主要从下面四个广泛讨论和使用的方法进行了对比分析总结:
RF(随机森林),GBDT(梯度提升决策树),XGBoost,lightGBM
原文来自大神级的论文XGBoost: A Scalable Tree Boosting System,论文很全面,框架介绍很完整,但是在某些tricks上面并没有对细节做详细解说,而需要读者亲自去进行一定的推导,这使得阅读起来稍显吃力,当然基础很雄厚的大牛级别的应该不以为然,但我相信还有很多与我一样入行不久的,那么这篇博客就是你的所需。
这里特别感谢作者meihao5
的博文,其分享的内容就是我一直想要整理但迟迟未进行的,它的原文可见最后面的参考文章链接里。
XGBoost的成功可以总结为回归(树回归+线性回归)+提升(boosting)+优化(5个方面)牛顿法、预排序、加权分位数、稀疏矩阵识别以及缓存识别等技术来大大提高了算法的性能。下面开始介绍一些入门必须的基础知识:
Learning to Rank是采用机器学习算法,通过训练模型来解决排序问题,在Information Retrieval,Natural Language Processing,Data Mining等领域有着很多应用。
如图 Fig.1 所示,在信息检索中,给定一个query,搜索引擎会召回一系列相关的Documents(通过term匹配,keyword匹配,或者semantic匹配的方法),然后便需要对这些召回的Documents进行排序,最后将Top N的Documents输出,一版可以认为是召回后的精排。而排序问题就是使用一个模型 f(q,d)来对该query下的documents进行排序,这个模型可以是人工设定一些参数的模型,也可以是用机器学习算法自动训练出来的模型。现在第二种方法越来越流行,尤其在Web Search领域,因为在Web Search 中,有很多信息可以用来确定query-doc pair的相关性,而另一方面,由于大量的搜索日志的存在,可以将用户的点击行为日志作为training data,使得通过机器学习自动得到排序模型成为可能。
需要注意的是,排序问题最关注的是各个Documents之间的相对顺序关系,而不是各个Documents的预测分最准确。
原始论文:DeepFM:A Factorization-Machine based Neural Network for CTR Prediction
对于推荐系统中的最大化CTR来说,学习那些用户行为背后的复杂而精确的特征交叉项是至关重要的。尽管有很大的提升,但是方法似乎在低阶或者高阶的交差项上带有很强的偏置项,又或者会要求专业性的特征工程。在这篇文章,我们会展示可以构造出一个端到端的学习模型,特别是对于低阶和高阶的交叉项的学习。DeepFM,提出的这个模型联合了因式分解机的推荐能力和一个新的神经网络结构在特征方面的深度学习能力。相比于Google提出的最新的Wide & Deep模型,DeepFM的“wide”和“deep”部分有一个共享输入层,并且除了最原始的特征不需要额外的特征工程。综合性的实验结果证明了DeepFM相比于其他的CTR模型在基础数据及和商业数据集上都有着更好的效果和效率。
R(recall)表示召回率、查全率,指查询返回结果中相关文档占所有相关文档的比例;P(precision)表示准确率、精度,指查询返回结果中相关文档占所有查询结果文档的比例。假设有如下的混淆矩阵:
—- | Predict P | Predict N |
---|---|---|
Target P | TP | FN |
Target N | FP | TN |
原始论文:LightGBM-A Highly Efficient Gradient Boosting Decision Tree
Gradient Boosting Decision Tree (GBDT)是一个非常流行的机器学习算法,却只有像XGBoost和pGBRT的一些实现。尽管许多工程上的优化方案已经在这些实现中应用了,但是当特征维度较高和数据量巨大的时候,仍然存在效率和可扩展性的问题。一个主要原因就是对于每一个特征的每一个分裂点,都需要遍历全部数据计算信息增益,这一过程非常耗时。针对这一问题,本文提出两种新方法:Gradient-based One-Side Sampling (GOSS) 和Exclusive Feature Bundling (EFB)(基于梯度的one-side采样和互斥的特征捆绑)。在GOSS中,我们排除了一部分重要的具有小梯度实例数据的比例,只用剩下的来估计信息增益。我们证明,这些梯度大的实例在计算信息增益中扮演重要角色,GOSS可以用更小的数据量对信息增益进行相当准确的估计。对于EFB,我们捆绑互斥的特征(例如,特征间很少同时非零的特征),来降低特征的个数。我们完美地证明了捆绑互斥特征是NP难的,但贪心算法能够实现相当好的逼近率,因此我们能够在不损害分割点准确率许多的情况下,有效减少特征的数量。(牺牲一点分割准确率降低特征数量),这一算法命名为LightGBM。我们在多个公共数据集实验证明,LightGBM加速了传统GBDT训练过程20倍以上,同时达到了几乎相同的精度。
博客的搭建和个性化可以参考我的其他文章Hexo搭建博客汇总。当你博客搭建完毕后,如果不能被人搜索得到,心里难免会有些失落。所以,接下来我们介绍 Google 和百度收录博客网站的方法。整体来说,Google 实在是太效率了,收录操作不仅简单且迅速,基本一个小时内就可以检索了。相比之下,百度搜索则鸡肋的很,不仅操作繁杂,而且及时操作成功了收录成功与否还去取决于网站质量以及其其他原因。
首先如何检测自己的博客能否被检索呢?
在百度或者Google的搜索框内输入以下内容:
1 | site:www.xiemingzhao.com |
将site:
后面的网址改为你自己的博客地址就行了,如果在搜索结果中能够展示自己博客的页面,那么就说已经被收录且可被搜索到。反之,则没有被收录。
原始论文:Wide & Deep Learning for Recommender Systems
不包含非线性特征变换的一般线性模型被广泛地应用在具有稀疏输入的大规模回归和分类问题中。通过一个宽的交叉积特征变换来实现对特征交叉的记忆是很有效和可解释的,而泛化能力需要更多的特征工程工作。考虑少用特征工程,深度神经网络可以更好地起到品泛化的作用,它会从稀疏的特征中学习到那些低维度看不见的密集嵌入。然而,具有嵌入的深度神经网络很容易过度泛化,并在用户-物品交互稀疏和稠密的时候会推荐一些不太相关的项物品。在本文中,我们提出广泛和深度学习——联合训练宽线性模型和深层神经网络——如此来结合记忆模型和泛化模型的好处从而构成更好的推荐系统。我们在Google Play上制作并评估了该系统,它是一个活跃的商业移动应用商店,上面超过10亿活跃用户和超过一百万个应用程序。在线实验结果表明相对于仅用wide模型和deep模型而言,Wide&Deep显着增加了app的获取。我们也在TensorFlow中开源了我们的实现。
关键词 Wide & Deep学习,推荐系统
原始论文:An overview of gradient descent optimization algorithms
虽然梯度下降优化算法越来越受欢迎,但通常作为黑盒优化器使用,因此很难对其优点和缺点的进行实际的解释。本文旨在让读者对不同的算法有直观的认识,以帮助读者使用这些算法。在本综述中,我们介绍梯度下降的不同变形形式,总结这些算法面临的挑战,介绍最常用的优化算法,回顾并行和分布式架构,以及调研用于优化梯度下降的其他的策略。
梯度下降法是最著名的优化算法之一,也是迄今优化神经网络时最常用的方法。同时,在每一个最新的深度学习库中都包含了各种优化的梯度下降法的实现(例如:参见lasagne,caffe和keras的文档)。然而,这些算法通常是作为黑盒优化器使用,因此,很难对其优点和缺点的进行实际的解释。