分享

从人工特征到特征学习

 天道酬勤YXJ1 2016-09-03

随着技术的发展,机器学习技术在大数据场景下的应用得到了越来越多的认可。机器学习技术通过对大数据下的用户行为进行分析建模,为每个用户提供精准、个性化的服务,可以极大的提高用户的满意度。

在大数据建模技术上,GEO集奥聚合经历了从逻辑回归到深度学习的转变。逻辑回归是一个简单的广义线性模型,模型和算法相对简单,在应用初期取得了较好的效果。但随着GEO集奥聚合业务的发展,数据类别、数据规模和业务场景在不断扩张,逻辑回归模型的缺点逐渐显现出来,其中一个主要问题就是逻辑回归模型在特征工程方面的工作量相当巨大。

特征工程在机器学习中占有相当重要的地位。坊间常说:“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已”。特征工程的本质是个表示问题。机器学习算法的目标是从训练数据中学习出模型,而特征工程就是要寻找训练数据的最佳表示,使学到的模型更灵活、更简单、更准确,好的特征一般能很好地描述数据的内部结构。

特征工程包含特征构造和特征选择两个部分。特征构造是指自动或手动地从原始数据出发构造新的特征的过程。虽然可以通过自动特征提取的方法计算出一些原始特征,但更多更好的特征通常要借助专家的领域知识、对训练数据的深入分析和启发性思考,抽取或者组合各种原始特征才能得到,需要大量的人力与计算资源。特征选择是指从众多特征中挑选出少许有用特征的过程。特征选择本质是一个组合优化问题,大致可以分为过滤器方法、包裹器方法和嵌入式方法三类,可以在不同阶段和维度上起到降低特征数量的作用。

在业务早期,GEO集奥聚合聚焦于几个行业发力,主要针对每个细分行业建立专门的模型,通过专家知识以及统计分析构建模型特征。但随着业务的飞速发展,GEO集奥聚合每日可触达7亿+用户在数百个行业的行为数据,并在十多个行业开展业务,人工特征的方法越来越难以满足需求,主要原因如下:

1) 业务飞速发展,涉及的行业更多且更加深入,细化的特征、不断接入的数据源,使得特征分析、特征组合以及特征选择的耗时越来越久,无法及时满足业务需求。

2) 单一行业特征的效果逐渐接近上界,而行业外的组合数据不断展现出其价值潜力,组合爆炸使得特征工程更加艰难。以房产为例,如果只对有房产访问行为的人投放广告,每月的活跃人群是有限的,增长空间也是有限的;而结合我们对于多行业数据的综合挖掘,可对在网上没有房产相关行为的人投放广告,也会拿到不错的转化数据,极大地扩大了覆盖范围,也能帮助客户更早地建立自己的品牌与价值。

特征构造成本高,特征选择开销大,随着业务的发展,特征工程的巨大工作量对效果提升的制约已经相当明显。在比较了业界方案后,我们转向深度学习寻找答案。

深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。每个中间层的输出可以看作是原始输入数据的一种表示,每层利用上一层中产生的表示作为输入,生成新的表示作为输出,提供给下一层。输入的底层是原始数据,深度学习通过组合低层特征形成更加抽象的高层特征,以发现数据的分布式特征表示。深度学习通过更多地让模型自动完成特征构造和特征选择的工作,可以节约特征工程中的巨大投入。因此我们开发了基于GEO集奥聚合数据的稀疏自编码深度模型。

自编码器使用无监督的学习算法,主要利用反向传播算法,让目标值(约)等于输入值,相当于学到了输入数据的另一种表示;通过加入L1正则约束,可以使得学习到的节点大部分为0,只有少部分不为0,即稀疏自编码器;多个稀疏自编码器级联,则构成稀疏自编码深度模型。如下图所示:

从人工特征到特征学习

稀疏自编码器(输出与输入一致)

从人工特征到特征学习

稀疏自编码器网络

在SPARK集群上使用GEO集奥聚合全行业数据进行特征学习,输入数据为初筛后的用户在各行业的行为数据,使用逐层贪婪算法来训练该网络。即先利用原始输入来训练网络的第一层;计算得到第一层参数后,将第一层输出作为第二层的输入继续训练得到第二层的参数;对后面的各层采用同样的策略依次训练,注意在训练某层参数时,其余层各参数保持不变;在计算完所有层的结果后,再通过反向传播算法同时调整所有层的参数来改进该稀疏自编码网络。

该稀疏自编码模型训练完后的输出作为GEO集奥聚合其他模型的输入特征,用来描述大数据之间的高维非线性联系。在相同训练和测试集上,通过和未使用稀疏自编码的深度学习模型相比,auc由0.78提升到0.81;新数据源加入以及新行业拓展时需要的准备时间也减低为原来的1/3。

由于用于特征学习的深度学习模型的训练对延迟要求不高,目前稀疏自编码深度模型主要以离线批处理为主,模型的规模和复杂度基本不受限制,可以有较大的调整空间。而对于之前人工特征做的比较深入的行业,已有的人工特征亦会作为输入特征,一起为模型效果的提升做出贡献。

参考文献

[1] Jason Brownlee, Discover Feature Engineering, How to Engineer Features and How to Get Good at It, http:///discover-feature-engineering-how-to-engineer-features-and-how-to-get-good-at-it/

[2] Autoencoders and Sparsity, http://deeplearning./wiki/index.php/Autoencoders_and_Sparsity

[2] Feature learning, https://en./wiki/Feature_learning

也许你还想看

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多