机器学习案例 特征组合——高帅富 冷启动——从微博等其他渠道搜集数据进行机器学习 用户年龄——线性分段处理

摘自:http://www.infoq.com/cn/articles/user-portrait-collaborative-filtering-for-recommend-systems

我们会从一个真实的案例出发,虽然我们做了很多的推荐系统的案例,但毕竟不能把客户的数据给大家看,所以我们用了一份公开的数据,这份数据和我们之前讲的场景是相似的。这份数据来自于 Kaggle,叫做 Criteo 点击率预估比赛。

数据预览

首先我们看数据的样子,第 1 列 col_1 代表的是广告有没有被点击,1 代表被点击,0 代表没有被点击。然后我们看第 2 列到第 14 列,都是数值型的特征,因为这份数据已经被匿名化了,所以我们可能也不知道这些数值代表什么意思,也许是这个用户的 PV,或者标签的权重,不过我们也不需要知道。然后看第 15 列到 40 多列,这些都是离散的特征,这些特征都做了哈希化,都做了匿名处理。

(点击放大图像)

这个数据有 3000 万行 40 多列,按照我们传统的做法,进行特征工程以及 one-hot 编码后,会有 4000 多万个特征。真实的业务数据中,训练数据体积会更大,往往达到上亿,同时原始特征数量会达到上百,因为为了好的个性化效果,我们会使用诸如 GPS 坐标、手机型号、ip 地址、最近浏览内容等等精细化的特征,并进行非常极致的特征工程,这样的模型在特征工程之后的特征数会达到数亿甚至几百亿。这样规模的机器学习训练,挑战的不仅是算法,更是如何在成本可承受的计算资源上进行训练和实时预估。

开发这样一个规模的可以并行运行的系统的挑战更加大,即使 BAT 这样的大公司也会养一个百人的团队,只为了做好机器学习模型训练和预估的工程实现。下面我们会看到利用第四范式的先知平台去做这件事情,会大大降低我们开发和运维一个在线机器学习系统的成本,让我们更加聚焦在业务本身。下面我们会看到在先知平台上对这份数据的建模会非常简单。

数据拆分

首先我们把这份数据拆成了训练集和测试集,以 9:1 的方式。当然这可能是不太合适的拆分方法,因为真正训练一个机器学习模型,它的拆分是按照时间排序后再拆的,就是用前面的时间来训练模型,然后用这个模型来预测点击。这样训练和测试在时间上是正交的,那么模型如果在这种实验设计下有好的效果,这个效果就会有时间平移性,上线后就会有好的效果。当然,为什么我们在这里没有使用按照时间排序拆分的方式,是因为参考了一篇论文的做法,这样同样的做法结果可比。在真实的业务中,不建议大家按照这种方式来处理数据。

特征工程、模型选择和评估

然后就是做特征工程了,一般来说大家可能觉得很难,但只需要告诉电脑哪个是 Label,其他的直接默认配置就好了。但天下没有免费的午餐,特征简单处理,我们要有更强的模型,所以我们用了线性分型分类器。

(点击放大图像)

一般来说,推荐系统中会有离散特征和连续特征,当我们用逻辑回归这种宽的离散线性模型的时候,我就会遇到一个很大的问题,就是我需要对特征进行分段,这样才能学到连续特征的非线性结构。比如说用户年龄对点击率的影响,它并不是线性上升的,它可能会上升到 30 岁,然后就下降了,甚至有更复杂的模式,这些是非线性的特性。所以我们可以用机器对连续的特征做自动搜索分段,这样的预处理效率就大大提高了。线性分形分类器就是做的这样的事情,基本上我花了不到 5 分钟,就跑出了 0.796 的 AUC。

当然这里进一步说一下,评估上线的时候,不能只是看 AUC。例如说,我要看的是 User AUC,或者每一刷的 AUC,因为模型的排序能力,一部分来自于对每个用户个性化的识别能力,另一部分来自于对用户本身的识别能力。比如说有些用户就是什么都爱点,什么都点,而有些用户基本只看标题不点开。我们把这样的人分开,对个性化推荐是有帮助的。所以我最终应该看的是,在每一个用户身上的 AUC,甚至是每一次展现的 AUC,当然先知也提供了工具,就不多赘述了。特征组合

但我还是想让这个模型更好,怎么办呢?在做推荐系统的时候,特征工程最重要的处理方法是特征组合。比如说有两个特征,一个是性别,另一个是新闻的色情等级。我们可能会注意到,男同志比较喜欢火爆的新闻,女同志可能正好相反。我把色情等级作为一个特征,可能两边的喜好不同导致最终这个特征整体对点击率的影响和一个随机数一样,它就不是好的特征,没有预测能力。

但如果我把这些特征组合起来,我就对这些空间有更细致的分割能力,我就会做出很好的效果。性别、用户 ID 和新闻色情等级组合起来,是新闻推荐非常有用的特征。进一步说,假如我们有 100 个特征,那么特征两两组合的空间,就是 一万个,这是个很大的工作量。

。。。

Q2: 推荐系统,都有哪些方案解决冷启动问题,百万级用户的推荐系统,一般用什么样的框架

周开拓: 推荐系统冷启动是个很大的话题,可能这里只能给大家一些简单的例子。冷启动分为用户的冷启动和整个推荐系统的冷启动,整个推荐系统的冷启动就是在搭建推荐系统之前,我能否已经收集了一些用户行为的数据,如果有的话,可以构造一些弱一点的模型,比如说用 CF、SVD、热度这样的方法对内容做一些初步的排序和筛选,同时配合一些简单的基于 query 的策略,比如最新、最热、最多评价等等先构造一个差一点但是比随机强很多的推荐列表。如果数据基础更好,也可以用其他场景的数据来构造 label、样本来进行建模。而用户的冷启动,归根结底就是在用户进入产品之后,尽快有效地获取他的信息,一方面可以通过产品的手段来实现,一方面可以通过第三方数据合作的方式来实现,比如说这个人如果是微博注册的话,如果你能够收集到一些公开的微博数据,就会对冷启动很有帮助。关于架构的话,刚才已经介绍很多了,您可以参考。

Q6: 特征组合的方式是什么?怎么拼接在一起?

周开拓: 特征组合其实很简单,比如一个特征叫做身高,分高矮,一个特征区分穷富,还有一个特征叫做帅和不帅。那么高富帅就是一个组合特征,他对人的描述能力就强于之前任何一个单独的特征。

时间: 2024-12-29 15:01:50

机器学习案例 特征组合——高帅富 冷启动——从微博等其他渠道搜集数据进行机器学习 用户年龄——线性分段处理的相关文章

特征组合--组合独热矢量

到目前为止,我们已经重点介绍了如何对两个单独的浮点特征进行特征组合.在实践中,机器学习模型很少会组合连续特征.不过,机器学习模型却经常组合独热特征矢量,将独热特征矢量的特征组合视为逻辑连接.例如,假设我们具有以下两个特征:国家/地区和语言.对每个特征进行独热编码会生成具有二元特征的矢量,这些二元特征可解读为 country=USA, country=France 或 language=English, language=Spanish.然后,如果您对这些独热编码进行特征组合,则会得到可解读为逻辑

机器学习中特征的处理及选择

基础概念 特征工程是通过对原始数据的处理和加工,将原始数据属性通过处理转换为数据特征的过程,属性是数据本身具有的维度,特征是数据中所呈现出来的某一种重要的特性,通常是通过属性的计算,组合或转换得到的.比如主成分分析就是将大量的数据属性转换为少数几个特征的过程.某种程度而言,好的数据以及特征往往是一个性能优秀模型的基础. 既然叫特征工程,自然涵盖了很多内容,而其中涉及到的比较重要的部分是特征的处理及选择. 特征处理包含: 数据清洗 数据规范化 特征构造与衍生 特征选择包含: 特征过滤 wrappe

【ACM Chp2】一致预期收益率:资本资产定价模型 之 特征组合(因子模拟组合)

一.关于特征组合(Characteristic Portfolio) (一)特征组合与因子投资 近年来,人们更多地关注于如何配置因子或者发现一个新因子,但作为因子投资基础的因子组合构建方法受到的关注却要少很多.CP又名纯因子组合,在较新的学术研究中一般也称作factor mimicking portfolio(因子模拟组合),或纯因子组合.它表示一个对某个因子暴露为1而对其他因子暴露为0的投资组合. 通过构建某个因子的CP,我们可以将CP的收益作为factor risk premium,也可以用

机器学习:特征工程

特征选择直接影响模型灵活性.性能及是否简洁. 好特征的灵活性在于它允许你选择不复杂的模型,同时运行速度也更快,也更容易理解和维护. 特征选择 四个过程:产生过程,评价函数,停止准则,验证过程. 目的:过滤特征集合中不重要特征,挑选一组最具统计意义的特征子集,从而达到降维的效果. 选择标准:特征项和类别项之间的相关性(特征重要性). - - -搜索特征子空间的产生过程- - - 搜索的算法分为完全搜索(Complete),启发式搜索(Heuristic), 随机搜索(Random) 3大类. 完全

基于Python数据分析与机器学习案例实战教程

课程--基于Python数据分析与机器学习案例实战教程 分享网盘下载--https://pan.baidu.com/s/1jHSaRAY 密码: xk37 课程背景基于数据分析与机器学习领域,使用python作为课程的实战语言,随着大数据与人工智能领域日益火爆,数据分析和机器学习建模成了当下最热门的技术,课程旨在帮助同学们快速掌握python数据分析包以及经典机器学习算法并通过对真实数据集分析进行实战演示. 课程风格通俗易懂,基于真实数据集案例实战. 主体课程分成三个大模块 (1)python数

FM在特征组合中的应用

原文来自:博客园(华夏35度)http://www.cnblogs.com/zhangchaoyang 作者:Orisun 特征组合   x1年龄 x2北京 x3上海 x4深圳 x5男 x6女 用户1 23 1 0 0 1 0 用户2 31 0 0 1 0 1 如上例特征X有6个维度,年龄是连续值,城市和性别用one-hot表示,假设我们用最简单的线性拟合来预测y值. $\hat{y}=w_0+\sum_{i=1}^n{w_ix_i}$ 实际中“北京的男性用户”.“上海的女性用户”这种组合特征可

文本数据的机器学习自动分类方法(转)

http://blog.csdn.net/jdbc/article/details/50586042 本文为第一部分,着重介绍文本预处理以及特征抽取的方法. 随着互联网技术的迅速发展与普及,如何对浩如烟海的数据进行分类.组织和管理,已经成为一个具有重要用途的研究课题.而在这些数据中,文本数据又是数量最大的一类."文本分类是指在给定分类体系下,根据文本内容自动确定文本类别的过程"(达观数据科技联合创始人,张健).文本分类有着广泛的应用场景,例如: 新闻网站包含大量报道文章,基于文章内容,

地铁译:Spark for python developers ---Spark与数据的机器学习

机器学习可以从数据中得到有用的见解. 目标是纵观Spark MLlib,采用合适的算法从数据集中生成见解.对于 Twitter的数据集, 采用非监督集群算法来区分与Apache?Spark相关的tweets . 初始输入是混合在一起的tweets. 首先提取相关特性, 然后在数据集中使用机器学习算法 , 最后评估结果和性能. ?本章重点如下: ???了解 Spark MLlib 模块及其算法,还有典型的机器学习流程 . ???? 预处理 所采集的Twitter 数据集提取相关特性, 应用非监督集

解释机器学习模型的一些方法(二)——在受监管的行业使用机器学习

对于在受监管行业中工作的分析师和数据科学家来说,尽管机器学习可能会带来『能极大提高预测精度』这一好处,然而它可能不足以弥补内部文档需求以及外部监管责任所带来的成本.对于实践者而言,传统线性模型技术可能是预测模型中的唯一选择.然而,创新和竞争的驱动力并不因为你在一个受监管的模式下工作就会止息.在银行,保险以及类似受监管垂直领域里,数据科学家和分析师正面对着这样一个独一无二的难题:他们必须要找到使预测越来越精准的方案,但前提是,保证这些模型和建模过程仍然还是透明.可解释的. 在这一节中所展现的技巧,